Skip to main content

Dynamic keyboard RGB lighting based on Spotify album art

Project description

BeatBoard 🎵💡

License: MIT Python 3.11+ Linux

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 playerctl for 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
  • playerctl for media player integration

optional Requirements

  • razer-cli for Razer device support (optional)
  • asusctl for 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

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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
  • "Permission denied": Add user to input group: sudo usermod -a -G input $USER
  • "No album art": Ensure current Spotify Desktop song has album art available

Getting Help

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • The playerctl team for media player integration
  • Logitech for the G213 hardware specifications
  • Contributors and beta testers

📊 Project Status

GitHub issues GitHub pull requests


Made with ❤️ by the BeatBoard team

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

beatboard-0.1.2.tar.gz (114.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

beatboard-0.1.2-py3-none-any.whl (99.8 kB view details)

Uploaded Python 3

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

Hashes for beatboard-0.1.2.tar.gz
Algorithm Hash digest
SHA256 cf49ffd4ea69292d1d470eb5eadb3b2921c47883786f460aaa07714d2ee7a2e7
MD5 089f989552e04fdfb5c7e4103b37be9d
BLAKE2b-256 910bdc09710762c6580e0bd5e7aa51cbe8a039ee8d287e6b9cc0f42e6d68248f

See more details on using hashes here.

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

Hashes for beatboard-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 671804a1da61e837216a07fc4bcb0dc48ae3549dcf18b806046b07b563f58ac5
MD5 218e83f336200b3bd5bd5a661402cd92
BLAKE2b-256 6166c5459edb5ce0a77ef43206103e1d219cc428596459cc3934cb046f418e91

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page