Skip to main content

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
  • 💾 Intelligent caching system for improved performance

📋 Requirements

System Requirements

  • Linux operating system (tested on Ubuntu, Fedora, Arch)
  • Python 3.11 or higher
  • playerctl for media player integration
  • No GUI plotting stack required (palette debug output is terminal-based)

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 --once

Continuous Mode

Follow the playing song and update colors in real-time:

beatboard

Press Ctrl+C to stop following.

Advanced Options

# Specify hardware
beatboard --hardware g213

# Debug mode (optional categories: command, palette, cache)
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]"

# Verify dependencies are healthy
python -m pytest

# 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)
  • Asus devices - via asusctl (optional, requires asusctl 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

Release files for BeatBoard 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for BeatBoard 0.1.3
File Size Uploaded
beatboard-0.1.3.tar.gz 117.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for BeatBoard 0.1.3
File Interpreter ABI Platform
beatboard-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size:216.9 kB

Release files / beatboard-0.1.3.tar.gz

Download URL beatboard-0.1.3.tar.gz
Size 117.1 kB
Tags Source
SHA-256 checksum
How to use checksums
634383a8f2678cfe0a6750354828069542c2b8773c0baf95a022065a38b1b934
BLAKE2b-256 checksum
How to use checksums
515895f382d7676f8fa1b14970eb5ef400f7c4ea9c5cdc20aaf7d554b5165d22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / beatboard-0.1.3-py3-none-any.whl

Download URL beatboard-0.1.3-py3-none-any.whl
Size 99.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
76339218db86bb380e9596b6ed966d49a0171bf8d70f87fc763cedfb5180dbc9
BLAKE2b-256 checksum
How to use checksums
d56a9b2f06ca162c13cbdf2fbf865e1a1c0f80d499ca4f1978d01dcb11373816
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page