diff --git a/hosts/m3-ares/home.nix b/hosts/m3-ares/home.nix index 9bac583..ace5f69 100644 --- a/hosts/m3-ares/home.nix +++ b/hosts/m3-ares/home.nix @@ -37,15 +37,31 @@ with lib; { } # ── Hyprland monitor layout ── - (mkIf config.desktop.wm.hyprland.enable { + (mkIf config.wayland.windowManager.hyprland.enable { wayland.windowManager.hyprland = { enable = true; + configType = "lua"; + settings = { - exec-once = ["tuxedo-backlight"]; + # Startup commands + on = { + _args = [ + "hyprland.start" + (lib.generators.mkLuaInline '' + function() + hl.exec_cmd("tuxedo-backlight") + end + '') + ]; + }; + + # Monitor configuration monitor = [ "eDP-1,preferred,0x0,1.25" "HDMI-A-1,1920x1080@120,2560x0,1" ]; + + # Workspace assignment workspace = [ "1, monitor:eDP-1, default:true" "2, monitor:eDP-1" @@ -54,15 +70,63 @@ with lib; { "5, monitor:HDMI-A-1,border:false,rounding:false" "6, monitor:HDMI-A-1" ]; - windowrule = [ - "match:class dev.zed.Zed, workspace 1" - "match:class Msty, workspace 1" - "match:class ^(com.obsproject.Studio)$, workspace 2" - "match:class ^(brave-browser)$, workspace 4, opacity 1.0" - "match:class ^(vivaldi-stable)$, workspace 4, opacity 1.0" - "match:class ^steam_app_\\d+$, fullscreen on" - "match:class ^steam_app_\\d+$, workspace 5" - "match:class ^steam_app_\\d+$, idle_inhibit focus" + + # Window rules using attribute-set syntax (match + options) + window_rule = [ + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "dev.zed.Zed" })'') + {workspace = 1;} + ]; + } + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "Msty" })'') + {workspace = 1;} + ]; + } + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "com\\.obsproject\\.Studio" })'') + {workspace = 2;} + ]; + } + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "brave-browser" })'') + { + workspace = 4; + opacity = 1.0; + } + ]; + } + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "vivaldi-stable" })'') + { + workspace = 4; + opacity = 1.0; + } + ]; + } + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "steam_app_\\d+" })'') + {fullscreen = "on";} + ]; + } + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "steam_app_\\d+" })'') + {workspace = 5;} + ]; + } + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "steam_app_\\d+" })'') + {idle_inhibit = "focus";} + ]; + } ]; }; }; diff --git a/hosts/m3-kratos/home.nix b/hosts/m3-kratos/home.nix index d4f59a9..66e8368 100644 --- a/hosts/m3-kratos/home.nix +++ b/hosts/m3-kratos/home.nix @@ -37,14 +37,19 @@ with lib; { } # ── Hyprland monitor layout ── - (mkIf config.desktop.wm.hyprland.enable { + (mkIf config.wayland.windowManager.hyprland.enable { wayland.windowManager.hyprland = { enable = true; + configType = "lua"; + settings = { + # Monitor configuration (dual 2560x1440@144 via DisplayPort) monitor = [ "DP-1,2560x1440@144,0x0,1" "DP-2,2560x1440@144,2560x0,1" ]; + + # Workspace assignment workspace = [ "1, monitor:DP-1, default:true" "2, monitor:DP-1" @@ -54,13 +59,51 @@ with lib; { "6, monitor:DP-2" "7, monitor:DP-2" ]; - windowrule = [ - "match:class dev.zed.Zed, workspace 1" - "match:class Msty, workspace 1" - "match:class ^(com.obsproject.Studio)$, workspace 2" - "match:class ^(brave-browser)$, workspace 4, opacity 1.0" - "match:class ^(vivaldi-stable)$, workspace 4, opacity 1.0" - "match:class ^steam_app_\\d+$, idle_inhibit focus" + + # Window rules using attribute-set syntax (match + options) + window_rule = [ + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "dev.zed.Zed" })'') + {workspace = 1;} + ]; + } + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "Msty" })'') + {workspace = 1;} + ]; + } + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "com\\.obsproject\\.Studio" })'') + {workspace = 2;} + ]; + } + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "brave-browser" })'') + { + workspace = 4; + opacity = 1.0; + } + ]; + } + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "vivaldi-stable" })'') + { + workspace = 4; + opacity = 1.0; + } + ]; + } + { + _args = [ + (lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "steam_app_\\d+" })'') + {idle_inhibit = "focus";} + ]; + } ]; }; };