@domicile-desktop/system-backlight
v0.0.0-alpha-81ad71398c08
Published
Screen brightness for a Domicile shell: reads /sys/class/backlight, watches it and sets it through logind, on @domicile-desktop/sdk/system.
Readme
@domicile-desktop/system-backlight
Screen brightness for a Domicile shell, on the system calls of
@domicile-desktop/sdk/system. See
SHELL-SYSTEM-ACCESS.md.
Usage
import { system } from "@domicile-desktop/sdk/system";
import { brightnessSetter } from "@domicile-desktop/system-backlight/set-brightness";
import { watchBrightness } from "@domicile-desktop/system-backlight/watch-brightness";
const host = system(domicile);
const watch = await watchBrightness(host, (level) => show(level));
const set = brightnessSetter(host);
await set(0.5);readBacklight(./read-backlight): the preferred device under/sys/class/backlight: firmware, then platform, then raw, in systemd's order; ties by name.Nonewithout one.watchBrightness: the level (0 to 1) now and on each change of a whole percent. Re-reads on eachudevadm monitoruevent and every two minutes.brightnessSetter: sets a level through logind'sorg.freedesktop.login1.Session.SetBrightness. Never sets zero, which turns most panels off. Sends one level at a time; a level superseded while waiting resolvesSetOutcome.Superseded.- Every call resolves a
Result<…, SystemError>. A level that is not a number throws.
Requirements
udevadmon the compositor'sPATH(systemd).- A logind session.
- Watching and setting work while the desktop is locked, so a lock screen can adjust the brightness (LOCK.md).
Testing
bun run turbo test --filter @domicile-desktop/system-backlight. Tests answer
the system calls from files recorded on a ThinkPad (src/fake-system.ts).
