Make a Fedora GNOME (Wayland) display look warm and pleasant like Windows instead of cold/washed out. Use when the user asks to fix cold colors, set up gamma, night light, color temperature, or "make it like Windows" on Fedora/GNOME/Wayland.
Resources
1Install
npx skillscat add youlianvr/oper-share/fedora-warm-colors Install via the SkillsCat registry.
Fedora warm display colors (GNOME + Wayland)
Goal: replicate the pleasant, warm Windows-like display look on Fedora Workstation
(GNOME + Wayland). Windows drivers apply gamma/color corrections; Linux does not,
so the panel often looks cold and flat.
Environment: Fedora, GNOME + Wayland, NVIDIA GPU (proprietary driver — DDC/CI over
i2c works; with nouveau it does NOT respond), external monitor on DP-1. Tested on
GNOME 45–50 (50.3). Color work is driver-agnostic (colord VCGT + Mutter).
Mutter's Wayland does not expose wlr-gamma-control, so gammastep/wl-gammactl will
NOT work. Night Light is one gamma path, plus colord ICC profiles via VCGT.
The single biggest "cold/flat" fix is usually the MONITOR's own color preset —
many ship at 7500 K (bluish); set it to 6500 K via DDC (§4).
Windows 11 look beyond colors (dark theme, Segoe UI, cursors, sounds,
extensions, terminals, passwordless sudo) — references/windows-look-extras.md,
load only when the task needs it.
1. Night Light (warmth) — built-in, no packages
gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true
gsettings set org.gnome.settings-daemon.plugins.color night-light-schedule-automatic false
gsettings set org.gnome.settings-daemon.plugins.color night-light-temperature 4200temperature: 6500 = neutral, lower = warmer. 4000–4200 = comfortable warm.- GUI alternative: Settings → Displays → Night Light → always on + slider.
- GOTCHA (observed): gsd-color may silently set
night-light-enabledback tofalsewhen the other keys change. Always re-verify and set it LAST. - Prefer the VCGT temperature from §2 instead — same warmth, no Night Light
flakiness, survives reboots.
2. gnome-gamma-tool (gamma / temperature / contrast / brightness) — persistent via VCGT
Works on GNOME Wayland by cloning the active ICC profile and adding a VCGT gamma
table; survives reboot and stacks with Night Light. Does NOT change saturation or
hue (VCGT limitation). Re-running the tool on GNOME 50 works (it replaces the
active profile with a new UUID and re-applies via colord).
git clone --depth 1 https://github.com/zb3/gnome-gamma-tool ~/gnome-gamma-tool
cd ~/gnome-gamma-tool
./gnome-gamma-tool.py -g 0.95 -t 5200 # FINAL (2026-08-06): warm 5200K via VCGT, night light OFF-g 0.95— gamma (0.9 = brighter/softer midtones but washed out; 0.95 is the
sweet spot; 1.0 = neutral). Per channel:-g 0.95:0.95:0.95.-t 5200— color temperature (warm, "Windows feel", works WITHOUT Night Light).
Tuning history on this setup: 4800–5300 all tested, user landed at 5200.-c 1.05— contrast (1 = default;-1inverts).-b 0.7— brightness (decrease only, max output; 1 = neutral).-bm 0.05— minimum black level.-a— apply to all monitors;-d N— display index (same order as Settings → Color).
Prerequisite check (Fedora):
python3 -c "import gi; gi.require_version('Colord','1.0'); from gi.repository import Colord"(Debian/Ubuntu needs gir1.2-colord-1.0, openSUSE typelib-1_0-Colord-1_0.)
3. Verify the profile is active
colormgr get-devicesThe active profile should show gnome-gamma-tool-<uuid>.icc under Profile 1
(original EDID profile under Profile 2).
4. Monitor OSD + DDC/CI (brightness/color) — needs proprietary NVIDIA driver
STATUS: with the proprietary NVIDIA driver DDC/CI works; with nouveau it is dead
(no monitor responds on any i2c bus). Find the display's bus:ddcutil detect → note the I2C bus: /dev/i2c-N next to Display 1.
GOTCHA: ddcutil always prints "Device /dev/i2c-0 ... EACCES" — that bus is the
GPU adapter with no display; IGNORE it, the display bus works fine.
Findings + fixes (the REAL cause of the cold/flat look):
- Color preset was 7500 K (cold!) → set to 6500 K:
ddcutil setvcp 14 0x05.
Available presets (VCP 0x14): 01=sRGB, 05=6500K, 06=7500K, 08=9300K, 0b=User 1. - Contrast was 50/100 (flat, washed out) → set to 75:
ddcutil setvcp 12 75. - Brightness was 99/100 (max — harsh white) → set to 80:
ddcutil setvcp 10 80. - After the 6500K preset, per-channel video gain (VCP 16/18/1A) auto-adjusted to
R > B (warmer at hardware level). - Save into monitor EEPROM:
ddcutil setvcp 0C 1(also via OSD menu save). - GOTCHA: switching the color preset (0x14) RESETS contrast back to 50 and the
gains — always re-apply in this order: preset → contrast → brightness → save.
After saving, values persist across power cycles. - Other commands:
ddcutil getvcp 14(check preset),ddcutil capabilities
(list features). Works on Wayland. Permissions: Fedora ships 60-ddcutil-i2c.rules
with uaccess tag (works for the logged-in user without sudo). - Manual OSD options (monitor buttons): RGB range = full (not limited), picture
mode "Warm"/"sRGB", saturation/vivid control — the only way to get
"Digital Vibrance" punch (VCGT cannot change saturation).
5. Verify after relogin / next session
One command checks everything at once (windows-look parts — see the reference):
echo "== Night Light (expect false or user-chosen)"; gsettings get org.gnome.settings-daemon.plugins.color night-light-enabled; \
gsettings get org.gnome.settings-daemon.plugins.color night-light-temperature; \
gsettings get org.gnome.settings-daemon.plugins.color night-light-schedule-automatic
echo "== Gamma profile (expect gnome-gamma-tool-*.icc under Profile 1)"; \
colormgr get-devices | grep -E 'Profile 1|Profile 2'
echo "== Monitor via DDC (expect 6500 K / 75 / 80)"; ddcutil getvcp 14 2>/dev/null | grep -iE 'current'; \
ddcutil getvcp 12 2>/dev/null | grep -iE 'current'; ddcutil getvcp 10 2>/dev/null | grep -iE 'current'
echo "== UI (expect Segoe UI 11 / Cascadia Mono 11 / Fluent-dark / win11-aero / prefer-dark / appmenu:minimize,maximize,close / blue / 1.1 / Windows-10-Fluent-Dark)"; \
gsettings get org.gnome.desktop.interface font-name; gsettings get org.gnome.desktop.interface monospace-font-name; \
gsettings get org.gnome.desktop.interface icon-theme; gsettings get org.gnome.desktop.interface cursor-theme; \
gsettings get org.gnome.desktop.interface color-scheme; gsettings get org.gnome.desktop.wm.preferences button-layout; \
gsettings get org.gnome.desktop.interface accent-color; gsettings get org.gnome.desktop.interface text-scaling-factor; \
gsettings get org.gnome.desktop.interface gtk-theme
echo "== Wallpaper (expect solid black)"; gsettings get org.gnome.desktop.background primary-color; \
gsettings get org.gnome.desktop.background picture-uri-dark; gsettings get org.gnome.desktop.background color-shading-type
echo "== Sounds (expect win11)"; gsettings get org.gnome.desktop.sound theme-name
echo "== Fonts installed"; fc-list | grep -ci segoe; fc-list | grep -ci cascadia
echo "== Extensions (expect State: ACTIVE for all 4)"; \
for u in user@example.com user@example.com blur-my-shell@aunetx user@example.com; do \
echo "$u: $(gnome-extensions info "$u" 2>/dev/null | grep -i -E 'state|состояние' | head -1)"; done
echo "== Extension schemas visible to gsettings"; gsettings list-schemas | grep -E 'dash-to-panel|arcmenu|blur-my-shell|ding' | wc -lExpected results / what each check means:
- Night Light:
falseby user choice (2026-08-06) — do NOT force it on; if user
enabled it and it flipped back tofalse(known gsd-color behavior — flips
coincide with gsd-color service restarts), re-set it LAST (see §1). - Extensions:
INITIALIZED= shell scanned them but not enabled → enable via the
gdbus call (see reference §4);ACTIVE= running. Empty output = extension dir
not scanned → relogin needed (shell only scans at startup). accent-colorreturns nothing on GNOME < 47 (fine).- Schema count should be 4+ (includes blur sub-schemas). If 0 → recreate
~/.local/share/glib-2.0/schemas/from the extensions'schemas/*.xml(reference §4). - Fonts count ≥ 1 each (Segoe UI / Cascadia). If 0 → re-run the fc-cache/install steps (reference §3).
- DDC lines:
6500 K (sl=0x05)/ contrast75/ brightness80.ddcutilprints
an EACCES warning about /dev/i2c-0 — harmless noise, the display is on another bus.
Rollback
- Night Light:
gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled false - Gamma: re-run tool with neutral values (
-g 1.0) or remove the profile viacolormgr delete-profile <profile-id>(list ids withcolormgr get-profiles). - The tool itself can be deleted after applying; the profile persists.
- Windows-look rollbacks (cursors, sounds, extensions, dark theme, sudo) —
references/windows-look-extras.md§Rollback.
Notes
- GPU matters: with NVIDIA proprietary driver,
nvidia-settingscolor controls
are X11-only and do nothing under GNOME Wayland. The proprietary driver is also
required for DDC/CI to work (nouveau: no i2c response). - The single biggest "cold/flat" fix is the monitor's own color preset (7500 K → 6500 K).
Combined stack: 6500K preset × VCGT 5000K × gamma 0.95 × DDC brightness 80 × contrast 75. - Everything here is user-scope (gsettings,
~/.local/share/icc/), no sudo needed
except for package installs and system-extension installs.