from std/osproc import execProcess from std/strformat import fmt import sharedModule, std/os proc enableGlobalMenus(): int = try: moveFile("/usr/lib/vala-panel/appmenu-registrar.disabled", "/usr/lib/vala-panel/appmenu-registrar") removeFile("/usr/share/libalpm/hooks/disable-global-menu.hook") except: return 1 proc disableGlobalMenus(): int = try: moveFile("/usr/lib/vala-panel/appmenu-registrar", "/usr/lib/vala-panel/appmenu-registrar.disabled") if not fileExists("/usr/share/libalpm/hooks/disable-global-menu.hook"): createDir("/usr/share/libalpm/hooks") copyFileWithPermissions("/usr/share/tromjaro-layout-switcher/disable-global-menu.hook", "/usr/share/libalpm/hooks/disable-global-menu.hook") discard runCommand("/usr/bin/killall", ["appmenu-registrar"]) except: return 1 proc showHelp() = let executableName = paramStr(0).extractFilename() echo fmt""" Usage: {executableName} <option> Options: enable enable global menus disable disable global menus""" if execProcess("/usr/bin/id", args=["--user"], options={}) != "0\n": echo "Run this program as root." quit(1) var exitCode: int if paramCount() < 1: if isGlobalMenuEnabled(): exitCode = disableGlobalMenus() else: exitCode = enableGlobalMenus() else: case paramStr(1) of "enable": if isGlobalMenuEnabled(): echo "Global menus are already enabled." exitCode = 0 else: exitCode = enableGlobalMenus() of "disable": if not isGlobalMenuEnabled(): echo "Global menus are already disabled." exitCode = 0 else: exitCode = disableGlobalMenus() else: showHelp() quit(exitCode)