From f22786607219edf328156c5c6932a6dbced6576c Mon Sep 17 00:00:00 2001
From: rokosun <rokosun@noreply.git.trom.tf>
Date: Mon, 1 Jan 2024 15:09:38 +0000
Subject: [PATCH] Update toggleGlobalMenu.nim

---
 toggleGlobalMenu.nim | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/toggleGlobalMenu.nim b/toggleGlobalMenu.nim
index 33cd91c..e75d60b 100644
--- a/toggleGlobalMenu.nim
+++ b/toggleGlobalMenu.nim
@@ -1,14 +1,24 @@
-from std/os import paramCount, paramStr, extractFilename
+from std/osproc import execProcess
 from std/strformat import fmt
-import sharedModule
+import sharedModule, std/os
 
 proc enableGlobalMenus(): int =
-  return runCommand("/usr/bin/env", ["SKIP_AUTOSNAP=", "/usr/bin/pacman", "-S", "--noconfirm", "vala-panel-appmenu-registrar"])
+  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 =
-  result = runCommand("/usr/bin/env", ["SKIP_AUTOSNAP=", "/usr/bin/pacman", "-R", "--noconfirm", "vala-panel-appmenu-registrar"])
-  if result == 0:
+  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()
@@ -18,6 +28,10 @@ Options:
     enable      install global menus
     disable     remove 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():