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.0.tar.gz (76.0 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.0-py3-none-any.whl (87.3 kB view details)

Uploaded Python 3

File details

Details for the file lumisync-0.5.0.tar.gz.

File metadata

  • Download URL: lumisync-0.5.0.tar.gz
  • Upload date:
  • Size: 76.0 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.0.tar.gz
Algorithm Hash digest
SHA256 22ace9c13ea59a9df75a0b1cb86f4059a9872c60c429eead70a01becde428e5a
MD5 812cf221f5855894e9d9380220d04d6c
BLAKE2b-256 ce326157705cf6c0eb0e3d25e199078352686eb94cd937e4037d4a34822e4b7c

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumisync-0.5.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: lumisync-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 87.3 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 10eec2f0354b21f7215fcf8086b03d20c7fdf163d781746897dfed44404ec1d8
MD5 a3de0e4f8611dde2e9675b6d01a6354a
BLAKE2b-256 d58736069d7266a800d69dd9c97782004888b027f7a92adda9e3082aa93580a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for lumisync-0.5.0-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