Files
nixos/modules/home/gaming.nix
T
kenji 428488f11d feat(hyprland): improve gaming experience and workspace navigation
- Implemented a modular gaming configuration with a local games list.
- Added dynamic window rules for games: monitor 0, dedicated 'gaming' workspace, fullscreen, immediate mode, and stayfocused.
- Enabled 'allow_tearing' to support immediate mode for reduced latency.
- Created a dedicated 'name:gaming' workspace bound to monitor 0 with a 'SUPER+G' shortcut.
- Enabled 'workspace_back_and_forth' for intuitive workspace toggling.
2026-01-16 19:36:10 -06:00

85 lines
2.1 KiB
Nix

{
pkgs,
lib,
myConfig,
...
}: let
games = [
"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);
in {
home.packages = with pkgs; [
protonup-qt
protontricks
mangohud
via
];
programs.mangohud = {
enable = true;
settings = {
full = true;
no_display = true; # Don't show by default (toggle with Shift+F12)
cpu_temp = true;
gpu_temp = true;
ram = true;
vram = true;
};
};
wayland.windowManager.hyprland.settings = {
workspace = [
"name:gaming, monitor:0, default:true"
];
exec-once = [
"[workspace special:steam silent] uwsm app -- steam"
];
bindd = [
"SUPER, T, Toggle Steam, togglespecialworkspace, steam"
"SUPER SHIFT, T, Move to Steam Special Workspace, movetoworkspace, special:steam"
"SUPER, G, Switch to Gaming Workspace, workspace, name:gaming"
];
windowrulev2 =
[
# --- STEAM 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;
};
}