Compare commits

...

3 Commits

Author SHA1 Message Date
5eaf088e6d implemented power menu 2025-10-09 16:19:55 +02:00
c14e5fcac2 Launcher no opacity & open via IPC 2025-10-09 16:19:36 +02:00
21e9db956d use only spotify for media player 2025-10-09 16:18:49 +02:00
4 changed files with 161 additions and 6 deletions

View File

@@ -16,7 +16,7 @@ PanelWindow {
right: true
}
height: 30
implicitHeight: 30
color: "transparent"
@@ -48,7 +48,7 @@ PanelWindow {
anchors.right: parent.right
anchors.rightMargin: 10
Music {
player: Mpris.players.values[0]
player: Mpris.players.values.find(e => e.identity == "Spotify")
}
}
}

View File

@@ -3,13 +3,13 @@ import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import Quickshell.Wayland
import Quickshell.Hyprland
import Quickshell.Io
import "root:/singeltons"
PanelWindow {
id: root
property bool show: true
property bool show: false
implicitWidth: 600
implicitHeight: 400
@@ -20,14 +20,18 @@ PanelWindow {
WlrLayershell.keyboardFocus: WlrKeyboardFocus.Exclusive
WlrLayershell.layer: WlrLayer.Top
HyprlandWindow.opacity: 0.9
IpcHandler {
target: "launcher"
function open(): void {root.show = true; }
}
// Main window
Rectangle {
anchors.fill: parent
anchors.centerIn: parent
color: Qt.hsla(0, 0, 1, 0.5)
color: "#363a4f"
border.color: Qt.hsla(0, 0, 1, 0.2)
border.width: 2
radius: 12

127
launcher/Powermenu.qml Normal file
View File

@@ -0,0 +1,127 @@
import Quickshell
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import Quickshell.Wayland
import Quickshell.Io
import "root:/singeltons"
PanelWindow {
id: root
property bool show: false
property int selectedIndex: 0
property int buttonCount: 4
implicitWidth: 600
implicitHeight: 400
visible: show
focusable: true
color: "transparent"
WlrLayershell.keyboardFocus: WlrKeyboardFocus.Exclusive
WlrLayershell.layer: WlrLayer.Top
IpcHandler {
target: "powermenu"
function open(): void {
root.selectedIndex = 0
root.show = true
}
function close(): void {
root.show = false
}
}
function executeButton(index){
switch (index){
case 0:
console.log("0")
break
case 1:
console.log("1")
break
case 2:
console.log("2")
break
case 3:
console.log("3")
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: ""
}
}
}
}

View File

@@ -0,0 +1,24 @@
import Quickshell
import QtQuick
Rectangle {
implicitWidth: 100
implicitHeight: 50
property bool active: false
property string icon: "?"
color: active
? "#5b6078" // Hover/focus color
: "#494d64" // Normal color
radius: 12
Text {
anchors.centerIn: parent
text: parent.icon
font.pointSize: 28
color: "#cad3f5"
}
}