Pointer is a web-based remote control application that allows you to control your computer from any device with a web browser. It provides a simple interface with buttons for common actions like keyboard shortcuts, volume control, and system commands.
- Python 3.11 or higher
- pip package manager
-
Clone the repository
git clone https://github.com/arpy8/pointer.git cd pointer -
Create and activate virtual environment (optional but recommended)
python -m venv .venv # On Windows .venv\Scripts\activate # On Linux/macOS source .venv/bin/activate
-
Install dependencies
pip install -r requirements.txt
-
Environment Configuration (optional)
Create a
.envfile in the project root with the following options:HOST=0.0.0.0 PORT=80 DEBUG=False LOG_LEVEL=INFO API_KEY_ENABLED=False API_KEY=your_secure_key
-
Start the server
python main.py
-
Connect from client devices
- Open your browser and navigate to
http://localhost - For the best experience on mobile devices, add the app to your home screen
- Use the touch controls to operate your computer remotely
- Open your browser and navigate to
Pointer uses a FastAPI backend to handle HTTP requests and execute system commands, with a responsive frontend for the user interface.
flowchart TD
Client[Client Browser] <--> |HTTP/WebSocket| Server[FastAPI Server]
subgraph "Backend"
Server --> Router[API Router]
Router --> |/press/:button| KeyboardService[Keyboard Service]
Router --> |/exec/:command| CommandService[Command Service]
KeyboardService --> PyAutoGUI[PyAutoGUI]
CommandService --> SystemCommands[System Commands]
CommandService --> BrowserControl[Browser Control]
PyAutoGUI --> OS[Operating System]
SystemCommands --> OS
BrowserControl --> OS
end
subgraph "Frontend"
Client --> UI[User Interface]
UI --> Buttons[Control Buttons]
UI --> Joystick[Virtual Joystick]
UI --> MediaControls[Media Controls]
end
subgraph "Configuration"
EnvVars[Environment Variables] --> Server
Settings[App Settings] --> Router
end
style Backend stroke:#333,stroke-width:1px
style Frontend stroke:#333,stroke-width:1px
style Configuration stroke:#333,stroke-width:1px
GET /press/{button}- Send a keyboard press event- Example:
/press/space(press space bar) - Example:
/press/alt-tab(press alt+tab combination)
- Example:
GET /exec/{command}- Execute a system command- Available commands:
shutdown- Initiate system shutdownsleep- Put system to sleepvolume-up- Increase volumevolume-down- Decrease volumeopen-youtube- Open YouTube in browseropen-spotify- Open Spotifyopen-camera- Open camera application
- Available commands:
- API key authentication (optional, disabled by default)
- Local network operation only (not exposed to internet)
- The application should be run with appropriate permissions
- Some features may require specific system configurations
- Designed to work primarily on Windows systems
- Add mouse control capabilities
- Implement custom shortcut configuration
- Create platform-specific commands for macOS and Linux
- Add user authentication
- Implement WebRTC for screen sharing
- Create mobile app versions
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.