← Otto User GuideNight Shift

Otto has no built-in colour-temperature setting. Instead it implements zwlr-gamma-control-v1, the protocol the established tools use, so they work against Otto directly and drive the display hardware’s gamma tables — no software post-processing, no cost per frame.

wlsunset

Follows sunrise and sunset for your location.

sudo pacman -S wlsunset      # Arch
sudo dnf install wlsunset    # Fedora
sudo apt install wlsunset    # Debian/Ubuntu

Start it with your latitude and longitude:

[[exec_once]]
cmd = "wlsunset"
args = ["-l", "48.8", "-L", "2.3"]

-l is latitude, -L is longitude — negative for south and west.

Fixed temperatures instead of sun-following:

wlsunset -t 3500 -T 6500     # night 3500K, day 6500K
wlsunset -T 6500 -t 6500     # effectively off

gammastep

A fork of redshift with more options — manual times, a systemd unit, and a config file.

gammastep -l 48.8:2.3
# ~/.config/gammastep/config.ini
[general]
temp-day=6500
temp-night=3800
location-provider=manual

[manual]
lat=48.8
lon=2.3

Then:

[[exec_once]]
cmd = "gammastep"

or systemctl --user enable --now gammastep.

Brightness

Backlight brightness is separate from colour temperature and is handled by Otto:

[keyboard_shortcuts]
"XF86MonBrightnessUp"   = "BrightnessUp"
"XF86MonBrightnessDown" = "BrightnessDown"

Each press shows an on-screen indicator. This adjusts the actual hardware backlight, so it saves power — unlike gamma-based dimming, which only makes the picture darker.

For external monitors that expose DDC/CI, use ddcutil:

ddcutil setvcp 10 50    # 50% brightness

Choosing a temperature

KelvinFeels like
6500KDaylight — no shift, the display’s native point
5000KA gentle warmth, usable all day
4000KClearly warm; a common evening setting
3400KHalogen bulb; the usual “night” default
2700KIncandescent; very orange
1900KCandlelight; only for late-night reading

Troubleshooting

“Failed to bind gamma control”. Otto must be running as your compositor — the protocol is not available on the --winit backend, where the host compositor owns the display hardware.

Colours do not change. Some drivers ignore gamma tables on some outputs. Try a different output, and check the tool’s own output for errors.

Colours stay shifted after the tool exits. A crashed tool leaves the gamma ramp where it was. Restart it and stop it cleanly, or restart the session.

Two tools are fighting. Run only one gamma client at a time; the last one to set the ramp wins.

Not planned

Otto is unlikely to grow its own night-shift implementation — wlsunset and gammastep do the job well, and the protocol exists so that compositors do not have to.