power menu!!!
This commit is contained in:
parent
7a1bed7d89
commit
3d3381ea15
5 changed files with 144 additions and 1 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import "bar"
|
||||
import "powermenu"
|
||||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Hyprland
|
||||
|
|
@ -14,5 +15,6 @@ Variants {
|
|||
required property ShellScreen modelData
|
||||
|
||||
Bar {}
|
||||
PowerMenu {}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
import qs.services
|
||||
import qs.widgets
|
||||
import Quickshell
|
||||
|
||||
|
|
@ -11,4 +12,10 @@ Scope {
|
|||
console.log("Launcher shortcut pressed");
|
||||
}
|
||||
}
|
||||
|
||||
LuxShortcut {
|
||||
name: 'power-menu'
|
||||
description: 'Open the Power Menu'
|
||||
onPressed: Visibility.powermenu = !Visibility.powermenu
|
||||
}
|
||||
}
|
||||
|
|
|
|||
127
modules/powermenu/PowerMenu.qml
Normal file
127
modules/powermenu/PowerMenu.qml
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
pragma ComponentBehavior: Bound
|
||||
|
||||
import qs.config
|
||||
import qs.services
|
||||
import qs.widgets
|
||||
import Quickshell.Hyprland
|
||||
import Quickshell.Io
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Widgets
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
StyledWindow {
|
||||
id: root
|
||||
name: "powermenu"
|
||||
|
||||
visible: Visibility.powermenu
|
||||
implicitWidth: rect.width
|
||||
implicitHeight: rect.height
|
||||
|
||||
WlrLayershell.layer: WlrLayer.Top
|
||||
WlrLayershell.keyboardFocus: root.visible ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None
|
||||
|
||||
Process {
|
||||
id: process
|
||||
}
|
||||
|
||||
WrapperRectangle {
|
||||
id: rect
|
||||
|
||||
color: Theme.palette.base300
|
||||
margin: 14
|
||||
radius: 8
|
||||
|
||||
HyprlandFocusGrab {
|
||||
active: Visibility.powermenu
|
||||
windows: [root]
|
||||
onCleared: {
|
||||
Visibility.powermenu = false;
|
||||
}
|
||||
}
|
||||
|
||||
StyledListView {
|
||||
id: list
|
||||
|
||||
Layout.fillWidth: true
|
||||
|
||||
focus: Visibility.powermenu
|
||||
Keys.onEscapePressed: event => {
|
||||
event.accepted = true;
|
||||
root.visible = false;
|
||||
}
|
||||
Keys.onEnterPressed: event => {
|
||||
event.accepted = true;
|
||||
console.log(list.currentItem.command);
|
||||
}
|
||||
Keys.onUpPressed: event => {
|
||||
event.accepted = true;
|
||||
list.decrementCurrentIndex();
|
||||
}
|
||||
Keys.onDownPressed: event => {
|
||||
event.accepted = true;
|
||||
list.incrementCurrentIndex();
|
||||
}
|
||||
|
||||
model: [
|
||||
{
|
||||
text: " Logout",
|
||||
command: "hyprctl dispatch exit"
|
||||
},
|
||||
{
|
||||
text: " Reboot",
|
||||
command: "systemctl reboot"
|
||||
},
|
||||
{
|
||||
text: " Shutdown",
|
||||
command: "systemctl poweroff"
|
||||
}
|
||||
]
|
||||
|
||||
spacing: 8
|
||||
|
||||
implicitWidth: 220
|
||||
implicitHeight: 185
|
||||
|
||||
highlightMoveDuration: 1000
|
||||
highlightResizeDuration: 0
|
||||
highlight: Rectangle {
|
||||
radius: 8
|
||||
color: Theme.palette.primary
|
||||
}
|
||||
|
||||
onCurrentItemChanged: {
|
||||
process.command = ["sh", "-c", list.currentItem.modelData.command];
|
||||
}
|
||||
|
||||
delegate: StyledText {
|
||||
id: button
|
||||
required property var modelData
|
||||
required property int index
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
||||
MouseArea {
|
||||
hoverEnabled: true
|
||||
anchors.fill: button
|
||||
onEntered: {
|
||||
console.log("blyat");
|
||||
list.currentIndex = button.index;
|
||||
}
|
||||
onClicked: {
|
||||
console.log(process.command);
|
||||
process.running = true;
|
||||
// process.startDetached();
|
||||
}
|
||||
}
|
||||
|
||||
padding: 16
|
||||
color: list.currentIndex == index ? Theme.palette.primarycontent : Theme.palette.basecontent
|
||||
text: modelData.text
|
||||
font.pixelSize: 18
|
||||
font.bold: true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@ import qs.widgets
|
|||
import Quickshell
|
||||
|
||||
Singleton {
|
||||
property bool powermenu
|
||||
property StyledPopupWindow activePopup
|
||||
|
||||
function togglePopup(popup: StyledPopupWindow) {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,12 @@ import qs.config
|
|||
import QtQuick
|
||||
|
||||
Text {
|
||||
color: Theme.palette.basecontent
|
||||
font.family: Theme.fontFamily
|
||||
color: Theme.palette.basecontent
|
||||
Behavior on color {
|
||||
ColorAnimation {
|
||||
duration: 200
|
||||
easing.type: Easing.InOutQuad
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue