From 287216dac2371f8c91774f02e316ef96a66a6a8d Mon Sep 17 00:00:00 2001 From: Myryk Date: Mon, 10 Jun 2024 23:27:50 +0200 Subject: [PATCH] added option to change path to keybinds --- .../modules/.configuration/user_options.js | 3 +++ .config/ags/modules/cheatsheet/keybinds.js | 21 +++++++++++++------ .config/ags/scripts/hyprland/get_keybinds.py | 5 +++++ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/.config/ags/modules/.configuration/user_options.js b/.config/ags/modules/.configuration/user_options.js index ab3d2a3e1..caad98284 100644 --- a/.config/ags/modules/.configuration/user_options.js +++ b/.config/ags/modules/.configuration/user_options.js @@ -56,6 +56,9 @@ let configOptions = { 'default': "auto", }, }, + 'configPaths': { + 'keybinds': "", + }, 'gaming': { 'crosshair': { 'size': 20, diff --git a/.config/ags/modules/cheatsheet/keybinds.js b/.config/ags/modules/cheatsheet/keybinds.js index 42618c19d..76b606253 100644 --- a/.config/ags/modules/cheatsheet/keybinds.js +++ b/.config/ags/modules/cheatsheet/keybinds.js @@ -5,13 +5,22 @@ import Widget from "resource:///com/github/Aylur/ags/widget.js"; import { IconTabContainer } from "../.commonwidgets/tabcontainer.js"; const { Box, Label, Scrollable } = Widget; -const HYPRLAND_KEYBIND_CONFIG_FILE = `${GLib.get_user_config_dir()}/hypr/hyprland/keybinds.conf`; +const HYPRLAND_KEYBIND_CONFIG_FILE = userOptions.configPaths.keybinds ? + userOptions.configPaths.keybinds : `${GLib.get_user_config_dir()}/hypr/hyprland/keybinds.conf`; const KEYBIND_SECTIONS_PER_PAGE = 3; -const keybindList = JSON.parse( - Utils.exec( - `${App.configDir}/scripts/hyprland/get_keybinds.py --path ${HYPRLAND_KEYBIND_CONFIG_FILE}`, - ), -); +const keybindListfunc = () => { + let data = Utils.exec(`${App.configDir}/scripts/hyprland/get_keybinds.py --path ${HYPRLAND_KEYBIND_CONFIG_FILE}`); + if (data == "\"error\"") { + Utils.timeout(2000, () => Utils.execAsync(['notify-send', + 'Update path to keybinds', + 'Keybinds hyprland config file not found. Check your user options.', + '-a', 'ags', + ]).catch(print)) + return { children: [] }; + } + return JSON.parse(data); +}; +const keybindList = keybindListfunc(); const keySubstitutions = { "Super": "󰖳", diff --git a/.config/ags/scripts/hyprland/get_keybinds.py b/.config/ags/scripts/hyprland/get_keybinds.py index 00bacdc21..eeb4b7ead 100755 --- a/.config/ags/scripts/hyprland/get_keybinds.py +++ b/.config/ags/scripts/hyprland/get_keybinds.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import argparse import re +import os from os.path import expandvars as os_expandvars from typing import Dict, List @@ -34,6 +35,8 @@ class Section(dict): def read_content(path: str) -> str: + if (not os.access(os_expandvars(path), os.R_OK)): + return ("error") with open(os_expandvars(path), "r") as file: return file.read() @@ -201,6 +204,8 @@ def get_binds_recursive(current_content, scope): def parse_keys(path: str) -> Dict[str, List[KeyBinding]]: global content_lines content_lines = read_content(path).splitlines() + if content_lines[0] == "error": + return "error" return get_binds_recursive(Section([], [], ""), 0)