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.4.0.tar.gz (44.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-2.4.0-py3-none-any.whl (82.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: busylight_core-2.4.0.tar.gz
  • Upload date:
  • Size: 44.6 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.4.0.tar.gz
Algorithm Hash digest
SHA256 f32e239c6aac51ed683f4aba8af0fc3403474d75ddb9dc93c148225a49125bf0
MD5 199019bd454e788af372b9ec1b980722
BLAKE2b-256 8191f0253561fff2ce4aafc109ac4e1b08326539df3a554b5398b1c434c7801e

See more details on using hashes here.

Provenance

The following attestation bundles were made for busylight_core-2.4.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.4.0-py3-none-any.whl.

File metadata

  • Download URL: busylight_core-2.4.0-py3-none-any.whl
  • Upload date:
  • Size: 82.0 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.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f9766f5afed8866a974ffb517924281ca97bb580f37482ada4f004c24ad93069
MD5 bb6a4acc8f1e3f88db6a9ae825923b69
BLAKE2b-256 ee0640a6d172eb2e42b1e49e580d5bec906d677fcbc7414af6b8910ceb27567b

See more details on using hashes here.

Provenance

The following attestation bundles were made for busylight_core-2.4.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