import Quickshell import Quickshell.Io // for Process import QtQuick import Quickshell.Hyprland import Quickshell.Services.SystemTray Variants { model: Quickshell.screens; delegate: Component { PanelWindow { // the screen from the screens list will be injected into this // property required property var modelData // we can then set the window's screen to the injected property screen: modelData anchors { top: true left: true right: true } implicitHeight: 30 color: "transparent" Singleton { id: root property string time Timer { id: timer interval: 1000 running: true repeat: true onTriggered: dateProc.running = true } } Text { // give the text an ID we can refer to elsewhere in the file id: clock anchors.centerIn: parent color: "white" // create a process management object Process { id: dateProc command: ["date", "+%a, %d %b %I:%M %P"] running: true stdout: StdioCollector { onStreamFinished: clock.text = this.text } } Timer { interval: 1000 running: true repeat: true onTriggered: dateProc.running = true } } Text { id: playbackTitle x: 218 color: "white" Process { id: playbackProc command: ["/home/user/.scripts/now-playing"] running: true stdout: StdioCollector { onStreamFinished: playbackTitle.text = this.text } } Timer { interval: 300 running: true repeat: true onTriggered: playbackProc.running = true } } ListView { width: 200; height: 400 x: 120 model: Hyprland.focusedWorkspace delegate: Text { color: "white" required property HyprlandWorkspace modelData text: modelData.name } } Row { x: 2035 spacing: 8 Repeater { model: SystemTray.items Image { required property SystemTrayItem modelData source: modelData.icon width: 20; height: 20 } } } Text { id: updateCount x: 2270 color: "white" Process { id: updateProc command: ["/home/user/.scripts/check-update"] running: true stdout: StdioCollector { onStreamFinished: updateCount.text = this.text } } } } } }