From ae9a80c1f012686c1f65fce7ce76fdd1b77b0b71 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Wed, 23 Sep 2026 21:08:35 +0200 Subject: ... --- accounts/gkleen@skadhi/shell/quickshell/Bar.qml | 142 ++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 accounts/gkleen@skadhi/shell/quickshell/Bar.qml (limited to 'accounts/gkleen@skadhi/shell/quickshell/Bar.qml') diff --git a/accounts/gkleen@skadhi/shell/quickshell/Bar.qml b/accounts/gkleen@skadhi/shell/quickshell/Bar.qml new file mode 100644 index 00000000..33909884 --- /dev/null +++ b/accounts/gkleen@skadhi/shell/quickshell/Bar.qml @@ -0,0 +1,142 @@ +import Quickshell +import Quickshell.Wayland +import QtQuick +import qs.Services + +PanelWindow { + id: bar + + WlrLayershell.namespace: "bar" + + property bool haveMaximizedWindow: { + let currWindowId = Array.from(NiriService.workspaces).find(ws => { + return ws.output === bar.screen.name && ws.is_active; + })?.active_window_id; + let activeWindowTileSize = Array.from(NiriService.windows).find(win => win.id == currWindowId)?.layout?.tile_size; + + if (!activeWindowTileSize) + return false; + return activeWindowTileSize[0] >= bar.screen.width && activeWindowTileSize[1] >= bar.screen.height - bar.height; + } + + anchors { + top: true + left: true + right: true + } + margins { + left: bar.haveMaximizedWindow ? 0 : 26 + 8 + right: bar.haveMaximizedWindow ? 0 : 26 + 8 + } + + implicitHeight: 21 + color: "transparent" + + property bool haveScreenshare: Array.from(NiriService.casts).some(cast => cast.target.Output?.name == bar.screen.name) + + Rectangle { + color: { + if (bar.haveScreenshare) + return bar.haveMaximizedWindow ? Qt.rgba(0.2, 0, 0, 1) : Qt.rgba(0.2, 0, 0, 0.75); + return bar.haveMaximizedWindow ? "black" : Qt.rgba(0, 0, 0, 0.75); + } + anchors.fill: parent + // bottomLeftRadius: 8 + // bottomRightRadius: 8 + } + + Row { + id: left + + height: parent.height + width: childrenRect.width + anchors.left: parent.left + anchors.leftMargin: 8 + anchors.verticalCenter: parent.verticalCenter + spacing: 8 + + WorkspaceSwitcher { + screen: bar.screen + } + } + + Row { + id: center + + height: parent.height + width: childrenRect.width + anchors.centerIn: parent + spacing: 5 + + ActiveWindowDisplay { + screen: bar.screen + maxWidth: bar.width - 2*Math.max(left.width, right.width) - 2*8 + } + } + + Row { + id: right + + height: parent.height + width: childrenRect.width + anchors.right: parent.right + anchors.rightMargin: 8 + anchors.verticalCenter: parent.verticalCenter + spacing: 0 + + WorktimeWidget {} + + KeyboardLayout {} + + Item { + visible: privacy.visible || ytDlp.visible + height: parent.height + width: 8 - 4 + } + + PrivacyWidget { + id: privacy + } + + Item { + visible: privacy.visible && ytDlp.visible + height: parent.height + width: 8 - 4 + } + + YtDlpWidget { + id: ytDlp + } + + Item { + visible: privacy.visible || ytDlp.visible + height: parent.height + width: 8 - 4 + } + + SystemTray {} + + PipewireWidget {} + + BrightnessWidget {} + + BatteryWidget {} + + LockscreenInhibitorWidget {} + + WaylandInhibitorWidget { + window: bar + } + + LidSwitchInhibitorWidget {} + + NotificationInhibitorWidget {} + + Item { + height: parent.height + width: 8 - 4 + } + + Clock {} + } +} \ No newline at end of file -- cgit v1.2.3