From f4a7b30366e50045f7ad9f2703780eb70d1bbbd3 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 20 Jul 2026 21:15:47 -0700 Subject: [PATCH] Retune opacity for Hyprland 0.56's corrected alpha premultiplication Hyprland 0.56 fixed premultiplication in the color-management shader (hyprwm/Hyprland#14403), so the same opacity values now render visibly more transparent than on 0.55. Raise each value to its perceptual equivalent (a^(1/2.2)) to restore the previous look. Co-Authored-By: Claude Fable 5 --- default/hypr/apps/browser.lua | 4 ++-- default/hypr/apps/terminals.lua | 2 +- default/hypr/windows.lua | 2 +- themes/kanagawa/hyprland.lua | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/default/hypr/apps/browser.lua b/default/hypr/apps/browser.lua index 81e1e92a..22df5577 100644 --- a/default/hypr/apps/browser.lua +++ b/default/hypr/apps/browser.lua @@ -1,8 +1,8 @@ -- Browser tags and styling. o.window("((google-)?[cC]hrom(e|ium)|[bB]rave-browser|[mM]icrosoft-edge|Vivaldi-stable|helium)", { tag = "+chromium-based-browser" }) o.window("([fF]irefox|zen|librewolf)", { tag = "+firefox-based-browser" }) -o.window({ tag = "chromium-based-browser" }, { tag = "-default-opacity", tile = true, opacity = "1.0 0.97" }) -o.window({ tag = "firefox-based-browser" }, { tag = "-default-opacity", opacity = "1.0 0.97" }) +o.window({ tag = "chromium-based-browser" }, { tag = "-default-opacity", tile = true, opacity = "1.0 0.985" }) +o.window({ tag = "firefox-based-browser" }, { tag = "-default-opacity", opacity = "1.0 0.985" }) -- Video apps: remove chromium browser tag so they don't get opacity applied. o.window("(^.+-youtube\\.com__.*$|^.+-app\\.zoom\\.us__wc_home.*$)", { tag = "-chromium-based-browser" }) diff --git a/default/hypr/apps/terminals.lua b/default/hypr/apps/terminals.lua index 85629187..e43139b3 100644 --- a/default/hypr/apps/terminals.lua +++ b/default/hypr/apps/terminals.lua @@ -1,3 +1,3 @@ -- Define terminal tag to style them uniformly. o.window("(Alacritty|kitty|com.mitchellh.ghostty|foot|wezterm)", { tag = "+terminal" }) -o.window({ tag = "terminal" }, { tag = "-default-opacity", opacity = "0.97 0.9" }) +o.window({ tag = "terminal" }, { tag = "-default-opacity", opacity = "0.985 0.95" }) diff --git a/default/hypr/windows.lua b/default/hypr/windows.lua index 9d09232b..03982a28 100644 --- a/default/hypr/windows.lua +++ b/default/hypr/windows.lua @@ -22,4 +22,4 @@ o.window( require("default.hypr.apps") -- Apply default opacity after apps have had a chance to opt out. -o.window({ tag = "default-opacity" }, { opacity = "0.97 0.9" }) +o.window({ tag = "default-opacity" }, { opacity = "0.985 0.95" }) diff --git a/themes/kanagawa/hyprland.lua b/themes/kanagawa/hyprland.lua index 5b619e0c..3ff083c1 100644 --- a/themes/kanagawa/hyprland.lua +++ b/themes/kanagawa/hyprland.lua @@ -15,4 +15,4 @@ hl.config({ }) -- Kanagawa backdrop is too strong for default opacity. -o.window({ tag = "terminal" }, { opacity = "0.98 0.95" }) +o.window({ tag = "terminal" }, { opacity = "0.99 0.975" })