- 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>
53 lines
1.6 KiB
QML
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);
|
|
}
|
|
}
|
|
}
|