Files
DeltaruneQuickshell/Shell/Topbar.qml
2026-03-01 10:37:07 +02:00

112 lines
2.7 KiB
QML

import QtQuick
import Quickshell
import Quickshell.Wayland
import Quickshell.Hyprland
import Quickshell.Services.Pipewire
import "Topbar"
PanelWindow {
id: topbarWindow
anchors {
top: true
left: true
right: true
}
WlrLayershell.layer: WlrLayer.Top
WlrLayershell.focusable: false
WlrLayershell.keyboardFocus: WlrKeyboardFocus.None
WlrLayershell.namespace: "deltarune-quickshell"
mask: Region {}
visible: ShellStateManager.shellOpen
exclusionMode: ExclusionMode.Ignore
aboveWindows: true
focusable: false
implicitHeight: 182
color: "#000000"
readonly property var focusedWorkspace: Hyprland.focusedWorkspace
readonly property string workspaceLabel: {
if (!focusedWorkspace)
return "WS --";
if (focusedWorkspace.id >= 0)
return "WS " + focusedWorkspace.id;
return "WS " + String(focusedWorkspace.name || "--");
}
readonly property var defaultSink: Pipewire.defaultAudioSink
readonly property string volumeLabel: {
if (!defaultSink || !defaultSink.audio)
return "VOL --";
if (defaultSink.audio.muted)
return "VOL MUTE";
return "VOL " + Math.round(defaultSink.audio.volume * 100) + "%";
}
PwObjectTracker {
objects: [Pipewire.defaultAudioSink]
}
SystemClock {
id: clock
precision: SystemClock.Minutes
}
Topbar {
manager: ShellStateManager
}
Text {
anchors.left: parent.left
anchors.leftMargin: 18
anchors.top: parent.top
anchors.topMargin: 10
color: "#ffffff"
text: topbarWindow.workspaceLabel
font.pixelSize: 36
antialiasing: false
font.family: "8bitoperator JVE"
renderType: Text.NativeRendering
font.hintingPreference: Font.PreferNoHinting
}
Column {
spacing: 2
anchors.right: parent.right
anchors.rightMargin: 18
anchors.top: parent.top
anchors.topMargin: 10
Text {
anchors.right: parent.right
color: "#ffffff"
text: topbarWindow.volumeLabel
font.pixelSize: 36
antialiasing: false
font.family: "8bitoperator JVE"
renderType: Text.NativeRendering
font.hintingPreference: Font.PreferNoHinting
}
Text {
anchors.right: parent.right
color: "#ffffff"
text: Qt.formatTime(clock.date, "hh:mm")
font.pixelSize: 36
antialiasing: false
font.family: "8bitoperator JVE"
renderType: Text.NativeRendering
font.hintingPreference: Font.PreferNoHinting
}
}
}