Skip to main content

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

Python 3.11+ PyPI version License: MIT GitHub stars

FeaturesInstallationUsageDevelopmentRoadmap


[!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
LumiSync Screenshot

📦 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

  1. Discover devices - Click "Discover Devices" in the Devices tab
  2. Select your LED strip - Click on the discovered device
  3. Control your lights - Use "Set Color" to pick a color, adjust brightness with the slider, or toggle power on/off
  4. 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

📄 License

MIT © Minlor


minlor.net · GitHub @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

lumisync-0.5.1.tar.gz (77.1 kB view details)

Uploaded Source

Built Distribution

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

lumisync-0.5.1-py3-none-any.whl (87.6 kB view details)

Uploaded Python 3

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

Hashes for lumisync-0.5.1.tar.gz
Algorithm Hash digest
SHA256 4e76178f022e4b7742e952809238bee0e4471d7d62a7cd40f91b683fc9ded550
MD5 0b22be4d60f4357b2e58d9df498d16d8
BLAKE2b-256 d8789d8852aa9745ee4801e51640c7818db57cab06e5fbfed49af3645f326baa

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumisync-0.5.1.tar.gz:

Publisher: pypi.yaml on Minlor/LumiSync

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for lumisync-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8aab5bc9cab0060a42501e0e57f98051c23bc2362daa6e357d903b2047ccf520
MD5 79f26629f638f67025fd04947979d1e7
BLAKE2b-256 0d821d5eafb2d2cf91f184a47475a9ed8b7211bd89210ddd7759c11a03a5298a

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumisync-0.5.1-py3-none-any.whl:

Publisher: pypi.yaml on Minlor/LumiSync

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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