summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/BarConfig.qml1
-rw-r--r--modules/bar/components/workspaces/OccupiedBg.qml6
-rw-r--r--modules/bar/components/workspaces/Workspace.qml6
-rw-r--r--modules/bar/components/workspaces/Workspaces.qml24
-rw-r--r--widgets/BoxLayout.qml102
5 files changed, 24 insertions, 115 deletions
diff --git a/config/BarConfig.qml b/config/BarConfig.qml
index 0173f18..1ecffc0 100644
--- a/config/BarConfig.qml
+++ b/config/BarConfig.qml
@@ -11,6 +11,7 @@ Singleton {
component Sizes: QtObject {
readonly property int height: 50
+ readonly property int innerHeight: 30
readonly property int floatingGap: 10
readonly property int floatingGapLarge: 15
}
diff --git a/modules/bar/components/workspaces/OccupiedBg.qml b/modules/bar/components/workspaces/OccupiedBg.qml
index f6998c5..7ffd436 100644
--- a/modules/bar/components/workspaces/OccupiedBg.qml
+++ b/modules/bar/components/workspaces/OccupiedBg.qml
@@ -1,9 +1,7 @@
import "root:/widgets"
-import "root:/services"
import "root:/config"
import QtQuick
import QtQuick.Layouts
-import Qt5Compat.GraphicalEffects
BoxLayout {
id: root
@@ -33,8 +31,8 @@ BoxLayout {
bottomRightRadius: roundRight
// Ugh stupid size errors on reload
- Layout.preferredWidth: root.vertical ? layout.width : root.workspaces[index]?.width ?? 1
- Layout.preferredHeight: root.vertical ? root.workspaces[index]?.height ?? 1 : layout.height
+ Layout.preferredWidth: root.vertical ? BarConfig.sizes.innerHeight : root.workspaces[index]?.width ?? 1
+ Layout.preferredHeight: root.vertical ? root.workspaces[index]?.height ?? 1 : BarConfig.sizes.innerHeight
Behavior on opacity {
NumberAnimation {
diff --git a/modules/bar/components/workspaces/Workspace.qml b/modules/bar/components/workspaces/Workspace.qml
index d8d0f4d..e404c83 100644
--- a/modules/bar/components/workspaces/Workspace.qml
+++ b/modules/bar/components/workspaces/Workspace.qml
@@ -7,12 +7,12 @@ StyledText {
required property int index
required property BoxLayout layout
required property var occupied
- readonly property bool isWorkspace: true
+ readonly property bool isWorkspace: true // Flag for finding workspace children
text: index + 1
color: BarConfig.workspaces.occupiedBg || occupied[index + 1] ? Appearance.colours.text : Appearance.colours.subtext0
horizontalAlignment: StyledText.AlignHCenter
- Layout.preferredWidth: layout.homogenous && !layout.vertical ? layout.height : -1
- Layout.preferredHeight: layout.homogenous && layout.vertical ? layout.width : -1
+ Layout.preferredWidth: layout.homogenous && !layout.vertical ? BarConfig.sizes.innerHeight : -1
+ Layout.preferredHeight: layout.homogenous && layout.vertical ? BarConfig.sizes.innerHeight : -1
}
diff --git a/modules/bar/components/workspaces/Workspaces.qml b/modules/bar/components/workspaces/Workspaces.qml
index 26dc23a..b95497c 100644
--- a/modules/bar/components/workspaces/Workspaces.qml
+++ b/modules/bar/components/workspaces/Workspaces.qml
@@ -28,8 +28,7 @@ Item {
BoxLayout {
id: layout
- padding: vertical ? [0, Appearance.padding.smaller / 2] : [Appearance.padding.smaller / 2, 0]
- anchors.centerIn: parent
+ anchors.fill: parent
homogenous: true
spacing: 0
@@ -72,8 +71,8 @@ Item {
Rectangle {
id: active
- property int currentIdx: 0
- property int lastIdx: 0
+ property int currentIdx: (Hyprland.activeWorkspace?.id ?? 1) - 1
+ property int lastIdx: currentIdx
property real leading: root.workspaces[currentIdx][root.vertical ? "y" : "x"]
property real trailing: root.workspaces[lastIdx][root.vertical ? "y" : "x"]
property real currentSize: root.workspaces[currentIdx][root.vertical ? "height" : "width"]
@@ -83,19 +82,13 @@ Item {
clip: true
x: root.vertical ? 0 : offset
y: root.vertical ? offset : 0
- width: root.vertical ? layout.width : size
- height: root.vertical ? size : layout.height
+ width: root.vertical ? BarConfig.sizes.innerHeight : size
+ height: root.vertical ? size : BarConfig.sizes.innerHeight
color: Appearance.colours.mauve
radius: Appearance.rounding.full
- Connections {
- target: Hyprland
-
- function onActiveWorkspaceChanged() {
- active.currentIdx = (Hyprland.activeWorkspace?.id ?? 1) - 1;
- active.lastIdx = active.currentIdx;
- }
- }
+ anchors.horizontalCenter: root.vertical ? parent.horizontalCenter : undefined
+ anchors.verticalCenter: root.vertical ? undefined : parent.verticalCenter
Rectangle {
id: base
@@ -113,6 +106,9 @@ Item {
y: root.vertical ? -parent.offset : 0
width: root.width
height: root.height
+
+ anchors.horizontalCenter: root.vertical ? parent.horizontalCenter : undefined
+ anchors.verticalCenter: root.vertical ? undefined : parent.verticalCenter
}
Behavior on leading {
diff --git a/widgets/BoxLayout.qml b/widgets/BoxLayout.qml
index a180d6b..2163000 100644
--- a/widgets/BoxLayout.qml
+++ b/widgets/BoxLayout.qml
@@ -1,102 +1,16 @@
import "root:/config"
-import QtQuick
import QtQuick.Layouts
-Rectangle {
- id: root
-
- default property alias children: layout.children
- readonly property alias visibleChildren: layout.visibleChildren
-
+GridLayout {
property bool vertical: false
property bool homogenous: false
- property bool animated: false
property int spacing: Appearance.spacing.small
- property var padding: 0
-
- readonly property int paddingTop: getRealPadding().top
- readonly property int paddingRight: getRealPadding().right
- readonly property int paddingBottom: getRealPadding().bottom
- readonly property int paddingLeft: getRealPadding().left
- readonly property int paddingX: getRealPadding().x
- readonly property int paddingY: getRealPadding().y
-
- function getRealPadding() {
- const pad = {};
-
- if (Array.isArray(padding)) {
- if (padding.length === 2) {
- pad.top = pad.bottom = padding[0];
- pad.left = pad.right = padding[1];
- } else if (padding.length === 3) {
- pad.top = padding[0];
- pad.left = pad.right = padding[1];
- pad.bottom = padding[2];
- } else if (padding.length === 4) {
- pad.top = padding[0];
- pad.right = padding[1];
- pad.bottom = padding[2];
- pad.left = padding[3];
- }
- } else {
- pad.top = pad.bottom = pad.left = pad.right = padding;
- }
-
- pad.x = pad.left + pad.right;
- pad.y = pad.top + pad.bottom;
-
- return pad;
- }
-
- function childAt(x: real, y: real): Item {
- return layout.childAt(x, y);
- }
-
- color: "transparent"
-
- implicitWidth: layout.implicitWidth + paddingX
- implicitHeight: layout.implicitHeight + paddingY
-
- GridLayout {
- id: layout
-
- x: root.paddingLeft
- y: root.paddingTop
-
- flow: root.vertical ? GridLayout.TopToBottom : GridLayout.LeftToRight
- uniformCellWidths: root.homogenous || root.vertical
- uniformCellHeights: root.homogenous || !root.vertical
- rows: root.vertical ? -1 : 1
- columns: root.vertical ? 1 : -1
- rowSpacing: root.spacing
- columnSpacing: root.spacing
- }
-
- Behavior on color {
- ColorAnimation {
- duration: Appearance.anim.durations.normal
- easing.type: Easing.BezierSpline
- easing.bezierCurve: Appearance.anim.curves.standard
- }
- }
-
- Behavior on implicitWidth {
- enabled: root.animated
-
- NumberAnimation {
- duration: Appearance.anim.durations.normal
- easing.type: Easing.BezierSpline
- easing.bezierCurve: Appearance.anim.curves.emphasized
- }
- }
-
- Behavior on implicitHeight {
- enabled: root.animated
- NumberAnimation {
- duration: Appearance.anim.durations.normal
- easing.type: Easing.BezierSpline
- easing.bezierCurve: Appearance.anim.curves.emphasized
- }
- }
+ flow: vertical ? GridLayout.TopToBottom : GridLayout.LeftToRight
+ uniformCellWidths: homogenous || vertical
+ uniformCellHeights: homogenous || !vertical
+ rows: vertical ? -1 : 1
+ columns: vertical ? 1 : -1
+ rowSpacing: spacing
+ columnSpacing: spacing
}