Files
Modus/modules/launcher/components/power.py
T
2025-02-25 05:21:53 +05:45

90 lines
2.4 KiB
Python

from fabric.widgets.box import Box
from fabric.widgets.label import Label
from fabric.widgets.button import Button
from fabric.utils.helpers import exec_shell_command_async
import snippets.iconss as icons
class PowerMenu(Box):
def __init__(self, **kwargs):
super().__init__(
name="power-menu",
orientation="h",
spacing=10,
v_align="center",
h_align="center",
v_expand=True,
h_expand=True,
visible=True,
**kwargs,
)
self.launcher = kwargs["launcher"]
self.btn_lock = Button(
name="power-menu-button",
child=Label(name="button-label", markup=icons.lock),
on_clicked=self.lock,
)
self.btn_suspend = Button(
name="power-menu-button",
child=Label(name="button-label", markup=icons.suspend),
on_clicked=self.suspend,
)
self.btn_logout = Button(
name="power-menu-button",
child=Label(name="button-label", markup=icons.logout),
on_clicked=self.logout,
)
self.btn_reboot = Button(
name="power-menu-button",
child=Label(name="button-label", markup=icons.reboot),
on_clicked=self.reboot,
)
self.btn_shutdown = Button(
name="power-menu-button",
child=Label(name="button-label", markup=icons.shutdown),
on_clicked=self.poweroff,
)
self.buttons = [
self.btn_lock,
self.btn_suspend,
self.btn_logout,
self.btn_reboot,
self.btn_shutdown,
]
for button in self.buttons:
self.add(button)
self.show_all()
def close_menu(self):
self.launcher.close()
def lock(self, *args):
exec_shell_command_async("hyprlock --immediate")
self.close_menu()
def suspend(self, *args):
exec_shell_command_async("systemctl suspend")
self.close_menu()
def logout(self, *args):
exec_shell_command_async("hyprctl dispatch exit")
self.close_menu()
def reboot(self, *args):
exec_shell_command_async("systemctl reboot")
self.close_menu()
def poweroff(self, *args):
exec_shell_command_async("systemctl poweroff")
self.close_menu()