fix(hyprland): remove enable override, use workspace_rule and table-based window_rule syntax
- Remove redundant `enable = true` from host hyprland blocks to avoid
circular module reference (Hyprland is already enabled via m3ta-home
profile flags; these files only add host-specific settings)
- Replace legacy string-format `workspace = ["1, monitor:..."]` entries
with proper `workspace_rule` attrsets (e.g. `{ workspace = "1";
monitor = "DP-1"; default = true; }`) per current Hyprland Lua docs
- Replace `_args + mkLuaInline hl.dsp.window.match(...)` window_rule
pattern with clean single-table `{ match.class = "..."; effect; }`
attrsets per Home Manager module examples
- Keep `configType = "lua"` and monitor table syntax unchanged
This commit is contained in:
+45
-68
@@ -39,11 +39,10 @@ with lib; {
|
|||||||
# ── Hyprland monitor layout ──
|
# ── Hyprland monitor layout ──
|
||||||
(mkIf config.wayland.windowManager.hyprland.enable {
|
(mkIf config.wayland.windowManager.hyprland.enable {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
|
||||||
configType = "lua";
|
configType = "lua";
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
# Startup commands (using on hook for Lua config)
|
# Startup commands — hl.on() for Lua config
|
||||||
on = {
|
on = {
|
||||||
_args = [
|
_args = [
|
||||||
"hyprland.start"
|
"hyprland.start"
|
||||||
@@ -55,8 +54,7 @@ with lib; {
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Monitor configuration — use Lua table syntax hl.monitor({...})
|
# Monitor configuration: each list entry → hl.monitor({...})
|
||||||
# Each list entry generates one hl.monitor(...) call.
|
|
||||||
monitor = [
|
monitor = [
|
||||||
{
|
{
|
||||||
_args = [
|
_args = [
|
||||||
@@ -80,87 +78,66 @@ with lib; {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
# Simple workspace→monitor bindings (legacy string format OK for hl.workspace)
|
# Workspace rules → hl.workspace_rule({ workspace, monitor, default, ... })
|
||||||
workspace = [
|
|
||||||
"1, monitor:eDP-1, default:true"
|
|
||||||
"2, monitor:eDP-1"
|
|
||||||
"3, monitor:eDP-1"
|
|
||||||
"4, monitor:HDMI-A-1"
|
|
||||||
"6, monitor:HDMI-A-1"
|
|
||||||
];
|
|
||||||
|
|
||||||
# Workspace rules with special properties → use workspace_rule + Lua table
|
|
||||||
workspace_rule = [
|
workspace_rule = [
|
||||||
{
|
{
|
||||||
_args = [
|
workspace = "1";
|
||||||
{
|
monitor = "eDP-1";
|
||||||
workspace = "5";
|
default = true;
|
||||||
monitor = "HDMI-A-1";
|
}
|
||||||
no_border = true;
|
{
|
||||||
no_rounding = true;
|
workspace = "2";
|
||||||
}
|
monitor = "eDP-1";
|
||||||
];
|
}
|
||||||
|
{
|
||||||
|
workspace = "3";
|
||||||
|
monitor = "eDP-1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "4";
|
||||||
|
monitor = "HDMI-A-1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "5";
|
||||||
|
monitor = "HDMI-A-1";
|
||||||
|
no_border = true;
|
||||||
|
no_rounding = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "6";
|
||||||
|
monitor = "HDMI-A-1";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
# Window rules — match + effect fields as Lua table
|
# Window rules → hl.window_rule({ match = { class = "..." }, effect, ... })
|
||||||
# Per Hyprland Lua docs: match fields (class, title, etc.) and
|
|
||||||
# effect fields (workspace, fullscreen, opacity, etc.) together
|
|
||||||
# in one table passed to hl.window_rule({...}).
|
|
||||||
window_rule = [
|
window_rule = [
|
||||||
{
|
{
|
||||||
_args = [
|
match.class = "dev.zed.Zed";
|
||||||
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "dev.zed.Zed" })'')
|
workspace = "1";
|
||||||
{workspace = "1";}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
_args = [
|
match.class = "Msty";
|
||||||
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "Msty" })'')
|
workspace = "1";
|
||||||
{workspace = "1";}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
_args = [
|
match.class = "com\\.obsproject\\.Studio";
|
||||||
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "com\\.obsproject\\.Studio" })'')
|
workspace = "2";
|
||||||
{workspace = "2";}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
_args = [
|
match.class = "brave-browser";
|
||||||
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "brave-browser" })'')
|
workspace = "4";
|
||||||
{
|
opacity = "1.0";
|
||||||
workspace = "4";
|
|
||||||
opacity = "1.0";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
_args = [
|
match.class = "vivaldi-stable";
|
||||||
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "vivaldi-stable" })'')
|
workspace = "4";
|
||||||
{
|
opacity = "1.0";
|
||||||
workspace = "4";
|
|
||||||
opacity = "1.0";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
_args = [
|
match.class = "steam_app_\\d+";
|
||||||
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "steam_app_\\d+" })'')
|
fullscreen = true;
|
||||||
{fullscreen = true;}
|
workspace = "5";
|
||||||
];
|
idle_inhibit = "focus";
|
||||||
}
|
|
||||||
{
|
|
||||||
_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";}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
+47
-46
@@ -39,12 +39,10 @@ with lib; {
|
|||||||
# ── Hyprland monitor layout ──
|
# ── Hyprland monitor layout ──
|
||||||
(mkIf config.wayland.windowManager.hyprland.enable {
|
(mkIf config.wayland.windowManager.hyprland.enable {
|
||||||
wayland.windowManager.hyprland = {
|
wayland.windowManager.hyprland = {
|
||||||
enable = true;
|
|
||||||
configType = "lua";
|
configType = "lua";
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
# Monitor configuration — use Lua table syntax hl.monitor({...})
|
# Monitor configuration: each list entry → hl.monitor({...})
|
||||||
# Each list entry generates one hl.monitor(...) call.
|
|
||||||
monitor = [
|
monitor = [
|
||||||
{
|
{
|
||||||
_args = [
|
_args = [
|
||||||
@@ -68,63 +66,66 @@ with lib; {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
# Simple workspace→monitor bindings (legacy string format OK for hl.workspace)
|
# Workspace rules → hl.workspace_rule({ workspace, monitor, default, ... })
|
||||||
workspace = [
|
workspace_rule = [
|
||||||
"1, monitor:DP-1, default:true"
|
{
|
||||||
"2, monitor:DP-1"
|
workspace = "1";
|
||||||
"3, monitor:DP-1"
|
monitor = "DP-1";
|
||||||
"4, monitor:DP-2"
|
default = true;
|
||||||
"5, monitor:DP-2"
|
}
|
||||||
"6, monitor:DP-2"
|
{
|
||||||
"7, monitor:DP-2"
|
workspace = "2";
|
||||||
|
monitor = "DP-1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "3";
|
||||||
|
monitor = "DP-1";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "4";
|
||||||
|
monitor = "DP-2";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "5";
|
||||||
|
monitor = "DP-2";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "6";
|
||||||
|
monitor = "DP-2";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
workspace = "7";
|
||||||
|
monitor = "DP-2";
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
# Window rules — match + effect fields as Lua table
|
# Window rules → hl.window_rule({ match = { class = "..." }, effect, ... })
|
||||||
# Per Hyprland Lua docs: match fields (class, title, etc.) and
|
|
||||||
# effect fields (workspace, fullscreen, opacity, etc.) together
|
|
||||||
# in one table passed to hl.window_rule({...}).
|
|
||||||
window_rule = [
|
window_rule = [
|
||||||
{
|
{
|
||||||
_args = [
|
match.class = "dev.zed.Zed";
|
||||||
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "dev.zed.Zed" })'')
|
workspace = "1";
|
||||||
{workspace = "1";}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
_args = [
|
match.class = "Msty";
|
||||||
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "Msty" })'')
|
workspace = "1";
|
||||||
{workspace = "1";}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
_args = [
|
match.class = "com\\.obsproject\\.Studio";
|
||||||
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "com\\.obsproject\\.Studio" })'')
|
workspace = "2";
|
||||||
{workspace = "2";}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
_args = [
|
match.class = "brave-browser";
|
||||||
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "brave-browser" })'')
|
workspace = "4";
|
||||||
{
|
opacity = "1.0";
|
||||||
workspace = "4";
|
|
||||||
opacity = "1.0";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
_args = [
|
match.class = "vivaldi-stable";
|
||||||
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "vivaldi-stable" })'')
|
workspace = "4";
|
||||||
{
|
opacity = "1.0";
|
||||||
workspace = "4";
|
|
||||||
opacity = "1.0";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
_args = [
|
match.class = "steam_app_\\d+";
|
||||||
(lib.generators.mkLuaInline ''hl.dsp.window.match({ class = "steam_app_\\d+" })'')
|
idle_inhibit = "focus";
|
||||||
{idle_inhibit = "focus";}
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user