Dynamic keyboard RGB lighting based on Spotify album art
Project description
BeatBoard 🎵💡
BeatBoard is a CLI tool for Linux that dynamically changes your keyboard's RGB
lighting based on the colors extracted from the album art of the currently
playing Spotify Desktop song. It uses playerctl to fetch metadata and applies
vibrant colors to create an immersive music experience.
✨ Features
- 🎨 Automatic color extraction from album art of currently playing tracks
- 🌈 Vibrant color analysis to find dominant and complementary colors
- ⌨️ Real-time RGB keyboard control with smooth transitions
- 🔄 Continuous following mode for live color updates as songs change
- 🎵 Spotify Desktop integration through
playerctlfor seamless music control - 🎯 Hardware-agnostic design for easy expansion to new devices
📋 Requirements
System Requirements
- Linux operating system (tested on Ubuntu, Fedora, Arch)
- Python 3.11 or higher
playerctlfor media player integration
optional Requirements
razer-clifor Razer device support (optional)asusctlfor Asus device support (optional)
Media Players
- Spotify Desktop (required)
🚀 Installation
Quick Install
pip install beatboard
Alternative: Using pipx
For isolated installation without affecting system Python:
pipx install beatboard
Verify Installation
# Test basic functionality
beatboard --help
# Verify playerctl integration (should show current player status)
playerctl status
# Test hardware access (may require sudo for initial setup)
beatboard --debug
🎮 Usage
Single Color Change
Extract colors from the current song and apply once:
beatboard
Continuous Mode
Follow the playing song and update colors in real-time:
beatboard --follow
Press Ctrl+C to stop following.
Advanced Options
# Specify hardware
beatboard --hardware g213
# Debug mode
beatboard --debug
# Show version
beatboard --version
🛠️ Development
For development, clone the repository and use the dev script to run the latest code:
# Install in development mode
pip install -e ".[dev]"
# Run with dev script
python beatboard_dev.py --help
python beatboard_dev.py
python beatboard_dev.py --follow
🖥️ Supported Hardware
Currently Supported
- Logitech G213 Prodigy - single region supported
- Razer devices - via razer-cli (optional, requires razer-cli installation)
Planned Support
- Corsair RGB keyboards
- Generic HID RGB devices
Want to add support for your device? See our Contributing Guide!
🤝 Contributing
We welcome contributions of all kinds! Here's how you can help:
Code Contributions
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Hardware Support
Help us expand hardware compatibility by:
- Adding device drivers
- Testing on new hardware
- Documentation improvements
See our Contributing Guide for detailed guidelines.
🐛 Troubleshooting
Common Issues
- "playerctl not found":
- Ubuntu/Debian:
sudo apt install playerctl - Fedora:
sudo dnf install playerctl - Arch Linux:
sudo pacman -S playerctl
- Ubuntu/Debian:
- "Permission denied": Add user to
inputgroup:sudo usermod -a -G input $USER - "No album art": Ensure current Spotify Desktop song has album art available
Getting Help
- See our Support Guide for help channels
- Open an issue
- Join our discussions
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- The
playerctlteam for media player integration - Logitech for the G213 hardware specifications
- Contributors and beta testers
📊 Project Status
Made with ❤️ by the BeatBoard team
Project details
Release history Release notifications | RSS feed
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 beatboard-0.1.2.tar.gz.
File metadata
- Download URL: beatboard-0.1.2.tar.gz
- Upload date:
- Size: 114.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf49ffd4ea69292d1d470eb5eadb3b2921c47883786f460aaa07714d2ee7a2e7
|
|
| MD5 |
089f989552e04fdfb5c7e4103b37be9d
|
|
| BLAKE2b-256 |
910bdc09710762c6580e0bd5e7aa51cbe8a039ee8d287e6b9cc0f42e6d68248f
|
File details
Details for the file beatboard-0.1.2-py3-none-any.whl.
File metadata
- Download URL: beatboard-0.1.2-py3-none-any.whl
- Upload date:
- Size: 99.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
671804a1da61e837216a07fc4bcb0dc48ae3549dcf18b806046b07b563f58ac5
|
|
| MD5 |
218e83f336200b3bd5bd5a661402cd92
|
|
| BLAKE2b-256 |
6166c5459edb5ce0a77ef43206103e1d219cc428596459cc3934cb046f418e91
|