aboutsummaryrefslogtreecommitdiffstats
path: root/games/shell.qml
diff options
context:
space:
mode:
Diffstat (limited to 'games/shell.qml')
-rw-r--r--games/shell.qml18
1 files changed, 18 insertions, 0 deletions
diff --git a/games/shell.qml b/games/shell.qml
index c667ec4..f6ca8b3 100644
--- a/games/shell.qml
+++ b/games/shell.qml
@@ -10,11 +10,29 @@
// GNU General Public License for more details.
import Quickshell
+import Quickshell.Hyprland
import Quickshell.Io
+import QtQuick
ShellRoot {
Games { id: games }
+ // Every game Steam starts, native, Proton or a non-Steam shortcut,
+ // inherits SteamGameId; class rules miss the ones naming themselves
+ // (a Ren'Py shortcut did), so route on the window's environment.
+ Connections {
+ target: Hyprland
+ function onRawEvent(event) {
+ if (event.name !== "openwindow") return;
+ const addr = "0x" + event.data.split(",")[0];
+ Quickshell.execDetached(["sh", "-c",
+ 'pid=$(hyprctl clients -j | jq -r --arg a "$1" \'.[] | select(.address == $a) | .pid\') && ' +
+ 'grep -qz "^SteamGameId=" "/proc/$pid/environ" && ' +
+ 'hyprctl dispatch "hl.dsp.window.move({ workspace = \\"8\\", window = \\"address:$1\\" })"',
+ "sh", addr]);
+ }
+ }
+
// `qs -p <this dir> ipc call games toggle`
IpcHandler {
target: "games"