2 Commits

Author SHA1 Message Date
kenji 2de8603b49 fix(gaming): revamped how steam and gaming works
1. hyprbars are now disabled for steam
2. set float for steam extended windows (e.g., settings, friends list)
3. fix game `properties` forced to `gaming` workspace
2026-03-15 17:04:15 -05:00
kenji 13524322a2 revert(gaming): move steam back to special workspace
Reverts the recent change that moved Steam into a named workspace. Steam is now handled via a special workspace again. The Waybar module configuration has also been updated to reflect this change.
2026-03-15 09:22:00 -05:00
2 changed files with 32 additions and 30 deletions
+3 -2
View File
@@ -118,7 +118,6 @@ in {
format-icons = { format-icons = {
"music" = "󰎆"; "music" = "󰎆";
"gaming" = "󰊖"; "gaming" = "󰊖";
"steam" = "󰓓";
"default" = ""; "default" = "";
"active" = "󱓻"; "active" = "󱓻";
@@ -164,13 +163,15 @@ in {
show-special = true; show-special = true;
special-visible-only = true; special-visible-only = true;
all-outputs = true; all-outputs = true;
ignore-workspaces = ["^([0-9]+|gaming|steam|music)$"]; ignore-workspaces = ["^([0-9]+|gaming|music)$"];
format = "{icon}"; format = "{icon}";
format-icons = { format-icons = {
"special:youtube" = "󰗃"; "special:youtube" = "󰗃";
"special:steam" = "󰓓";
"special:custom" = "󱗼"; "special:custom" = "󱗼";
"special:preload" = "󱗼"; "special:preload" = "󱗼";
"youtube" = "󰗃"; "youtube" = "󰗃";
"steam" = "󰓓";
"custom" = "󱗼"; "custom" = "󱗼";
"preload" = "󱗼"; "preload" = "󱗼";
"default" = "󱗼"; "default" = "󱗼";
+29 -28
View File
@@ -4,12 +4,6 @@
myConfig, myConfig,
... ...
}: let }: let
games = [
"Deadlock"
"project8"
"citadel"
];
# Games that should have `stayfocused` applied (to avoid multi-monitor focus issues) # Games that should have `stayfocused` applied (to avoid multi-monitor focus issues)
stayFocusedGames = [ stayFocusedGames = [
"Deadlock" "Deadlock"
@@ -19,18 +13,11 @@
mkGameRules = selector: [ mkGameRules = selector: [
"monitor 0, ${selector}" "monitor 0, ${selector}"
"workspace name:gaming, ${selector}"
"fullscreen, ${selector}" "fullscreen, ${selector}"
"immediate, ${selector}" "immediate, ${selector}"
"tile, ${selector}"
]; ];
manualGameRules = lib.flatten (map (
game:
(mkGameRules "title:^(${game})$")
++ (mkGameRules "class:^(${game})$")
)
games);
stayFocusedRules = lib.flatten (map ( stayFocusedRules = lib.flatten (map (
game: [ game: [
"stayfocused, title:^(${game})$" "stayfocused, title:^(${game})$"
@@ -61,39 +48,53 @@ in {
wayland.windowManager.hyprland.settings = { wayland.windowManager.hyprland.settings = {
workspace = [ workspace = [
"name:gaming, monitor:0, default:true" "name:gaming, monitor:0, default:true"
"name:steam, monitor:0, default:true"
]; ];
exec-once = [ exec-once = [
# No longer launching steam on startup "[workspace special:steam silent] uwsm app -- steam"
# "[workspace special:steam silent] uwsm app -- steam"
]; ];
bindd = [ bindd = [
# "SUPER, A, Toggle Steam, togglespecialworkspace, steam" "SUPER, A, Toggle Steam, togglespecialworkspace, steam"
# "SUPER SHIFT, A, Move to Steam Special Workspace, movetoworkspace, special:steam" "SUPER SHIFT, A, Move to Steam Special Workspace, movetoworkspace, special:steam"
"SUPER, G, Switch to Gaming Workspace, workspace, name:gaming" "SUPER, G, Switch to Gaming Workspace, workspace, name:gaming"
"SUPER, A, Switch to Steam Workspace, workspace, name:steam"
]; ];
windowrulev2 = windowrulev2 =
[ [
# --- STEAM LAUNCHER RULES --- "plugin:hyprbars:nobar, class:^(steam)$"
"workspace name:steam, class:^(steam)$" "plugin:hyprbars:nobar, class:^(steam_app_\\d+)$"
# "workspace special:steam silent, class:^(steam)$"
# --- STEAM GENERAL RULES ---
# Default ALL steam class windows to float. This catches all dialogs & properties windows.
"float, class:^(steam)$"
# Suppress focus stealing from dialogs/etc.
"noinitialfocus, class:^(steam)$" "noinitialfocus, class:^(steam)$"
"suppressevent activate, class:^(steam)$" "suppressevent activate, class:^(steam)$"
# --- STEAM CLIENT OVERRIDE ---
# Override the float for the main Steam client, tile it, and move it to the special workspace.
"tile, class:^(steam)$, title:^(Steam)$"
"workspace special:steam, class:^(steam)$, title:^(Steam)$"
# --- STEAM GAME OVERRIDES ---
# Override the float for actual games and move them to the gaming workspace.
# 1. Auto-detected steam_app games (like Deadlock).
"tile, class:^(steam_app_\\d+)$"
"workspace name:gaming, class:^(steam_app_\\d+)$"
# 2. Behavior-detected manual games (e.g. ARC Raiders).
# This moves any steam game to the gaming workspace and tiles it when it becomes fullscreen.
"tile, class:^(steam)$, fullscreen:1"
"workspace name:gaming, class:^(steam)$, fullscreen:1"
] ]
# --- AUTO-DETECTED GAMES --- # Other auto-detected non-steam games
++ (mkGameRules "class:^steam_app_\\d+$")
++ (mkGameRules "class:^(gamescope)$") ++ (mkGameRules "class:^(gamescope)$")
++ (mkGameRules "class:^(lutris)$") ++ (mkGameRules "class:^(lutris)$")
++ (mkGameRules "class:^(heroic)$") ++ (mkGameRules "class:^(heroic)$")
++ (mkGameRules "class:^wine-.*$") ++ (mkGameRules "class:^wine-.*$")
++ (mkGameRules "title:^Wine .*$") ++ (mkGameRules "title:^Wine .*$")
# --- MANUAL GAMES --- # Stayfocused rules
++ manualGameRules
# --- STAYFOCUSED FOR SELECTED GAMES ---
++ stayFocusedRules; ++ stayFocusedRules;
}; };
} }