Skip to main content

Busylight Core Implementation for Humans, presumably like you!

Project description

Release Version Python Version License Monthly Downloads

Busylight Core for Humans™

A unified Python library for controlling USB status lights from multiple vendors.

busylight-core provides a consistent interface to control USB LED status lights. If you want a command-line interface or HTTP API, see Busylight for Humans™.

Quick Start

from busylight_core import Light

light = Light.first_light()
light.on((0, 128, 0))   # green
light.off()

Installation

uv add busylight_core
pip install busylight_core

Features

  • Multi-vendor support -- 26 devices from 9 vendors
  • HID and serial -- multiple connection types
  • Async effects -- blink, pulse, rainbow, spectrum
  • Multi-LED targeting -- devices with 1-192 individual LEDs
  • Input detection -- button press handling on interactive devices
  • Extensible -- plugin architecture for adding new devices

Supported Hardware

Vendor Models
Agile Innovative BlinkStick, BlinkStick Pro, Square, Strip, Nano, Flex
CompuLab fit-statUSB
EPOS Busylight
Embrava Blynclight, Blynclight Mini, Blynclight Plus, BLYNCUSB10, BLYNCUSB20
Kuando Busylight Alpha, Busylight Omega
Luxafor Flag, Orb, Mute, Bluetooth
MuteMe MuteMe Original, MuteMe Mini, MuteSync
Plantronics Status Indicator
ThingM Blink(1), Blink(1) mk2

Usage

Find and control all connected lights:

from busylight_core import Light

for light in Light.all_lights():
    print(f"{light.name} by {light.vendor}")
    light.on((255, 0, 0))  # red

Vendor-specific access:

from busylight_core import EmbravaLights, LuxaforLights

embrava = EmbravaLights.all_lights()
if embrava:
    embrava[0].on((255, 0, 0))

luxafor = LuxaforLights.all_lights()
for light in luxafor:
    light.on((0, 255, 0))

Async effects:

import asyncio
from busylight_core import Light

light = Light.first_light()
asyncio.run(light.blink(color=(0, 0, 255), speed=1))

Meeting status indicator:

from busylight_core import Light

light = Light.first_light()

light.on((0, 128, 0))    # available (green)
light.on((255, 0, 0))    # in meeting (red)
light.on((255, 255, 0))  # away (yellow)
light.off()

Platform Support

  • macOS -- works out of the box
  • Linux -- requires udev rules for USB access
  • Windows -- may work, untested, patches welcome

Development

This project is part of a uv workspace monorepo. Virtual environment activation is supported via direnv. Development tasks (linting, testing) are automated with Poe the Poet -- run poe for a list of tasks.

See CONTRIBUTING.md for development details.

License

Apache License 2.0

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-2.3.0.tar.gz (44.0 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-2.3.0-py3-none-any.whl (81.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for busylight_core-2.3.0.tar.gz
Algorithm Hash digest
SHA256 fdd0267a9dd7b29cd6dceecc0c8442ac0e4289e3e814961518954f861f9df74d
MD5 a4cb2a849a3116e4c9da6082c2b26945
BLAKE2b-256 66b049dac48a88b401237182dcdcfa3b90290c8c192a996a59077b61536dae53

See more details on using hashes here.

Provenance

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

Publisher: release-core.yaml on JnyJny/busylight

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-2.3.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for busylight_core-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7ad4dcf40e28e0619ac3431b88bc67669575ce464d9eeca87a4420bea1b7a1e8
MD5 43ebb7ca5595bcfd01b283547424e7dd
BLAKE2b-256 20a0ebcb87f65a2c7a31c8979bc637f32a7e770e0392a49b951406d2d3ab9362

See more details on using hashes here.

Provenance

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

Publisher: release-core.yaml on JnyJny/busylight

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