pragma Singleton pragma ComponentBehavior: Bound import qs.modules.common import qs.modules.common.functions import QtQuick import Quickshell import Quickshell.Io import Quickshell.Hyprland /** * A service that provides access to Hyprland keybinds. * Uses the `get_keybinds.py` script to parse comments in config files in a certain format and convert to JSON. */ Singleton { id: root property var keybinds: [] property var keybindCategories: [] Connections { target: Hyprland function onRawEvent(event) { if (event.name == "configreloaded") { getKeybinds.running = true } } } Process { id: getKeybinds running: true command: ["hyprctl", "binds", "-j"] stdout: StdioCollector { onStreamFinished: { try { root.keybinds = JSON.parse(text) var groups = [] for (var i = 0; i < root.keybinds.length; i++) { var bind = root.keybinds[i].description var group = bind.substring(0, bind.indexOf(":")) if (!groups.includes(group) && group.length > 0) { groups.push(group) } } root.keybindCategories = groups } catch (e) { console.error("[CheatsheetKeybinds] Error parsing keybinds:", e) } } } } }