import Quickshell import QtQuick import QtQuick.Layouts import QtQuick.Controls import Quickshell.Wayland import Quickshell.Io import "root:/singeltons" import "root:/utils" PanelWindow { id: root property bool show: false property int selectedIndex: 0 property int buttonCount: 5 implicitWidth: 600 implicitHeight: 150 visible: show focusable: true color: "transparent" WlrLayershell.keyboardFocus: WlrKeyboardFocus.Exclusive WlrLayershell.layer: WlrLayer.Top CustomShortcut { name: "openPowermenu" description: "Open powermenu" onPressed: {root.show = true; } } function executeButton(index){ switch (index){ case 0: Quickshell.execDetached(["systemctl", "poweroff"]) break case 1: Quickshell.execDetached(["systemctl", "reboot"]) break case 2: Quickshell.execDetached(["loginctl", "lock-session"]) break case 3: Quickshell.execDetached(["hyprctl", "dispatch", "exit"]) break case 4: Quickshell.execDetached(["sh", "-c", "boot-windows && systemctl reboot"]) break } } // Main window Rectangle { anchors.fill: parent anchors.centerIn: parent focus: true color: "#363a4f" border.color: Qt.hsla(0, 0, 1, 0.2) border.width: 2 radius: 12 Keys.onPressed: (event) => { switch (event.key){ case (Qt.Key_Escape): root.show = false event.accepted = true break case (Qt.Key_Return): case (Qt.Key_Enter): root.show = false executeButton(root.selectedIndex) event.accepted = true break case (Qt.Key_Tab): case (Qt.Key_Right): root.selectedIndex = (root.selectedIndex + 1) % root.buttonCount event.accepted = true break case (Qt.Key_Left): root.selectedIndex = (root.selectedIndex - 1 + root.buttonCount) % root.buttonCount event.accepted = true break } } RowLayout { anchors.fill: parent anchors.margins: 20 PowermenuButton { active: root.selectedIndex == 0 icon: "⏻" } Item { Layout.fillWidth: true } // spacer PowermenuButton { active: root.selectedIndex == 1 icon: "" } Item { Layout.fillWidth: true } // spacer PowermenuButton { active: root.selectedIndex == 2 icon: "" } Item { Layout.fillWidth: true } // spacer PowermenuButton { active: root.selectedIndex == 3 icon: "" } Item { Layout.fillWidth: true } // spacer PowermenuButton { active: root.selectedIndex == 4 icon: "" } } } }