A Python library for syncing Govee led strips with audio and screen content.
Project description
💡 LumiSync
Sync your Govee LED strips with your screen or music
Features • Installation • Usage • Development • Roadmap
[!NOTE] This project is in active development. Windows is fully supported; Linux X11 is partial, macOS/Wayland are WIP.
✨ Features
| Feature | Description |
|---|---|
| 🖥️ Monitor Sync | Sample colors from screen regions and sync to your LED strip in real-time |
| 🎵 Music Sync | React to audio with dynamic color patterns |
| 🎨 Color Control | Set custom colors and brightness directly from the app |
| 🖌️ Modern GUI | PyQt6 interface with Windows 11-style navigation and theme support |
| 🔍 Auto-Discovery | Automatically finds Govee devices on your LAN via UDP broadcast |
| ⚡ Low Latency | Direct LAN communication, no cloud required |
📦 Installation
Requirements: Python 3.11 or higher
From PyPI (Recommended)
pip install lumisync
From GitHub (Latest)
pip install git+https://github.com/Minlor/LumiSync.git
Development Install
git clone https://github.com/Minlor/LumiSync.git
cd LumiSync
pip install -e .
🚀 Usage
Launch the App
lumisync
Select option 3 to launch the GUI, or choose 1 (Monitor Sync) / 2 (Music Sync) for CLI mode.
Quick Start
- Discover devices - Click "Discover Devices" in the Devices tab
- Select your LED strip - Click on the discovered device
- Control your lights - Use "Set Color" to pick a color, adjust brightness with the slider, or toggle power on/off
- Start syncing - Go to Sync Modes and click "Start Monitor Sync" or "Start Music Sync"
Configuration
- LED Mapping - Customize which screen regions map to which LEDs
- Brightness - Adjust per-mode brightness (10-100%)
- Display Selection - Choose which monitor to capture (multi-monitor support)
- Themes - Switch between light/dark themes via Settings
🛠️ Development
Project Structure
lumisync/
├── lumisync.py # Entry point & CLI
├── connection.py # Govee UDP protocol (port 4001/4002)
├── devices.py # Device discovery & caching
├── config/options.py # Runtime configuration
├── sync/ # Monitor & music sync engines
├── gui/ # PyQt6 application
│ ├── controllers/ # Business logic (QObject + pyqtSignal)
│ ├── views/ # UI components
│ └── widgets/ # Reusable widgets
└── utils/ # Logging, colors, file ops
Run Tests
python tests/test_color.py
Platform Support
| Platform | Screen Capture | Status |
|---|---|---|
| Windows | dxcam | ✅ Full support |
| Linux (X11) | mss | ⚠️ Partial |
| Linux (Wayland) | - | 🚧 WIP |
| macOS | - | 🚧 WIP |
🗺️ Roadmap
- Multi-device support
- Wayland & macOS screen capture
- Basic color control mode
- Custom sync algorithms
- Plugin system for community extensions
🙏 Credits
- Wireshark — Protocol analysis
- See pyproject.toml for all dependencies
📄 License
MIT © Minlor
⭐ Star this repo if you find it useful!
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 lumisync-0.5.1.tar.gz.
File metadata
- Download URL: lumisync-0.5.1.tar.gz
- Upload date:
- Size: 77.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e76178f022e4b7742e952809238bee0e4471d7d62a7cd40f91b683fc9ded550
|
|
| MD5 |
0b22be4d60f4357b2e58d9df498d16d8
|
|
| BLAKE2b-256 |
d8789d8852aa9745ee4801e51640c7818db57cab06e5fbfed49af3645f326baa
|
Provenance
The following attestation bundles were made for lumisync-0.5.1.tar.gz:
Publisher:
pypi.yaml on Minlor/LumiSync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lumisync-0.5.1.tar.gz -
Subject digest:
4e76178f022e4b7742e952809238bee0e4471d7d62a7cd40f91b683fc9ded550 - Sigstore transparency entry: 1429118484
- Sigstore integration time:
-
Permalink:
Minlor/LumiSync@e446ed7fa18a3888cad2eafef5425fba93c462ca -
Branch / Tag:
refs/tags/0.5.1 - Owner: https://github.com/Minlor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yaml@e446ed7fa18a3888cad2eafef5425fba93c462ca -
Trigger Event:
release
-
Statement type:
File details
Details for the file lumisync-0.5.1-py3-none-any.whl.
File metadata
- Download URL: lumisync-0.5.1-py3-none-any.whl
- Upload date:
- Size: 87.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8aab5bc9cab0060a42501e0e57f98051c23bc2362daa6e357d903b2047ccf520
|
|
| MD5 |
79f26629f638f67025fd04947979d1e7
|
|
| BLAKE2b-256 |
0d821d5eafb2d2cf91f184a47475a9ed8b7211bd89210ddd7759c11a03a5298a
|
Provenance
The following attestation bundles were made for lumisync-0.5.1-py3-none-any.whl:
Publisher:
pypi.yaml on Minlor/LumiSync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lumisync-0.5.1-py3-none-any.whl -
Subject digest:
8aab5bc9cab0060a42501e0e57f98051c23bc2362daa6e357d903b2047ccf520 - Sigstore transparency entry: 1429118503
- Sigstore integration time:
-
Permalink:
Minlor/LumiSync@e446ed7fa18a3888cad2eafef5425fba93c462ca -
Branch / Tag:
refs/tags/0.5.1 - Owner: https://github.com/Minlor
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yaml@e446ed7fa18a3888cad2eafef5425fba93c462ca -
Trigger Event:
release
-
Statement type: