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.
- 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).
git clone git@github.com:luciusmagn/waytemp.git
cd waytemp
make install
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.
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.
;; evaluated in package WAYTEMP
(make-instance 'config
:temperature 4500
:gamma 1.0d0)