PPT Command Executor is a desktop application that enables remote control of PowerPoint presentations using a Socket.IO-based server-client architecture. Built with Python, it features a modern GUI powered by customtkinter, allowing users to start a local server, generate a QR code for easy client connection, and send commands to navigate slides from a mobile device or another computer. This tool is perfect for presenters who need to manage their slides seamlessly without being tied to the presenting device.
The application creates a local server on your machine, accessible via a QR code or manual URL entry. Once connected, clients can send commands like "Next Slide," "Previous Slide," "Start Slideshow," and more, which are executed on the host machine using pyautogui to simulate keyboard inputs.
- Remote Control: Control PowerPoint presentations from any device using a simple web interface.
- QR Code Connection: Generate a QR code for quick and easy device connection without manual IP configuration.
- Single Client Connection: Ensures only one client is connected at a time, automatically disconnecting the previous client when a new one joins.
- Cross-Platform Compatibility: Works on Windows, macOS, and Linux with platform-specific optimizations.
- Modern GUI: Built with
customtkinterfor a sleek, dark-themed interface. - Firewall Management: Automatically adds and removes Windows firewall rules for the server port.
- Error Handling: Displays user-friendly error messages for network issues, admin privileges, and missing assets.
| Initial Screen | QR Code Screen |
|---|---|
![]() |
![]() |
- Python 3.8 or higher (if running from source)
- Operating System: Windows, macOS, or Linux
- Windows: Admin privileges required for firewall rules
- macOS/Linux: Firewall configuration is optional
- PowerPoint or compatible presentation software installed on the host machine
-
Clone the Repository:
git clone https://github.com/lancer-code/PPTCommandExecutor.git cd PPTCommandExecutor -
Install Dependencies: Install the required Python packages using
requirements.txt:pip install -r requirements.txt
If
requirements.txtis missing, install the following:pip install customtkinter flask flask-cors python-socketio pyautogui qrcode pillow gevent gevent-websocket
-
Run the Application:
python main.py
- Windows: Run as Administrator (right-click → "Run as Administrator")
- macOS/Linux: Admin privileges optional (only needed for firewall configuration)
For Windows and macOS users, download the pre-built executable from the Releases section. No Python installation is required:
- Download the latest release for your platform:
- Windows:
PPTCommandExecutor.exe - macOS:
PPTCommandExecutor.app
- Windows:
- Windows: Right-click the
.exeand select "Run as Administrator" macOS: Right-click the.appand select "Open" (for first launch) - Follow the on-screen instructions to start the server and connect a client.
-
Start the Server:
- Launch the application (via Python or the
.exe). - Click the "Start Server" button. The app will start a local server and display a QR code along with the server URL (e.g.,
192.168.X.X:PORT).
- Launch the application (via Python or the
-
Connect a Client:
- On a mobile device or another computer, scan the QR code or manually enter the server URL in a browser.
- The client will connect to the server, and the status will change to "Connected" (displayed in green).
-
Control the Presentation:
- Use the client interface to send commands such as:
- Next Slide / Forward
- Previous Slide / Back
- Start Slideshow (
F5) - End Slideshow (
Esc) - Home (first slide)
- End (last slide)
- The commands will control the PowerPoint presentation on the host machine.
- Use the client interface to send commands such as:
-
Disconnect:
- When a new client connects, the previous client is automatically disconnected.
- Close the application to stop the server and remove the firewall rule.
The project uses the following Python libraries:
customtkinter: Modern GUI framework.flaskandpython-socketio: Server and client communication.pyautogui: Simulates keyboard inputs for PowerPoint control.qrcodeandpillow: Generates and displays QR codes.geventandgevent-websocket: Asynchronous server handling.
To build the executable yourself, use the automated build scripts:
Windows:
pip install pyinstaller
python build_windows.pymacOS:
pip install pyinstaller
python build_macos.pyLinux:
pip install pyinstaller
python build_spec.py
pyinstaller PPTCommandExecutor.specFor detailed instructions, see BUILD_INSTRUCTIONS.md or QUICK_BUILD.md.
Contributions are welcome! To contribute:
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature
- Make your changes and commit:
git commit -m "Add your feature" - Push to your branch:
git push origin feature/your-feature
- Open a pull request on GitHub.
Please ensure your code follows the existing style and includes appropriate tests.
This project is licensed under the MIT License. See the LICENSE file for details.
- Built with CustomTkinter for a modern GUI.
- Uses Socket.IO for real-time communication.
- Inspired by the need for seamless remote presentation control.
For support or issues, please open an issue on the GitHub Issues page.

