diff --git a/VulcanBoard.py b/VulcanBoard.py index e64c74c..1f6ec1e 100644 --- a/VulcanBoard.py +++ b/VulcanBoard.py @@ -20,6 +20,7 @@ from os import path, getenv, name import subprocess import sys from dataclasses import dataclass +from argparse import ArgumentParser import yaml from termcolor import colored @@ -40,7 +41,7 @@ def log(message: str, color="green") -> None: print(colored("[*] {}".format(message), color)) # pyright: ignore -def get_config_path(): +def get_default_config_path(): if name == "nt": return path.join(getenv("APPDATA", ""), "VulcanBoard", "config.yml") xdg_config_home = getenv("XDG_CONFIG_HOME", path.expanduser("~/.config")) @@ -59,6 +60,35 @@ def is_valid_hexcolor(hexcolor: str) -> bool: return True +@dataclass +class CmdlineArgs: + use_fullscreen: bool + config_path: str + + +def parse_argv() -> CmdlineArgs: + parser = ArgumentParser( + prog="VulcanBoard", + description="a hotkey board for desktop touchscreens", + ) + parser.add_argument( + "-f", + "--fullscreen", + action="use_fullscreen", + help="open hotkey deck in fullscreen mode", + ) + parser.add_argument( + "-c", + "--config-file", + type=str, + help="specify the configuration file to use", + default=get_default_config_path(), + ) + + args = parser.parse_args() + return CmdlineArgs(args.fullscreen, args.config_path) + + @dataclass class Config: columns: int @@ -137,7 +167,7 @@ class ConfigLoader: class VulcanBoardApp(App): def build(self) -> GridLayout: - config = ConfigLoader(get_config_path()) + config = ConfigLoader(get_default_config_path()) button_map = { (btn["position"][0], btn["position"][1]): btn