Files
s0wlz (Matthias Puchstein) c5f7162ebb quickshell: add initial bar config with per-monitor workspaces
- Vertical bar on DP-2 with rounded-square pills throughout
- Per-monitor workspace groups sorted by screen x position, with
  Nerd Font icons for named workspaces and apex-neon red active indicator
- Bar layout: datetime+weather top, workspaces centered, gamemode+media+notif+system bottom
- Popouts anchor to triggering icon (top-right for datetime/weather, bottom-right for media/notif/system)
- Lock command switched from hyprlock to swaylock
- Hyprland blur/ignore_alpha layerrules for quickshell namespace

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 20:00:54 +02:00

53 lines
1.6 KiB
QML

import QtQuick
import QtQuick.Layouts
import "../shared" as Shared
// Unified segmented-control pill for bar group buttons
Item {
id: root
property string groupName: ""
property color accentColor: Shared.Theme.text
property alias content: contentArea.data
readonly property bool isActive: Shared.PopoutState.active === groupName
readonly property bool isHovered: mouse.containsMouse
implicitWidth: Shared.Theme.barInnerWidth
implicitHeight: pill.height
Rectangle {
id: pill
width: parent.width
height: contentArea.implicitHeight + Shared.Theme.barPadding * 2 + 6
radius: Shared.Theme.radiusNormal
color: root.isActive
? Qt.alpha(root.accentColor, Shared.Theme.opacityLight)
: root.isHovered
? Shared.Theme.surface1
: Shared.Theme.surface0
border.width: root.isActive ? 1 : 0
border.color: Qt.alpha(root.accentColor, Shared.Theme.opacityMedium)
Behavior on color { ColorAnimation { duration: Shared.Theme.animFast } }
Behavior on border.color { ColorAnimation { duration: Shared.Theme.animFast } }
ColumnLayout {
id: contentArea
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
spacing: 2
}
}
MouseArea {
id: mouse
anchors.fill: parent
hoverEnabled: true
onClicked: {
let globalPos = root.mapToItem(null, 0, root.height / 2);
Shared.PopoutState.toggle(root.groupName, globalPos.y);
}
}
}