// Copyright (C) 2026 Danilo M. // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as // published by the Free Software Foundation. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // 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 ipc call games toggle` IpcHandler { target: "games" function toggle() { games.open = !games.open; } } }