A wireless presentation control system consisting of a mobile app (Flutter/Dart) that connects to a desktop Python application via WiFi to remotely control PowerPoint presentations, Google Slides, and videos.
- Wireless Control: Control presentations remotely via WiFi connection
- PowerPoint Support: Navigate through PowerPoint presentations seamlessly
- Google Slides Integration: Control Google Slides presentations
- Video Control: Play, pause, and navigate through videos
- IP-Based Connection: Connect using local network IP address
- Real-time Communication: Instant response between mobile and desktop
- Cross-Platform Mobile: Flutter app works on both iOS and Android
- Python Desktop Server: Lightweight Python application for PC control
๐ฑ Mobile App (Flutter/Dart) โโ WiFi Network โโ ๐ฅ๏ธ Desktop App (Python)
Client Server
The system consists of two components:
- Mobile App: Flutter-based remote control interface
- Desktop App: Python application that receives commands and controls presentations
- Framework: Flutter
- Language: Dart
- Platform: iOS & Android
- Networking: HTTP/WebSocket for WiFi communication
- Language: Python
- Presentation Control: PyAutoGUI, python-pptx
- Network Server: Socket programming or HTTP server
- OS Integration: Windows/macOS/Linux compatible
- Flutter SDK (latest stable version)
- Dart SDK (comes with Flutter)
- Android Studio or Xcode for development
- Python 3.7 or higher
- Required Python packages (see requirements.txt)
- PowerPoint or Google Slides installed
- Video player (VLC, Windows Media Player, etc.).
-
Clone the repository
git clone https://github.com/AtharIbrahim/Slide_Controller.git cd Slide_Controller -
Install Flutter dependencies
flutter pub get
-
Run the mobile application
flutter run
-
Navigate to the Python server directory
cd desktop_server # or wherever your Python app is located
-
Install Python dependencies
pip install -r requirements.txt
-
Run the desktop server
python slide_controller_server.py
- Run the Python application on your PC
- Note the IP address displayed (e.g.,
192.168.1.100) - Ensure the server is listening on the specified port
- Open the Flutter app on your mobile device
- Ensure your phone and PC are on the same WiFi network
- Enter your PC's IP address in the app
- Tap "Connect" to establish the connection
- Presentations: Navigate slides forward/backward, go to specific slides
- Videos: Play, pause, seek, volume control
- System: Switch between different presentation software
Slide_Controller/
โโโ mobile_app/ # Flutter mobile application
โ โโโ lib/
โ โ โโโ main.dart
โ โ โโโ screens/
โ โ โ โโโ connection_screen.dart
โ โ โ โโโ control_screen.dart
โ โ โ โโโ settings_screen.dart
โ โ โโโ services/
โ โ โ โโโ network_service.dart
โ โ โ โโโ command_service.dart
โ โ โโโ widgets/
โ โ โโโ models/
โ โโโ assets/
โ โโโ pubspec.yaml
โโโ desktop_server/ # Python desktop application
โ โโโ slide_controller_server.py
โ โโโ presentation_controller.py
โ โโโ video_controller.py
โ โโโ network_handler.py
โ โโโ requirements.txt
โโโ README.md
- โก๏ธ Next Slide: Move to next slide
- โฌ ๏ธ Previous Slide: Go back to previous slide
- ๐ First Slide: Jump to beginning
- ๐ Last Slide: Jump to end
- ๐ข Go to Slide: Navigate to specific slide number
- โธ๏ธ Pause Presentation: Pause/resume slideshow
โถ๏ธ Play/Pause: Toggle video playback- โญ๏ธ Next: Skip to next video/chapter
- โฎ๏ธ Previous: Go to previous video/chapter
- ๐ Volume: Increase/decrease volume
- โฉ Seek: Fast forward/rewind
- ๐ฅ๏ธ Screen: Control display settings
- ๐ Switch App: Change between PowerPoint/Google Slides
- ๐ฑ Connection Status: Monitor connection health
The mobile app communicates with the desktop application using:
- Protocol: HTTP/WebSocket
- Port: Default 8080 (configurable)
- Commands: JSON-formatted control messages
- Response: Status confirmations and feedback
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Follow Flutter/Dart best practices for mobile app
- Follow PEP 8 for Python code
- Test on multiple devices and operating systems
- Document any new features or API changes
- Ensure both devices are on the same WiFi network
- Verify the correct IP address is being used
- Restart both applications if connection fails
- Make sure presentation software is open and active
- Check if desktop app has proper permissions
- Verify network connectivity between devices
This project is licensed under the MIT License - see the LICENSE file for details.
Athar Ibrahim
- Website: @AtharIbrahim
- GitHub: @AtharIbrahimKhalid
- Linkedin: @AtharIbrahim
If you encounter any issues:
- Open an issue in this repository
- Check the troubleshooting section above
- Ensure you're using compatible versions of all software


