Files
nwg-panel/nwg_panel/modules/menu_start.py
2024-02-20 01:29:38 +01:00

79 lines
3.1 KiB
Python

#!/usr/bin/env python3
import os
from gi.repository import Gtk
import subprocess
from nwg_panel.tools import check_key, update_image, cmd_through_compositor
class MenuStart(Gtk.Button):
def __init__(self, panel, icons_path=""):
Gtk.Button.__init__(self)
self.set_always_show_image(True)
self.panel = panel
check_key(panel, "menu-start-settings", {})
self.settings = panel["menu-start-settings"]
self.set_property("name", "button-start")
check_key(self.settings, "icon-size-button", 16)
check_key(self.settings, "run-through-compositor", True)
image = Gtk.Image()
update_image(image, "nwg-shell", self.settings["icon-size-button"], icons_path)
self.set_image(image)
self.connect("clicked", self.on_click)
self.show()
def on_click(self, button):
cmd = "nwg-menu"
if self.settings["cmd-lock"] != "swaylock -f -c 000000":
cmd += " -cmd-lock '{}'".format(self.settings["cmd-lock"])
if self.settings["cmd-logout"] != "swaymsg exit":
cmd += " -cmd-logout '{}'".format(self.settings["cmd-logout"])
if self.settings["cmd-restart"] != "systemctl reboot":
cmd += " -cmd-restart '{}'".format(self.settings["cmd-restart"])
if self.settings["cmd-shutdown"] != "systemctl -i poweroff":
cmd += " -cmd-shutdown '{}'".format(self.settings["cmd-shutdown"])
if self.settings["autohide"]:
cmd += " -d"
if self.settings["file-manager"] != "thunar":
cmd += " -fm {}".format(self.settings["file-manager"])
if self.panel["menu-start"] == "right":
cmd += " -ha {}".format(self.panel["menu-start"])
if self.settings["icon-size-large"] != 32:
cmd += " -isl {}".format(self.settings["icon-size-large"])
if self.settings["icon-size-small"] != 16:
cmd += " -iss {}".format(self.settings["icon-size-small"])
if self.settings["margin-bottom"] > 0:
cmd += " -mb {}".format(self.settings["margin-bottom"])
if self.settings["margin-left"] > 0:
cmd += " -ml {}".format(self.settings["margin-left"])
if self.settings["margin-right"] > 0:
cmd += " -mr {}".format(self.settings["margin-right"])
if self.settings["margin-top"] > 0:
cmd += " -mt {}".format(self.settings["margin-top"])
if self.panel["output"]:
cmd += " -o {}".format(self.panel["output"])
if self.settings["padding"] != 2:
cmd += " -padding {}".format(self.settings["padding"])
if self.settings["terminal"] != "foot":
cmd += " -term {}".format(self.settings["terminal"])
if self.panel["position"] != "bottom":
cmd += " -va {}".format(self.panel["position"])
if self.settings["run-through-compositor"]:
if os.getenv("SWAYSOCK"):
cmd += " -wm sway"
elif os.getenv("HYPRLAND_INSTANCE_SIGNATURE"):
cmd += " -wm hyprland"
cmd = cmd_through_compositor(cmd)
print(f"Executing: {cmd}")
subprocess.Popen('{}'.format(cmd), shell=True)