From 54b253099d4a958252949a5d68b4a3dcef4c3584 Mon Sep 17 00:00:00 2001 From: bbedward Date: Sun, 7 Dec 2025 21:03:24 -0500 Subject: [PATCH] dankinstall: update hyprland syntax fixes #913 --- core/internal/config/deployer_test.go | 3 +- core/internal/config/embedded/hyprland.conf | 142 ++++++++++++++++---- 2 files changed, 121 insertions(+), 24 deletions(-) diff --git a/core/internal/config/deployer_test.go b/core/internal/config/deployer_test.go index 36f4bec5..79c3178a 100644 --- a/core/internal/config/deployer_test.go +++ b/core/internal/config/deployer_test.go @@ -496,7 +496,8 @@ func TestHyprlandConfigStructure(t *testing.T) { assert.Contains(t, HyprlandConfig, "exec-once = dms run") assert.Contains(t, HyprlandConfig, "bind = $mod, T, exec,") assert.Contains(t, HyprlandConfig, "bind = $mod, space, exec, dms ipc call spotlight toggle") - assert.Contains(t, HyprlandConfig, "windowrulev2 = noborder, class:^(com\\.mitchellh\\.ghostty)$") + assert.Contains(t, HyprlandConfig, "windowrule {") + assert.Contains(t, HyprlandConfig, "match:class = ^(com\\.mitchellh\\.ghostty)$") } func TestGhosttyConfigStructure(t *testing.T) { diff --git a/core/internal/config/embedded/hyprland.conf b/core/internal/config/embedded/hyprland.conf index 4c040390..2927e03b 100644 --- a/core/internal/config/embedded/hyprland.conf +++ b/core/internal/config/embedded/hyprland.conf @@ -100,36 +100,132 @@ misc { # ================== # WINDOW RULES # ================== -windowrulev2 = tile, class:^(org\.wezfurlong\.wezterm)$ +windowrule { + name = windowrule-1 + tile = on + match:class = ^(org\.wezfurlong\.wezterm)$ + border_size = 0 +} -windowrulev2 = rounding 12, class:^(org\.gnome\.) -windowrulev2 = noborder, class:^(org\.gnome\.) -windowrulev2 = tile, class:^(gnome-control-center)$ -windowrulev2 = tile, class:^(pavucontrol)$ -windowrulev2 = tile, class:^(nm-connection-editor)$ +windowrule { + name = windowrule-2 + rounding = 12 + match:class = ^(org\.gnome\.) + border_size = 0 +} -windowrulev2 = float, class:^(gnome-calculator)$ -windowrulev2 = float, class:^(galculator)$ -windowrulev2 = float, class:^(blueman-manager)$ -windowrulev2 = float, class:^(org\.gnome\.Nautilus)$ -windowrulev2 = float, class:^(steam)$ -windowrulev2 = float, class:^(xdg-desktop-portal)$ -windowrulev2 = noborder, class:^(org\.wezfurlong\.wezterm)$ -windowrulev2 = noborder, class:^(Alacritty)$ -windowrulev2 = noborder, class:^(zen)$ -windowrulev2 = noborder, class:^(com\.mitchellh\.ghostty)$ -windowrulev2 = noborder, class:^(kitty)$ -windowrulev2 = float, class:^(firefox)$, title:^(Picture-in-Picture)$ -windowrulev2 = float, class:^(zoom)$ +windowrule { + name = windowrule-3 + tile = on + match:class = ^(gnome-control-center)$ +} -# DMS windows floating by default -windowrulev2 = float, class:^(org.quickshell)$ -windowrulev2 = opacity 0.9 0.9, floating:0, focus:0 +windowrule { + name = windowrule-4 + tile = on + match:class = ^(pavucontrol)$ +} -layerrule = noanim, ^(quickshell)$ +windowrule { + name = windowrule-5 + tile = on + match:class = ^(nm-connection-editor)$ +} + + +windowrule { + name = windowrule-6 + float = on + match:class = ^(gnome-calculator)$ +} + +windowrule { + name = windowrule-7 + float = on + match:class = ^(galculator)$ +} + +windowrule { + name = windowrule-8 + float = on + match:class = ^(blueman-manager)$ +} + +windowrule { + name = windowrule-9 + float = on + match:class = ^(org\.gnome\.Nautilus)$ +} + +windowrule { + name = windowrule-10 + float = on + match:class = ^(steam)$ +} + +windowrule { + name = windowrule-11 + float = on + match:class = ^(xdg-desktop-portal)$ +} + + + +windowrule { + name = windowrule-12 + border_size = 0 + match:class = ^(Alacritty)$ +} + +windowrule { + name = windowrule-13 + border_size = 0 + match:class = ^(zen)$ +} + +windowrule { + name = windowrule-14 + border_size = 0 + match:class = ^(com\.mitchellh\.ghostty)$ +} + +windowrule { + name = windowrule-15 + border_size = 0 + match:class = ^(kitty)$ +} + + +windowrule { + name = windowrule-16 + float = on + match:class = ^(firefox)$ + match:title = ^(Picture-in-Picture)$ +} + +windowrule { + name = windowrule-17 + float = on + match:class = ^(zoom)$ +} + + +windowrule { + name = windowrule-18 + opacity = 0.9 0.9 + match:float = 0 + match:focus = 0 +} + + +layerrule { + name = layerrule-1 + no_anim = on + match:namespace = ^(quickshell)$ +} # ================== # KEYBINDINGS