Skip to main content

Busylight Core Implementation for Humans, presumably like you!

Project description

Release Version Release Date Python Version License Monthly Downloads

Busylight Core for Humans™

A unified Python library for controlling USB status lights (busylights) from multiple vendors

busylight-core provides a consistent interface to control various USB-connected status lights, commonly used for indicating availability, meeting status, or system notifications.

Features

  • Multi-Vendor Support - Control devices from nine vendors.
  • Multiple Connection Types - HID and Serial device support.
  • Python Library - Clean, object-oriented API for easy integration.
  • Rich Light Control - Colors, brightness, flash patterns, fade effects.
  • Audio Capabilities - Sound playback and mute/unmute on supported devices.
  • Input Detection - Button press handling on interactive devices.
  • Multi-LED Support - Control devices with 1-192 individual LEDs.
  • Async Task Management - Built-in support for animations and effects.
  • Extensible Architecture - Easy to add support for new devices.

Supported Hardware

Vendor Device Models Special Features
Embrava Blynclight, Blynclight Mini, Blynclight Plus Audio playback, flash control, dim/bright
Kuando Busylight Alpha, Busylight Omega Keepalive functionality
Luxafor Flag, Mute, Orb, Bluetooth Button input (Mute model)
ThingM Blink(1) Fade effects, feature reports
Agile Innovative BlinkStick (multiple variants) 1-192 LEDs, channel control
MuteMe MuteMe, MuteMe Mini Button input detection
MuteSync Button Button input detection
Plantronics Status Indicator Basic light control
CompuLab fit-statUSB Basic light control

Installation

Install with uv

uv add busylight_core

Install with pip

python3 -m pip install busylight_core

Usage

from busylight_core import Light

# Find all connected lights
lights = Light.available()
print(f"Found {len(lights)} device(s)")

# Control a specific device
if lights:
    light = lights[0]
    light.on((255, 0, 0))  # Turn on red
    light.off()            # Turn off

Common Use Cases

Meeting Status Indicator:

from busylight_core import Light

light = Light.first_light()

# Available - green
light.on((0, 255, 0))

# In meeting - red  
light.on((255, 0, 0))

# Away - yellow
light.on((255, 255, 0))

light.off()

Documentation

For detailed documentation including API reference, advanced usage examples, and device-specific information:

Development

This project and it's virtual environment is managed using uv and is configured to support automatic activation of virtual environments using direnv. Development activites such as linting and testing are automated via [Poe The Poet][poethepoet], run poe after cloning this repo for a list of tasks.

Clone

git clone https://github.com/JnyJny/busylight_core
cd busylight_core

Allow Direnv optional but recommended

direnv allow

Install Dependencies

uv sync --all-groups

Run poe

poe --help

Release Management

This project uses automated release management with GitHub Actions:

Version Bumping

  • poe publish_patch - Bump patch version, commit, tag, and push
  • poe publish_minor - Bump minor version, commit, tag, and push
  • poe publish_major - Bump major version, commit, tag, and push

Any of the publish tasks will trigger testing, publishing to PyPi, and a GitHub release.

Release Notes

  • poe changelog - Generate changelog since last tag
  • poe release-notes - Generate release notes file

Automatic Releases

When you push a version tag (e.g., v1.0.0), the unified GitHub Actions workflow will:

  1. Test - Run tests across all supported Python versions and OS combinations
  2. Publish - Build and publish to PyPI (only if tests pass)
  3. GitHub Release - Create GitHub release with auto-generated notes and artifacts (only if PyPI publish succeeds)

This ensures a complete release pipeline where each step depends on the previous step's success.

MkDocs Documentation

  • poe docs-serve - Serve documentation locally
  • poe docs-build - Build documentation
  • poe docs-deploy - Deploy to GitHub Pages

gh:JnyJny/python-package-cookiecutter

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

busylight_core-0.3.0.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

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

busylight_core-0.3.0-py3-none-any.whl (40.2 kB view details)

Uploaded Python 3

File details

Details for the file busylight_core-0.3.0.tar.gz.

File metadata

  • Download URL: busylight_core-0.3.0.tar.gz
  • Upload date:
  • Size: 22.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for busylight_core-0.3.0.tar.gz
Algorithm Hash digest
SHA256 7c6b9f25fb5983731bd97a50d5d4a15ea5d3695666cffd9da59cfaca4b28ecdf
MD5 0680a39152af38568e48bfae3259b4e2
BLAKE2b-256 cce6762ad82f26bd2cc52be9537bcaf251575a150eb1ab025b7255b398a1e950

See more details on using hashes here.

Provenance

The following attestation bundles were made for busylight_core-0.3.0.tar.gz:

Publisher: release.yaml on JnyJny/busylight-core

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

File details

Details for the file busylight_core-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: busylight_core-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 40.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for busylight_core-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4bc4e4ad22fba56d14a459a8cd10d2beb312b6d0ea4bd4f45abc33b7c743c568
MD5 b46d84c8c53384da696f953136225991
BLAKE2b-256 dfb529dab516d99eae4077b8169a0262f548b734e9508a316a01236141bd13ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for busylight_core-0.3.0-py3-none-any.whl:

Publisher: release.yaml on JnyJny/busylight-core

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