#wayland #hyprland #wlroots #gamma

app nighterrors

Ultra-light Rust Wayland blue-light filter daemon for Hyprland/Niri and wlroots compositors

1 unstable release

Uses new Rust 2024

0.1.0 Apr 13, 2026

#1084 in Command line utilities

Apache-2.0

120KB
3K SLoC

nighterrors

Rust 2024 Platform Linux Display Wayland Backends Hyprland + wlroots

Ultra-light Rust Wayland blue-light filter daemon for Hyprland, Niri, and wlroots compositors.

nighterrors runs as a small foreground daemon or a user systemd service and exposes a minimal CLI for runtime color temperature and gamma control.

Features

  • Small single-binary daemon and control client
  • Backend auto-selection with Hyprland CTM support preferred over wlroots gamma control
  • Runtime commands for set, get, toggle, reset, outputs, exclude, status, and stop
  • Optional user systemd service management via nighterrors service ...
  • TTY-aware output with --raw, --pretty, and automatic mode selection
  • Output exclude/include controls by output name
  • Minimal dependency footprint with no async runtime or CLI framework

Requirements

  • Linux
  • Wayland
  • A compositor exposing either hyprland-ctm-control-v1 or wlr-gamma-control-unstable-v1

Install

After publishing:

cargo install nighterrors

From a checkout:

cargo build --release
./target/release/nighterrors run

Arch packaging sources for nighterrors-git and nighterrors-bin live under packaging/aur/.

Quick Start

Build from a checkout:

cargo build --release

Start the daemon in the foreground:

./target/release/nighterrors run -t 5500 -g 95 -i off

Control it from another terminal:

./target/release/nighterrors status
./target/release/nighterrors set temp +200
./target/release/nighterrors toggle
./target/release/nighterrors outputs list

Install it as a user service:

./target/release/nighterrors service install --temp 5500 --gamma 95
./target/release/nighterrors service status

Notes

  • nighterrors currently supports Linux only.
  • If no supported Wayland protocol is exposed, startup fails with a backend-specific error.
  • Default socket path: ${XDG_RUNTIME_DIR:-/run/user/<uid>}/nighterrors/${WAYLAND_DISPLAY:-wayland-0}.sock

Help

nighterrors --help
nighterrors help run
nighterrors help toggle
nighterrors help service

Dependencies

~3.5–8MB
~169K SLoC