diff options
Diffstat (limited to 'games/shell.qml')
| -rw-r--r-- | games/shell.qml | 18 |
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" |
