pragma Singleton pragma ComponentBehavior: Bound import "root:/modules/common" import "root:/modules/common/functions/file_utils.js" as FileUtils import QtQuick import Quickshell import Quickshell.Io import Quickshell.Wayland 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 string keybindParserPath: FileUtils.trimFileProtocol(`${Directories.config}/quickshell/scripts/hyprland/get_keybinds.py`) // property string defaultKeybindConfigPath: FileUtils.trimFileProtocol(`${Directories.config}/hypr/hyprland/keybinds.conf`) property string userKeybindConfigPath: FileUtils.trimFileProtocol(`${Directories.config}/hypr/hyprland.conf`) // property var defaultKeybinds: {"children": []} property var userKeybinds: {"children": []} property var keybinds: ({ children: [ // ...(defaultKeybinds.children ?? []), ...(userKeybinds.children ?? []), ] }) Connections { target: Hyprland function onRawEvent(event) { if (event.name == "configreloaded") { // getDefaultKeybinds.running = true getUserKeybinds.running = true } } } // Process { // id: getDefaultKeybinds // running: true // command: ["python3", root.keybindParserPath, "--path", root.defaultKeybindConfigPath,] // stdout: SplitParser { // onRead: data => { // try { // root.defaultKeybinds = JSON.parse(data) // } catch (e) { // console.error("[CheatsheetKeybinds] Error parsing keybinds:", e) // } // } // } // } Process { id: getUserKeybinds running: true command: ["python3", root.keybindParserPath, "--path", root.userKeybindConfigPath] stdout: SplitParser { onRead: data => { try { root.userKeybinds = JSON.parse(data) } catch (e) { console.error("[CheatsheetKeybinds] Error parsing keybinds:", e) } } } } }