Build the Panama Hyprland desktop
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
// A bar module container: rounded, hover-highlighted, optionally clickable.
|
||||
// Every widget that sits in the top bar wraps itself in one of these so
|
||||
// spacing, hover feedback and press feedback stay identical across the bar.
|
||||
|
||||
import QtQuick
|
||||
import qs.config
|
||||
|
||||
Rectangle {
|
||||
id: root
|
||||
|
||||
// Fired on left click; if nothing is connected the pill is inert and
|
||||
// shows no hover affordance.
|
||||
signal activated
|
||||
signal secondaryActivated
|
||||
signal scrolled(int delta)
|
||||
|
||||
property alias hovered: mouse.containsMouse
|
||||
property bool interactive: true
|
||||
property int horizontalPadding: 10
|
||||
|
||||
default property alias content: layout.data
|
||||
|
||||
implicitWidth: layout.implicitWidth + horizontalPadding * 2
|
||||
implicitHeight: Theme.barHeight - 8
|
||||
|
||||
radius: Theme.pillRadius
|
||||
// border.width: 0 works around QTBUG-137166, where transparent rounded
|
||||
// rectangles can render with holes at the corners.
|
||||
border.width: 0
|
||||
|
||||
color: {
|
||||
if (!interactive)
|
||||
return "transparent";
|
||||
if (mouse.pressed)
|
||||
return Theme.alpha(Theme.accent, Theme.activeAlpha);
|
||||
if (mouse.containsMouse)
|
||||
return Theme.alpha(Theme.fg, Theme.hoverAlpha);
|
||||
return "transparent";
|
||||
}
|
||||
|
||||
Behavior on color {
|
||||
ColorAnimation {
|
||||
duration: Theme.durFast
|
||||
easing.type: Easing.OutQuad
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
id: layout
|
||||
anchors.centerIn: parent
|
||||
spacing: 6
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: mouse
|
||||
anchors.fill: parent
|
||||
enabled: root.interactive
|
||||
hoverEnabled: true
|
||||
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
||||
cursorShape: root.interactive ? Qt.PointingHandCursor : Qt.ArrowCursor
|
||||
|
||||
onClicked: event => {
|
||||
if (event.button === Qt.RightButton)
|
||||
root.secondaryActivated();
|
||||
else
|
||||
root.activated();
|
||||
}
|
||||
|
||||
onWheel: event => {
|
||||
root.scrolled(event.angleDelta.y > 0 ? 1 : -1);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user