summaryrefslogtreecommitdiff
path: root/bar/Bar.qml
blob: 2ad13d12fa892133fdcde63b9870398c2cda9b02 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
import QtQuick
import Quickshell
import QtQuick.Layouts
import qs.components
import qs.config

Scope {
	id: root

	Variants {
		model: Quickshell.screens

		IWindow {
			id: barWindow
			name: "quickshell::bar"

			anchors {
				top: true
				left: true
				right: true
			}
			implicitHeight: child.implicitHeight + Bar.topMargin * 2

			IRect {
				id: child
				radius: Bar.borderRadius
				implicitHeight: Bar.height
				implicitWidth: parent.width

				anchors {
					left: parent.left
					right: parent.mid
					fill: parent
					top: parent.top
				}

				color: "transparent"

				IRect {
					id: leftRow
					anchors {
						left: parent.left
					}
					width: leftInnerRow.width + leftInnerRow.anchors.leftMargin - leftSpacer.width + Bar.leftMargin
					height: leftInnerRow.height
					color: Qt.rgba(Colors.background3.r, Colors.background3.g, Colors.background3.b, Bar.bgTransparency)
					bottomRightRadius: Bar.moduleRadius

					Behavior on color {
						ColorAnimation {
							duration: General.animationDuration
							easing.type: Easing.InOutQuad
						}
					}
					RowLayout {
						id: leftInnerRow
						height: child.height
						spacing: Bar.leftModuleSpacing
						anchors {
							left: parent.left
							leftMargin: Bar.moduleLeftMargin + Bar.leftMargin
						}

						Workspace {
							id: workspace
							// screen: barWindow.screen // multi monitor
							// Layout.minimumWidth: 400 // FIXME
						}
						Mpris {
							id: mpris
						}
						Item {
							id: leftSpacer
							Layout.fillWidth: true
							Layout.fillHeight: true
						}
					}
				}

				Item {
					id: centerRow
					anchors.centerIn: parent

					ActiveWindow {
						id: activeWindow
						width: Math.min(implicitWidth, child.width - Math.max(leftRow.width, rightRow.width) * 2 - Bar.leftMargin - Bar.rightMargin) // we don't do child.width - leftRow.width - rightRow.width because left and right width isn't symetric, and we're centered meaning we will colide into the larger width side
					}
				}

				IRect {
					id: rightRow
					anchors.right: parent.right
					width: rightInnerRow.width + rightInnerRow.anchors.rightMargin - rightSpacer.width
					height: rightInnerRow.height
					color: Qt.rgba(Colors.background3.r, Colors.background3.g, Colors.background3.b, Bar.bgTransparency)
					bottomLeftRadius: Bar.moduleRadius

					RowLayout {
						id: rightInnerRow
						anchors {
							right: parent.right
							rightMargin: Bar.moduleRightMargin
						}
						layoutDirection: Qt.RightToLeft
						height: child.height
						spacing: Bar.rightModuleSpacing

						Power {
							id: power
						}
						// Tray {
						//     id: tray
						// }
						TimeDate {}
						Network {}
						// Temp {
						//     id: temp
						// }
						// Gpu {
						//     id: gpu
						// }
						// Memory {
						//     id: memory
						// }
						// Cpu {
						//     id: cpu
						// }
						Resources {}

						Item {
							id: rightSpacer
							Layout.fillWidth: true
							Layout.fillHeight: true
						}
					}

					Behavior on color {
						ColorAnimation {
							duration: General.animationDuration
							easing.type: Easing.InOutQuad
						}
					}
				}
			}
		}
	}
}