feat(gaming): unify and automate game window rules
Refactors 'modules/home/gaming.nix' to use a unified 'mkGameRules' function. Applies full gaming rules (monitor 0, workspace gaming, immediate, fullscreen) to: - Steam apps (class:^steam_app_\d+$) - Gamescope, Lutris, Heroic - Wine/Proton windows Preserves manual overrides in the 'games' list.
This commit is contained in:
+25
-31
@@ -8,22 +8,20 @@
|
||||
"Deadlock"
|
||||
];
|
||||
|
||||
# Generate monitor rules for each game in the config
|
||||
gameRules =
|
||||
lib.flatten (map (game: [
|
||||
"monitor 0, title:^(${game})$"
|
||||
"workspace name:gaming, title:^(${game})$"
|
||||
"fullscreen, title:^(${game})$"
|
||||
"immediate, title:^(${game})$"
|
||||
"stayfocused, title:^(${game})$"
|
||||
|
||||
"monitor 0, class:^(${game})$"
|
||||
"workspace name:gaming, class:^(${game})$"
|
||||
"fullscreen, class:^(${game})$"
|
||||
"immediate, class:^(${game})$"
|
||||
"stayfocused, class:^(${game})$"
|
||||
])
|
||||
games);
|
||||
mkGameRules = selector: [
|
||||
"monitor 0, ${selector}"
|
||||
"workspace name:gaming, ${selector}"
|
||||
"fullscreen, ${selector}"
|
||||
"immediate, ${selector}"
|
||||
"stayfocused, ${selector}"
|
||||
];
|
||||
|
||||
manualGameRules = lib.flatten (map (
|
||||
game:
|
||||
(mkGameRules "title:^(${game})$")
|
||||
++ (mkGameRules "class:^(${game})$")
|
||||
)
|
||||
games);
|
||||
in {
|
||||
home.packages = with pkgs; [
|
||||
protonup-qt
|
||||
@@ -61,24 +59,20 @@ in {
|
||||
|
||||
windowrulev2 =
|
||||
[
|
||||
# --- STEAM RULES ---
|
||||
# --- STEAM LAUNCHER RULES ---
|
||||
"workspace special:steam silent, class:^(steam)$"
|
||||
"noinitialfocus, class:^(steam)$"
|
||||
"suppressevent activate, class:^(steam)$"
|
||||
|
||||
# --- GAMING RULES ---
|
||||
"fullscreen, class:^steam_app_\d+$"
|
||||
"monitor 0, class:^steam_app_\d+$"
|
||||
"workspace name:gaming, class:^steam_app_\d+$"
|
||||
"immediate, class:^steam_app_\d+$"
|
||||
"stayfocused, class:^steam_app_\d+$"
|
||||
|
||||
"fullscreen, class:^(gamescope)$"
|
||||
"fullscreen, class:^(lutris)$"
|
||||
"fullscreen, class:^(heroic)$"
|
||||
"fullscreen, class:^wine-.*$"
|
||||
"fullscreen, title:^Wine .*$"
|
||||
]
|
||||
++ gameRules;
|
||||
# --- AUTO-DETECTED GAMES ---
|
||||
++ (mkGameRules "class:^steam_app_\\d+$")
|
||||
++ (mkGameRules "class:^(gamescope)$")
|
||||
++ (mkGameRules "class:^(lutris)$")
|
||||
++ (mkGameRules "class:^(heroic)$")
|
||||
++ (mkGameRules "class:^wine-.*$")
|
||||
++ (mkGameRules "title:^Wine .*$")
|
||||
# --- MANUAL GAMES ---
|
||||
++ manualGameRules;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user