Fără Descriere

xdw e900e800b4 linux server prompt user for presentation 1 săptămână în urmă
ppt_client e900e800b4 linux server prompt user for presentation 1 săptămână în urmă
server e900e800b4 linux server prompt user for presentation 1 săptămână în urmă
.gitignore 9e7317e6c7 first commit 1 săptămână în urmă
README.md e900e800b4 linux server prompt user for presentation 1 săptămână în urmă

README.md

PPT Remote

Control PowerPoint or LibreOffice Impress from your phone over Wi-Fi.

Server (Windows PC)

Requirements: Bun installed, PowerPoint open with a presentation.

cd server
bun install
bun start

The server listens on port 8765. Find your PC's local IP with ipconfig.

Server (Linux)

Requirements: Bun, LibreOffice, python3 (with uno module — ships with LibreOffice), xdotool.

sudo apt install xdotool  # or equivalent for your distro

Start LibreOffice Impress with the UNO socket listener enabled:

libreoffice --impress --accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager" your-presentation.pptx

Then start the server:

cd server
bun install
bun start

Find your machine's local IP with ip addr or hostname -I.

Client (Android)

Requirements: Flutter SDK.

cd ppt_client
flutter pub get
flutter run

Enter your PC's local IP and port 8765, then tap Connect.

To build a release APK:

flutter build apk --release
# output: build/app/outputs/flutter-apk/app-release.apk

Client (iOS)

Requirements: macOS with Xcode 14+, Flutter SDK, an Apple Developer account (free account works for direct device install via USB).

1. Install dependencies

cd ppt_client
flutter pub get

2. Open the iOS project in Xcode to set up signing

open ios/Runner.xcworkspace

In Xcode:

  • Select the Runner target → Signing & Capabilities
  • Set your Team (Apple ID)
  • Change the Bundle Identifier to something unique, e.g. com.yourname.pptremote

3. Allow plain WebSocket (ws://) traffic

iOS also blocks cleartext HTTP/WS by default. Add an exception in ios/Runner/Info.plist:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

4. Run on a connected iPhone/iPad

flutter run

Or build an IPA for distribution:

flutter build ipa
# output: build/ios/ipa/ppt_remote.ipa

To install the IPA without the App Store, use AltStore or Apple Configurator 2, or just use flutter run --release with the device connected via USB.

Note: A paid Apple Developer account ($99/year) is required to distribute via TestFlight or the App Store. A free account lets you sideload directly to your own device for 7 days at a time.

How it works

  • Server auto-detects the platform (process.platform) and picks the right driver.
  • Windows: PowerShell COM automation via GetActiveObject('PowerPoint.Application').
  • Linux: navigation via xdotool key events, slide state and image export via Python UNO connected to LibreOffice's socket listener on port 2002.
  • After each navigation, the current slide is exported as an image and sent as base64 to all connected clients.

Notes

  • PowerPoint must already be open on the PC before connecting.
  • The slideshow must be running (or use "Start Show") for next/prev to work.
  • Both devices must be on the same Wi-Fi network.
  • Windows Firewall may need to allow port 8765.