Desktop remote control application for Home Assistant
Project description
Home Assistant Desktop Remote Control
🏠 A Beautiful Desktop Remote Control for Home Assistant
Control your Home Assistant media players and devices with an intuitive, cross-platform desktop application.
✨ Features
- 🎮 Intuitive Remote Interface: Clean, modern UI with familiar remote control layout
- ⌨️ Keyboard Shortcuts: Full keyboard navigation support for quick control
- 🌈 System Theme Integration: Automatically adapts to your system's light/dark theme
- 🔧 Easy Setup Wizard: Step-by-step configuration with automatic entity discovery
- 📱 Multiple Remote Support: Manage and switch between multiple Home Assistant remotes
- 🔒 Secure Authentication: Uses Home Assistant's long-lived access tokens
- 🖥️ Cross-Platform: Works on Windows, macOS, and Linux
- ⚡ Responsive Design: Fast, non-blocking command execution
📸 Screenshot
Clean, intuitive remote control interface with familiar button layout
🚀 Quick Start
Installation
Install from PyPI using pip:
pip install ha-desktop-remote
Launch the Application
After installation, you can launch the application:
ha-desktop-remote
First-Time Setup
- Launch the application - You'll see the main remote interface
- Click the "+" button to add your first remote
- Enter your Home Assistant details:
- Home Assistant URL (e.g.,
https://homeassistant.local:8123) - Long-lived access token (create one in HA: Profile → Security → Long-Lived Access Tokens)
- Home Assistant URL (e.g.,
- Select your remote entity from the discovered devices
- Give your remote a name and you're ready to go!
🎮 Usage
Remote Controls
The application provides a full-featured remote control interface:
Physical Buttons
- Power Button: Turn devices on/off
- Volume Controls: Volume up/down and mute
- D-Pad Navigation: Up, down, left, right, and OK/Enter
- Navigation: Back and Home buttons
- Media Controls: Play/pause, stop, rewind, fast forward
Keyboard Shortcuts
- Arrow Keys: Navigate (↑↓←→)
- Enter/Space: OK/Select
- Escape/Backspace: Back
- Home: Home button
- M: Menu
- P: Power
- +/-: Volume up/down
Managing Remotes
- Add Remote: Click the "+" button to add a new remote
- Edit Remote: Click the "✎" button to modify an existing remote
- Delete Remote: Click the "🗑️" button to remove a remote
- Switch Remotes: Use the dropdown to switch between configured remotes
🔧 Configuration
Home Assistant Setup
-
Create a Long-Lived Access Token:
- Go to your Home Assistant profile
- Navigate to Security → Long-Lived Access Tokens
- Click "Create Token"
- Give it a descriptive name like "Desktop Remote"
- Copy the generated token
-
Ensure Remote Entities are Available:
- Your media players should appear as
remote.*entities - Common examples:
remote.living_room_tv,remote.bedroom_chromecast
- Your media players should appear as
Application Configuration
Configuration files are stored in platform-appropriate locations:
- Windows:
%APPDATA%\HomeAssistantDesktopRemote\remotes.json - macOS:
~/Library/Application Support/HomeAssistantDesktopRemote/remotes.json - Linux:
~/.config/ha-desktop-remote/remotes.json
🛠️ Development
Prerequisites
- Python 3.8 or higher
- PySide6
- requests
Setting up Development Environment
-
Clone the repository:
git clone https://github.com/dmarkey/ha-desktop-remote.git cd ha-desktop-remote
-
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python -m ha_desktop_remote.main
Building for Distribution
# Install build dependencies
pip install build twine
# Build the package
python -m build
# Upload to PyPI (maintainers only)
twine upload dist/*
🤝 Contributing
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and add tests if applicable
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
Development Guidelines
- Follow PEP 8 style guidelines
- Add docstrings to new functions and classes
- Test your changes on multiple platforms if possible
- Update documentation for new features
📋 Requirements
- Python: 3.8 or higher
- PySide6: Qt6 bindings for Python
- requests: HTTP library for API communication
- Home Assistant: Compatible with Home Assistant Core
Supported Platforms
- Windows: Windows 10/11
- macOS: macOS 10.14 (Mojave) or later
- Linux: Most modern distributions with Qt6 support
🐛 Troubleshooting
Common Issues
Connection Failed
- Verify your Home Assistant URL is correct and accessible
- Check that your access token is valid and not expired
- Ensure Home Assistant is running and reachable from your network
No Remote Entities Found
- Make sure your media players are configured in Home Assistant
- Check that they appear as
remote.*entities in Developer Tools → States - Some devices may need specific integrations to expose remote functionality
Application Won't Start
- Ensure Python 3.8+ is installed
- Try reinstalling:
pip uninstall ha-desktop-remote && pip install ha-desktop-remote - Check for Qt6/PySide6 compatibility issues on your system
Getting Help
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Home Assistant Community: Community Forum
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Home Assistant Team: For creating an amazing home automation platform
- Qt/PySide6: For providing excellent cross-platform GUI framework
- Contributors: Everyone who has contributed to making this project better
🔗 Links
- PyPI Package: ha-desktop-remote
- GitHub Repository: dmarkey/ha-desktop-remote
- Home Assistant: home-assistant.io
Made with ❤️ for the Home Assistant community
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ha_desktop_remote-1.0.4.tar.gz.
File metadata
- Download URL: ha_desktop_remote-1.0.4.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69cbc35c2ce9bbbf31a0d247af76ae4f62ba641c4e1faf7688f86fca4bb0cede
|
|
| MD5 |
a76fe66f8a1915b9f8552b979eae4baf
|
|
| BLAKE2b-256 |
60aff218e0fb6dcb71a6d9946e2fee8dc07de5a92dce2e94814164c639038f2c
|
File details
Details for the file ha_desktop_remote-1.0.4-py3-none-any.whl.
File metadata
- Download URL: ha_desktop_remote-1.0.4-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d05ddc3591bc498e13dd2f9f9ba89d78987c06ddd69742a398f97950fd2be670
|
|
| MD5 |
d81bd7dfb506c23094268ddd74d56045
|
|
| BLAKE2b-256 |
771ef3a12e6af8a172f6880e5574937295ac83e0d6a59377efdb8db8262fa29b
|