LinuxCommandLibrary

gammastep

Adjust screen color temperature based on time

TLDR

Turn on Gammastep with a specific [t]emperature during the day (e.g. 5700k) and at night (e.g. 3600k)

$ gammastep -t [5700]:[3600]
copy

Turn on Gammastep with a manually specified custom [l]ocation
$ gammastep -l [latitude]:[longitude]
copy

Turn on Gammastep with a specific screen [b]rightness during the day (e.g. 70%) and at night (e.g. 40%), with minimum brightness 10% and maximum brightness 100%
$ gammastep -b [0.7]:[0.4]
copy

Turn on Gammastep with custom [g]amma levels (between 0 and 1)
$ gammastep -g [red]:[green]:[blue]
copy

Turn on Gammastep with a c[O]nstant unchanging color temperature
$ gammastep -O [temperature]
copy

Reset temperature adjustments applied by Gammastep
$ gammastep -x
copy

SYNOPSIS

gammastep [-h] [-V] [-v] [-o] [-x] [-l LAT[:LON]] [-t DAY:NIGHT] [-b DAY:NIGHT] [-O TEMP] [-I INT] [-c FILE] [-m METHOD] [--print] [--dbus]

PARAMETERS

-h, --help
    Display help and exit

-V, --version
    Print version information

-v, --verbose
    Enable verbose logging

-o, --one-shot
    Apply settings once and exit

-x, --reset
    Reset all corrections

-l LAT[:LON], --location=LAT[:LON]
    Set geographical location for auto-adjustment

-t DAY:NIGHT, --temp-day=DAY --temp-night=NIGHT
    Set daytime/nighttime color temperatures (Kelvin)

-b DAY:NIGHT, --brightness-day=DAY --brightness-night=NIGHT
    Set daytime/nighttime brightness multipliers (0.0-1.0)

-O TEMP, --one-shot-temperature=TEMP
    Set one-time color temperature

-I INT, --one-shot-intensity=INT
    Set one-time transition intensity (0.0-1.0)

-c FILE, --config=FILE
    Load configuration from FILE

-m METHOD, --method=METHOD
    Transition method: none, linear, smooth, vit

-p, --print
    Print current color temperature

--print-cmd
    Print current settings as command-line args

--dbus
    Enable D-Bus control interface

DESCRIPTION

Gammastep is an open-source daemon for dynamically adjusting your screen's color temperature and gamma curves based on the time of day, reducing eye strain by simulating natural lighting. Designed for Wayland compositors supporting the wlr-gamma-control-unstable-v1 protocol (e.g., Sway, Hyprland, river), it serves as a drop-in replacement for Redshift on X11.

It automatically computes sunrise and sunset times from your location, transitioning smoothly from cooler daytime temperatures (5000-6500K, bluish) to warmer nighttime ones (3500-4500K, reddish). Manual overrides, presets, and brightness adjustments are supported. Gammastep runs unobtrusively in the background, applying per-output corrections with customizable transition speeds and methods like smooth or linear.

Key benefits include improved sleep quality by minimizing blue light exposure at night, and support for multiple monitors. Configuration via INI files allows fine-tuning locations, temperatures, and fade durations. Pair it with gammastep-indicator for a system tray interface.

CAVEATS

Requires Wayland compositor with wlr-gamma-control-unstable-v1 protocol support (e.g., Sway, not GNOME/KDE). Per-output adjustments may conflict with compositor color management. No X11/Wayland XWayland support.

CONFIGURATION FILE

Default at ~/.config/gammastep/config.ini. Supports sections like [general] for day-temp=6500, night-temp=3700; [location] lat=...; smooth transitions via fade=1.0.

MANUAL CONTROL

Use pkill gammastep to stop daemon. Complements brightnessctl for backlight. Supports D-Bus for scripting: gammastep --dbus.

HISTORY

Developed as a Wayland port of Redshift by Jonathon Jongsma and swaywm contributors. Initial release in 2021 via wlroots ecosystem. Actively maintained on GitHub (hyprwm/gammastep), with focus on stability for wlroots-based compositors.

SEE ALSO

redshift(1), gammastep-indicator(1), wl-gamma-control(7)

Copied to clipboard