From 87ae3a63f50e8e89d7d981ec5fade3f4b2b73a25 Mon Sep 17 00:00:00 2001
From: rokosun <rokosun@noreply.git.trom.tf>
Date: Mon, 25 Dec 2023 07:54:45 +0000
Subject: [PATCH] Add toggleGlobalMenu.nim

---
 toggleGlobalMenu.nim | 44 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 toggleGlobalMenu.nim

diff --git a/toggleGlobalMenu.nim b/toggleGlobalMenu.nim
new file mode 100644
index 0000000..33cd91c
--- /dev/null
+++ b/toggleGlobalMenu.nim
@@ -0,0 +1,44 @@
+from std/os import paramCount, paramStr, extractFilename
+from std/strformat import fmt
+import sharedModule
+
+proc enableGlobalMenus(): int =
+  return runCommand("/usr/bin/env", ["SKIP_AUTOSNAP=", "/usr/bin/pacman", "-S", "--noconfirm", "vala-panel-appmenu-registrar"])
+
+proc disableGlobalMenus(): int =
+  result = runCommand("/usr/bin/env", ["SKIP_AUTOSNAP=", "/usr/bin/pacman", "-R", "--noconfirm", "vala-panel-appmenu-registrar"])
+  if result == 0:
+    discard runCommand("/usr/bin/killall", ["appmenu-registrar"])
+
+proc showHelp() =
+  let executableName = paramStr(0).extractFilename()
+  echo fmt"""
+Usage: {executableName} <option>
+Options:
+    enable      install global menus
+    disable     remove global menus"""
+
+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)