Files
dotfiles/dot_config/hypr/looknfeel.lua
T

118 lines
4.1 KiB
Lua

-- 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.
-- Flat by default, glass for terminals only.
--
-- Stock quattro is rounding 0, blur off, shadow off
-- ($OMARCHY_PATH/default/hypr/looknfeel.lua); themes that ship a hyprland.lua
-- turn all three on for every window (Cyberdream and Spectra both did), which
-- on this box is a bad trade: blur over an eDP panel plus a 5K Studio Display
-- is real frame time on an iGPU sharing system memory, and Chromium/Electron
-- windows cannot paint a transparent background, so fading them just shows
-- wallpaper where page background should be.
--
-- Blur has to be enabled globally to exist at all -- there is no positive
-- `blur` window rule, only `no_blur`, and kitty's own `background_blur` (the
-- ext-background-effect-v1 protocol, which Hyprland 0.56 does implement) is a
-- no-op while decoration:blur:enabled is false. So: switch it on here, then
-- opt every window out again except the terminals below.
hl.config({
general = {
-- Master instead of Omarchy's dwindle. Per-workspace layouts saved by
-- omarchy-hyprland-workspace-layout-toggle (~/.local/state/omarchy/
-- workspace-layouts/*.lua) still win for the workspaces they name.
layout = "master",
},
decoration = {
rounding = 0,
blur = {
enabled = true,
-- Cheaper than the themes' size 6 / 3 passes; with only terminals
-- blurred this is a handful of quads per frame, not the whole screen.
size = 5,
passes = 2,
brightness = 0.8,
contrast = 1.1,
vibrancy = 0.15,
noise = 0.01,
new_optimizations = true,
popups = 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 to
-- 0.985 / 0.96; themes deepen that (Cyberdream used 0.98 / 0.92). Rules are
-- last-match-wins, so this pins every window opaque and blur-free. An opaque
-- window has nothing visible behind it, so the pass above never runs for it.
o.window({ tag = "default-opacity" }, { opacity = "1.0 1.0", no_blur = true })
-- The exception: terminals carry their own alpha (kitty's
-- `background_opacity`, 0.9 in ~/.config/kitty/kitty.conf), so they are the one
-- surface where blurring the backdrop buys anything. Full class list because
-- the kitty hosts run under their own app-ids (kitty-herdr, kitty-tmux,
-- kitty-goliath) and Omarchy tags nothing as `terminal`.
o.window(
"^(kitty(-.*)?|Alacritty|com\\.mitchellh\\.ghostty|foot|org\\.codeberg\\.dnkl\\.foot|wezterm)$",
{ no_blur = false }
)
-- 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({
-- general = {
-- -- No gaps between windows or borders.
-- gaps_in = 0,
-- gaps_out = 0,
-- border_size = 0,
--
-- -- Change to niri-like side-scrolling layout.
-- layout = "scrolling",
-- },
-- })
-- https://wiki.hypr.land/Configuring/Basics/Variables/#animations
-- hl.config({
-- animations = {
-- -- Disable all animations.
-- enabled = false,
-- },
-- })
-- https://wiki.hypr.land/Configuring/Basics/Variables/#layout
-- hl.config({
-- layout = {
-- -- Avoid overly wide single-window layouts on wide screens.
-- single_window_aspect_ratio = { 1, 1 },
-- },
-- })
-- https://wiki.hypr.land/Configuring/Layouts/Scrolling-Layout/
-- hl.config({
-- scrolling = {
-- -- See only one column per screen instead of two.
-- column_width = 0.97,
-- },
-- })