diff --git a/dot_config/hypr/looknfeel.lua b/dot_config/hypr/looknfeel.lua index 4d71efc..889ef95 100644 --- a/dot_config/hypr/looknfeel.lua +++ b/dot_config/hypr/looknfeel.lua @@ -1,4 +1,56 @@ -- Change the default Omarchy look'n'feel. +-- +-- Load order is Omarchy defaults -> current theme's hyprland.lua -> this file +-- (see $OMARCHY_PATH/default/hypr/omarchy.lua), so whatever is set here is the +-- last writer and wins over the theme. That is the point of this file: a theme +-- picks colours, the compositor's feel stays ours. + +-- Omarchy 4's decoration defaults, pinned explicitly. +-- +-- Stock quattro is flat and cheap: rounding 0, blur off, shadow off +-- ($OMARCHY_PATH/default/hypr/looknfeel.lua). Most third-party themes ship a +-- hyprland.lua that turns glass on instead -- Cyberdream and Spectra both did -- +-- and on this box that is a bad trade: blur at size 6 / 3 passes over an eDP +-- panel plus a 5K Studio Display is real frame time on an iGPU sharing system +-- memory, and rounded corners plus per-window opacity make the Chromium and +-- Electron surfaces (which cannot paint a transparent background themselves) +-- show wallpaper where page background should be. +-- +-- Turning blur off globally also neutralises any layer_rule blur a theme adds +-- for the Quickshell surfaces: a layer rule cannot blur while +-- decoration:blur:enabled is false. +hl.config({ + decoration = { + rounding = 0, + + blur = { + enabled = false, + }, + + shadow = { + enabled = false, + }, + }, + + group = { + groupbar = { + -- Square tab plates, to match rounding = 0 above. + gradient_rounding = 0, + }, + }, +}) + +-- Omarchy tags every mapped window `default-opacity` and fades it with this +-- rule; themes re-issue it with deeper values (Cyberdream used 0.98 / 0.92). +-- Window rules are last-match-wins, so restating the default here puts every +-- window that did not explicitly opt out of the tag back on stock fade. +-- Terminals keep their own alpha (kitty's `background_opacity`) on top of it. +o.window({ tag = "default-opacity" }, { opacity = "0.985 0.96" }) + +-- Themes are also free to re-enable the workspace slide (Spectra sets +-- `workspaces` with its "flow" bezier); Omarchy's default is off. Restate it. +-- workspacesIn/workspacesOut are not overridden anywhere, so they inherit this. +hl.animation({ leaf = "workspaces", enabled = false }) -- https://wiki.hypr.land/Configuring/Basics/Variables/#general -- hl.config({ @@ -13,18 +65,6 @@ -- }, -- }) --- https://wiki.hypr.land/Configuring/Basics/Variables/#decoration --- hl.config({ --- decoration = { --- -- Use round window corners. --- rounding = 8, --- --- -- Dim unfocused windows (0.0 = no dim, 1.0 = fully dimmed). --- dim_inactive = true, --- dim_strength = 0.15, --- }, --- }) - -- https://wiki.hypr.land/Configuring/Basics/Variables/#animations -- hl.config({ -- animations = { @@ -33,13 +73,6 @@ -- }, -- }) --- The Spectra theme re-enables the workspace slide (its hyprland.lua sets --- `workspaces` enabled with the "flow" bezier), overriding Omarchy's default --- `hl.animation({ leaf = "workspaces", enabled = false })`. This file loads --- after the theme, so turn it back off here. workspacesIn/workspacesOut are --- not overridden anywhere, so they inherit this. -hl.animation({ leaf = "workspaces", enabled = false }) - -- https://wiki.hypr.land/Configuring/Basics/Variables/#layout -- hl.config({ -- layout = { @@ -55,51 +88,3 @@ hl.animation({ leaf = "workspaces", enabled = false }) -- column_width = 0.97, -- }, -- }) - --- hyprglass (Apple-style liquid glass) is loaded, but the Spectra theme owns --- blur now: ~/.config/omarchy/themes/spectra/hyprland.lua enables --- decoration:blur for windows and a layer_rule for the Quickshell surfaces. --- Two blur passes over the same surface just costs GPU time, so hyprglass's --- layer pass stays off here. The namespaces it used to whitelist (waybar, --- swaync, quickshell:bezel) do not exist under Omarchy 4 anyway -- the shell is --- Quickshell under omarchy-bar / omarchy-menu / omarchy-notifications / ... --- To hand the shell surfaces back to hyprglass: set layers.enabled = 1, restore --- the hg.layer() calls below with the omarchy-* namespaces, and drop those same --- namespaces from the theme's hl.layer_rule. -if hl.plugin.hyprglass then - local hg = hl.plugin.hyprglass - - hg.config({ - default_theme = "dark", - default_preset = "clear", - tint_color = 0x8899aa22, - - brightness = 0.9, - dark = { brightness = 0.82 }, - light = { adaptive_boost = 0.5 }, - - layers = { enabled = 0 }, - }) - - -- Layer surfaces: each call whitelists the namespace and configures it - -- hg.layer("omarchy-bar", { preset = "subtle", mask_threshold = 0.05 }) - -- hg.layer("omarchy-notifications") - -- hg.layer("omarchy-menu", { preset = "ui", mask_threshold = 0.3 }) - - -- Presets - hg.preset("clear", { - glass_opacity = 0.8, - blur_strength = 1.5, - dark = { brightness = 0.7 }, - light = { brightness = 1.2 }, - }) - - hg.preset("contrasted", { - inherits = "high_contrast", - contrast = 1.2, - adaptive_dim = 1.5, - dark = { tint_color = 0x02142aa9 }, - }) -end - - diff --git a/dot_config/kitty/kitty.conf b/dot_config/kitty/kitty.conf index 9da4659..e4f6058 100644 --- a/dot_config/kitty/kitty.conf +++ b/dot_config/kitty/kitty.conf @@ -3,9 +3,16 @@ font_family VictorMono Nerd Font bold_italic_font auto window_padding_width 8 hide_window_decorations yes -# Fallback for themes that ship no opacity; the Omarchy theme include at the -# bottom of this file overrides it (Spectra sets 0.55). +# Transparency: kitty's own alpha, not the compositor's -- Hyprland fades a +# window uniformly (chrome included), kitty only makes the cell background +# translucent, so text stays fully opaque on top of it. background_opacity 0.9 +# Per-window blur without global blur. Hyprland 0.56 implements the staging +# protocol ext-background-effect-v1 and kitty's Wayland backend speaks it, so +# kitty asks the compositor to blur the region behind its own surface. That is +# why hypr/looknfeel.lua can keep decoration:blur:enabled = false: nothing else +# on screen pays for the blur pass. Needs background_opacity < 1. +background_blur 1 cursor_blink_interval 1 copy_on_select auto strip_trailing_spaces smart