Lambda Symbolics

Waytemp

A Wayland color temperature control daemon written in Common Lisp. Set, raise, and lower the blue-light filter from a script, a window manager binding, or a keyboard knob.

Waytemp · Properties
Language
Common Lisp · C core for gamma control
Platform
Wayland (niri, Hyprland, and peers with gamma control)
Architecture
Daemon and client over a local socket
Temperature
1000–25000 K, with gamma correction
Config
Readable Lisp at ~/.config/waytemp/config.lisp
License
COLL
Repository
luciusmagn/waytemp

What it does

Waytemp is inspired by wl-sunset, focused on direct control rather than astronomical schedules. A long-running daemon owns the Wayland gamma connection; short client commands change temperature and gamma without reconnecting each time.

Control surface

  • Absolute set and relative increase or decrease
  • Gamma adjustment alongside temperature
  • Persistent configuration loaded on daemon start
  • Automatic retry when the compositor drops the connection

Limits

There are no sunrise or sunset calculations yet. If you want schedule-driven transitions, the daemon is the right place to attach them — contributions welcome on GitHub.

Install

Requires a Common Lisp implementation (SBCL recommended), Quicklisp, a C compiler, and Wayland development packages (wayland-devel, wayland-protocols-devel, pkg-config).

From source
git clone git@github.com:luciusmagn/waytemp.git
cd waytemp
make install
Nix flake
nix build .#waytemp-distrib
# binaries land in ./result

The waytemp-distrib derivation produces a portable binary tree.

Usage

Start the daemon once, then issue client commands from your shell, scripts, or window manager.

Commands
waytemp daemon          # start the daemon
waytemp get             # current temperature
waytemp set 3500        # absolute Kelvin
waytemp inc 1000        # raise by 1000K
waytemp dec             # lower by 100K
waytemp gamma 1.2       # set gamma
waytemp save-config     # persist current values
waytemp quit            # stop the daemon

Configuration

State is stored at ~/.config/waytemp/config.lisp and loaded when the daemon starts. The file is ordinary Common Lisp evaluated in the WAYTEMP package, so you can call and override functions as needed. The last form must evaluate to an instance of waytemp:config.

License: COLL (Configurable Open Lisp License). See LICENSE.lisp in the repository.

~/.config/waytemp/config.lisp
;; evaluated in package WAYTEMP
(make-instance 'config
  :temperature 4500
  :gamma 1.0d0)