updated pi, quickshell, and ollama
This commit is contained in:
190
home/hypr/quickshell/components/QuickMenu.qml
Normal file
190
home/hypr/quickshell/components/QuickMenu.qml
Normal file
@@ -0,0 +1,190 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import Quickshell.Io
|
||||
import "../theme"
|
||||
import ".."
|
||||
|
||||
PanelWindow {
|
||||
id: quickMenu
|
||||
|
||||
WlrLayershell.layer: WlrLayer.Overlay
|
||||
WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
left: true
|
||||
}
|
||||
|
||||
margins {
|
||||
top: 0
|
||||
left: Theme.sidebarWidth
|
||||
}
|
||||
|
||||
visible: GlobalState.appleMenuVisible
|
||||
|
||||
implicitWidth: 220
|
||||
implicitHeight: menuContainer.implicitHeight
|
||||
|
||||
color: "transparent"
|
||||
|
||||
// Close on escape
|
||||
Item {
|
||||
anchors.fill: parent
|
||||
focus: true
|
||||
Keys.onEscapePressed: GlobalState.appleMenuVisible = false
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: menuContainer
|
||||
anchors.fill: parent
|
||||
color: Theme.glassBg
|
||||
border.color: Theme.glassBorder
|
||||
border.width: 1
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
padding: 8
|
||||
|
||||
component MenuItem: Item {
|
||||
id: menuItem
|
||||
width: parent.width
|
||||
height: 28
|
||||
|
||||
property string text: ""
|
||||
property string shortcut: ""
|
||||
signal triggered()
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: menuItemMouseArea.containsMouse ? Qt.rgba(Theme.accentVolt.r, Theme.accentVolt.g, Theme.accentVolt.b, 0.1) : "transparent"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
width: 2
|
||||
color: Theme.accentVolt
|
||||
visible: menuItemMouseArea.containsMouse
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 12
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: menuItem.text
|
||||
font.family: Theme.fontSans
|
||||
font.pixelSize: 13
|
||||
color: menuItemMouseArea.containsMouse ? Theme.textPrimary : Theme.textSecondary
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 12
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: menuItem.shortcut
|
||||
font.family: Theme.fontMono
|
||||
font.pixelSize: 11
|
||||
color: Theme.textMuted
|
||||
visible: text !== ""
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: menuItemMouseArea
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
onClicked: {
|
||||
menuItem.triggered()
|
||||
GlobalState.appleMenuVisible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
component MenuSeparator: Item {
|
||||
width: parent.width
|
||||
height: 17
|
||||
|
||||
Rectangle {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.leftMargin: 12
|
||||
anchors.rightMargin: 12
|
||||
height: 1
|
||||
color: Theme.glassBorder
|
||||
}
|
||||
}
|
||||
|
||||
MenuItem {
|
||||
text: "System Info..."
|
||||
onTriggered: GlobalState.aboutMacVisible = true
|
||||
}
|
||||
|
||||
MenuItem {
|
||||
text: "System Preferences..."
|
||||
onTriggered: {
|
||||
let p = Qt.createQmlObject('import Quickshell.Io; Process { command: ["pavucontrol"] }', quickMenu)
|
||||
p.running = true
|
||||
}
|
||||
}
|
||||
|
||||
MenuItem {
|
||||
text: "Activity Monitor"
|
||||
shortcut: "btop"
|
||||
onTriggered: {
|
||||
let p = Qt.createQmlObject('import Quickshell.Io; Process { command: ["foot", "-e", "btop"] }', quickMenu)
|
||||
p.running = true
|
||||
}
|
||||
}
|
||||
|
||||
MenuSeparator {}
|
||||
|
||||
MenuItem {
|
||||
text: "Sleep"
|
||||
onTriggered: {
|
||||
let p = Qt.createQmlObject('import Quickshell.Io; Process { command: ["systemctl", "suspend"] }', quickMenu)
|
||||
p.running = true
|
||||
}
|
||||
}
|
||||
|
||||
MenuItem {
|
||||
text: "Restart..."
|
||||
onTriggered: {
|
||||
let p = Qt.createQmlObject('import Quickshell.Io; Process { command: ["systemctl", "reboot"] }', quickMenu)
|
||||
p.running = true
|
||||
}
|
||||
}
|
||||
|
||||
MenuItem {
|
||||
text: "Shut Down..."
|
||||
onTriggered: {
|
||||
let p = Qt.createQmlObject('import Quickshell.Io; Process { command: ["systemctl", "poweroff"] }', quickMenu)
|
||||
p.running = true
|
||||
}
|
||||
}
|
||||
|
||||
MenuSeparator {}
|
||||
|
||||
MenuItem {
|
||||
text: "Lock Screen"
|
||||
shortcut: "Super+L"
|
||||
onTriggered: {
|
||||
let p = Qt.createQmlObject('import Quickshell.Io; Process { command: ["hyprlock"] }', quickMenu)
|
||||
p.running = true
|
||||
}
|
||||
}
|
||||
|
||||
MenuItem {
|
||||
text: "Log Out"
|
||||
shortcut: "Super+Shift+Q"
|
||||
onTriggered: {
|
||||
let p = Qt.createQmlObject('import Quickshell.Io; Process { command: ["hyprctl", "dispatch", "exit"] }', quickMenu)
|
||||
p.running = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user