How to Configure Night Light (Blue Light Filter) on Fedora GNOME

Enable Night Light in Fedora GNOME by going to Settings > Displays and toggling the switch.

Story / scenario opener

You settle in for a late debugging session. The terminal is full of bright white text on a dark background. Your eyes start to burn after twenty minutes. You remember macOS has Night Shift and Windows has Night Light. You open Fedora Settings, look for the blue light filter, and find the toggle grayed out or missing entirely. Or maybe it works for an hour, then suddenly snaps back to a harsh, clinical white. You need a reliable way to warm up your display without wrestling with third-party daemons.

What is actually happening

GNOME does not apply a physical filter to your monitor. The compositor intercepts the frame buffer before it reaches the display driver. It applies a gamma correction curve that reduces short-wavelength light. Think of it like a digital color grading pass. The system calculates the current color temperature you requested, generates a 3D lookup table, and feeds it to the X server or Wayland compositor. The compositor blends this table with every rendered frame. The result is a warmer image that preserves contrast while cutting blue emission.

The feature relies on two background services. gnome-settings-daemon handles the user interface and schedule logic. colord manages the actual color management pipeline and communicates with the graphics stack. If either service is missing or misconfigured, the toggle will appear but do nothing. Fedora ships both by default. The configuration lives in the org.gnome.settings-daemon.plugins.color GSettings schema. GSettings reads from the compiled schema files in /usr/lib/glib-2.0/schemas/ and stores user overrides in ~/.config/dconf/user. Never edit the compiled XML files directly. Use gsettings or dconf to modify values. The package manager will overwrite manual edits in /usr/lib/ during updates.

Run journalctl -xeu gnome-settings-daemon first. Read the actual error before guessing.

The fix

Open the Settings application. Navigate to Displays. Toggle Night Light to On. This is the standard path. It works for ninety percent of users. When you enable it, GNOME immediately applies the default temperature of 4500 Kelvin. The screen will look noticeably warmer.

Adjust the color temperature slider to your preference. Lower values produce a deeper amber tint. Higher values stay closer to daylight. The slider maps directly to the night-light-temperature key in the GSettings database. GNOME clamps the range between 2500 and 4000 Kelvin in the graphical interface, but the underlying schema accepts values up to 6500.

Set the schedule to match your routine. The default is manual control. Switch to Sunset to Sunrise if you want automatic activation. GNOME calculates local sunrise and sunset times using your system timezone and geolocation data. If you prefer fixed hours, select Custom and define the start and end times. The schedule runs independently of your display power state. The filter activates when the timer triggers, regardless of whether the screen is currently on.

Keep the schedule simple. Complex time boundaries cause the compositor to reload the LUT repeatedly, which wastes CPU cycles.

Terminal configuration

The graphical interface is convenient. The command line gives you precise control and survives desktop environment updates. Open a terminal and query the current state.

gsettings get org.gnome.settings-daemon.plugins.color night-light-enabled
# Returns true or false. Confirms whether the compositor is actively applying the gamma shift.
gsettings get org.gnome.settings-daemon.plugins.color night-light-schedule-type
# Returns manual, sunset, or location. Shows which scheduler is driving the toggle.
gsettings get org.gnome.settings-daemon.plugins.color night-light-temperature
# Returns an integer in Kelvin. The current warmth level applied to the frame buffer.

Change the temperature to a custom value outside the GUI slider range.

gsettings set org.gnome.settings-daemon.plugins.color night-light-temperature 3200
# Forces a deeper amber tint. The compositor reloads the LUT immediately without a restart.
gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true
# Activates the filter. GNOME applies the change to all active outputs.

Configure a fixed schedule that ignores geolocation.

gsettings set org.gnome.settings-daemon.plugins.color night-light-schedule-type custom
# Switches the scheduler from automatic to manual time boundaries.
gsettings set org.gnome.settings-daemon.plugins.color night-light-schedule-on 2100
# Sets activation time to 9 PM. Uses 24-hour format without colons.
gsettings set org.gnome.settings-daemon.plugins.color night-light-schedule-off 0700
# Sets deactivation time to 7 AM. The filter disables at this exact minute.

Reset the configuration if the values drift or become corrupted.

gsettings reset org.gnome.settings-daemon.plugins.color night-light-temperature
# Restores the default 4500K value. Clears any manual override in the dconf database.
gsettings reset org.gnome.settings-daemon.plugins.color night-light-enabled
# Turns off the filter. Useful for troubleshooting conflicting color tools.

Trust the package manager. Manual file edits drift, snapshots stay.

Verify it worked

Check the compositor logs to confirm the gamma table loaded correctly.

journalctl -xeu gnome-settings-daemon | grep -i "night-light\|colord\|gamma"
# Filters the daemon log for color management activity. Look for successful LUT generation.
# ...output truncated for clarity

Run a quick visual test. Open a plain white background. Compare the tint against a known reference. If the screen looks uniformly warm and the terminal text retains readability, the pipeline is functioning. The compositor applies the filter at the output level. External monitors connected via USB-C or HDMI will receive the same adjusted signal if they share the same output group.

Clear the colord cache if the colors look washed out or incorrect.

rm -f ~/.cache/colord/*
# Deletes stale ICC profiles and cached LUTs. colord rebuilds them on next login.
systemctl --user restart colord.service
# Forces the daemon to reload the fresh cache immediately.

Reboot before you debug. Half the time the symptom is gone.

Common pitfalls and what the error looks like

The toggle appears but the screen stays bright white. This usually means colord is not running. Fedora enables it by default, but minimal spins or custom desktop environments might skip it. Start the service and enable it for the current session.

systemctl --user start colord.service
# Launches the color management daemon for your user session.
systemctl --user enable colord.service
# Ensures colord starts automatically when you log in.

You see a D-Bus permission error when running gsettings. Your session bus is misconfigured or you are running the command as root. Night Light is a per-user feature. Run the commands under your normal user account. Do not prefix them with sudo.

Error: GDBus.Error:org.gtk.GDBus.UnmappedGError.Quark._g_2d_io_2d_error.Code_13: Permission denied

The filter flickers or resets every few minutes. Another color management tool is fighting for control of the gamma ramp. Redshift, f.lux, or a custom X11 script will overwrite GNOME's LUT. Stop the conflicting daemon. GNOME does not share the gamma table with third-party applications.

systemctl --user stop redshift.service
# Halts the competing color temperature daemon.
systemctl --user disable redshift.service
# Prevents redshift from restarting on login.

You are on Wayland and the filter only affects one monitor. Wayland compositors handle multi-output color management differently than X11. GNOME applies the night light filter per-output in recent releases. Check the Displays settings page. Each connected monitor has its own Night Light toggle in the output configuration panel. Enable it individually for every screen.

If the boot menu is gone, GRUB rescue is your friend, not your enemy.

When to use this vs alternatives

Use GNOME Night Light when you want a built-in, compositor-integrated solution that respects your desktop session lifecycle. Use Redshift when you need geolocation-based adjustments without GNOME dependencies or when you run a window manager like i3 or sway. Use hardware-level monitor OSD settings when you want zero CPU overhead and a consistent filter across all operating systems. Stick to the default GNOME implementation if you only need basic temperature control and automatic scheduling.

Where to go next