Skip to main content

backlit-kbd

CI Publish PyPI version Python License Downloads Buy Me A Coffee Sponsor

Beginner-friendly Python package to control keyboard backlight brightness.

It supports:

  • Real Linux keyboard backlight devices (auto-discovered from sysfs)
  • A mock backend for safe testing without touching laptop hardware

What This Means

  • If you use --mock, commands run in memory only (safe for learning).
  • If you do not use --mock, the package tries real hardware automatically.
  • You usually do not need --device-path.

Installation

Step 1: Install from PyPI

pip install backlit-kbd

Step 2 (optional): Install local editable version for development

pip install -e .

Step 3 (optional): Install dev dependencies

pip install -e .[dev]

Quick Start (Python)

Step 1: Import

from backlit_kbd import NotificationBlinker, create_controller

Step 2: Create a safe controller (mock fallback)

controller = create_controller(fallback_to_mock=True)

Step 3: Turn on brightness to 60%

controller.turn_on(60.0)

Step 4: Blink for a notification

controller.blink(count=3, on_ms=120, off_ms=120, level_percent=100.0)

Step 5: Use async notification manager

blinker = NotificationBlinker(controller)
blinker.start("chat-message", count=5, on_ms=80, off_ms=120)

CLI Guide (Beginner Friendly)

1) Check Current State

With mock backend:

backlit-kbd --mock info

With real hardware backend:

backlit-kbd info

2) Set Brightness by Raw Level

With mock backend:

backlit-kbd --mock set 2

With real hardware backend:

backlit-kbd set 2

3) Set Brightness by Percentage

With mock backend:

backlit-kbd --mock percent 75

With real hardware backend:

backlit-kbd percent 75

4) Increase and Decrease

Increase by default step (1):

backlit-kbd --mock inc

Increase by custom step:

backlit-kbd --mock inc 2

Decrease by custom step:

backlit-kbd --mock dec 2

Real hardware equivalents:

backlit-kbd inc
backlit-kbd inc 2
backlit-kbd dec 2

5) Turn On and Off

With mock backend:

backlit-kbd --mock on --percent 40
backlit-kbd --mock off

With real hardware backend:

backlit-kbd on --percent 40
backlit-kbd off

With mock backend:

backlit-kbd --mock blink --count 4 --on-ms 100 --off-ms 100 --level-percent 100

With real hardware backend:

backlit-kbd blink --count 4 --on-ms 100 --off-ms 100 --level-percent 100

With mock backend:

backlit-kbd --mock notify --name chat --count 5 --on-ms 80 --off-ms 120 --level-percent 100

With real hardware backend:

backlit-kbd notify --name chat --count 5 --on-ms 80 --off-ms 120 --level-percent 100

Full CLI Commands

Global options:

  • --mock Use in-memory backend (safe, no hardware writes)
  • --device-path PATH Optional advanced override for a specific sysfs device

Commands:

  • info
  • set <value>
  • percent <value>
  • inc [step]
  • dec [step]
  • on [--percent N]
  • off
  • blink [--count N --on-ms N --off-ms N --level-percent N]
  • notify [--name NAME --count N --on-ms N --off-ms N --level-percent N]

Examples Folder

Scripts:

  • examples/blink_notification.py
  • examples/brightness_wave.py
  • examples/disco_light.py

Run them:

python examples/blink_notification.py
python examples/brightness_wave.py
python examples/disco_light.py

Testing

Run tests:

python -m pytest

If you are using the project virtual environment:

.venv/bin/pytest

Troubleshooting

  1. Permission denied on Linux real hardware mode:
  • You may need proper privileges/udev rules to write to sysfs.
  1. No device found in real hardware mode:
  • Use --mock for learning/testing.
  • Or use create_controller(fallback_to_mock=True) in Python.
  1. Want safe practice mode always:
  • Use --mock in CLI, or force_mock=True / fallback_to_mock=True in code.

Release and Publish

This repo has GitHub Actions workflows:

  • CI runs tests on push and pull request
  • Publish builds and publishes to PyPI
  • Uses astral-sh/setup-uv
  • Uses PyPI Trusted Publishing (OIDC)

To publish a new version:

  1. Update version in pyproject.toml
  2. Create and push a tag like v0.1.1
  3. Or publish a GitHub release

Support

Contributing

  • Start with examples/
  • Check tests in tests/
  • Open issues and PRs

License

MIT License. Created by Adarsh Gourab Mahalik.

Release files for backlit-kbd 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for backlit-kbd 0.1.0
File Size Uploaded
backlit_kbd-0.1.0.tar.gz 11.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for backlit-kbd 0.1.0
File Interpreter ABI Platform
backlit_kbd-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.7 kB

Release files / backlit_kbd-0.1.0.tar.gz

Download URL backlit_kbd-0.1.0.tar.gz
Size 11.9 kB
Tags Source
SHA-256 checksum
How to use checksums
fb387920c0fbea8ae951c075bc52a323422f96730e9d86909e53d28c0fcb38cf
BLAKE2b-256 checksum
How to use checksums
eefad3fbdc565704700afa5485b64714a6340215f33b775736f91fdf28db24e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.

Transparency log

Release files / backlit_kbd-0.1.0-py3-none-any.whl

Download URL backlit_kbd-0.1.0-py3-none-any.whl
Size 12.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
710052446abc155ac74e0fbb7e7d43d4850b306f4b8fe04a68d5c7b2f795f5d6
BLAKE2b-256 checksum
How to use checksums
9e39d96ec72798a1474667f6669d04281bd7eca0ae376d79cd2cc5adc3ffd99d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page