feat(config): enforce flat decoration, disable blur and adjust Kitty transparency defaults

This commit is contained in:
Prad Nukala committed 2026-09-04 13:24:10 -04:00
1 parent 12c9c568d7
commit cc2973e744
2 files changed
+61 -69

No files matched your search

+52 -67
View File
@@ -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
+9 -2
View File
@@ -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