155 lines
4.3 KiB
QML
155 lines
4.3 KiB
QML
import "root:/widgets"
|
|
import "root:/services"
|
|
import "root:/config"
|
|
import "components"
|
|
import "components/workspaces"
|
|
import Quickshell
|
|
import Quickshell.Widgets
|
|
import QtQuick
|
|
|
|
StyledRect {
|
|
id: root
|
|
|
|
required property ShellScreen screen
|
|
|
|
anchors.top: parent.top
|
|
anchors.bottom: parent.bottom
|
|
|
|
implicitWidth: child.implicitWidth + BorderConfig.thickness
|
|
|
|
color: BorderConfig.colour
|
|
|
|
Component.onCompleted: Visibilities.bars[screen] = this
|
|
|
|
Item {
|
|
id: child
|
|
|
|
readonly property bool vertical: true
|
|
|
|
anchors.top: parent.top
|
|
anchors.bottom: parent.bottom
|
|
anchors.right: parent.right
|
|
|
|
implicitWidth: Math.max(osIcon.implicitWidth, workspaces.implicitWidth, activeWindow.implicitWidth, tray.implicitWidth, clock.implicitWidth, statusIcons.implicitWidth, power.implicitWidth)
|
|
|
|
OsIcon {
|
|
id: osIcon
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.top: parent.top
|
|
anchors.topMargin: Appearance.padding.large
|
|
}
|
|
|
|
ClippingRectangle {
|
|
id: workspaces
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.top: osIcon.bottom
|
|
anchors.topMargin: Appearance.spacing.normal
|
|
|
|
radius: Appearance.rounding.full
|
|
color: Colours.palette.m3surfaceContainer
|
|
|
|
implicitWidth: workspacesInner.implicitWidth + Appearance.spacing.small
|
|
implicitHeight: workspacesInner.implicitHeight + Appearance.spacing.small * 2
|
|
|
|
Workspaces {
|
|
id: workspacesInner
|
|
|
|
anchors.centerIn: parent
|
|
|
|
vertical: true
|
|
}
|
|
|
|
Behavior on color {
|
|
ColorAnimation {
|
|
duration: Appearance.anim.durations.normal
|
|
easing.type: Easing.BezierSpline
|
|
easing.bezierCurve: Appearance.anim.curves.standard
|
|
}
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.top: workspaces.bottom
|
|
anchors.bottom: activeWindow.top
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
|
|
onWheel: event => {
|
|
if (event.angleDelta.y > 0)
|
|
Audio.setVolume(Audio.volume + 0.1);
|
|
else if (event.angleDelta.y < 0)
|
|
Audio.setVolume(Audio.volume - 0.1);
|
|
}
|
|
}
|
|
|
|
ActiveWindow {
|
|
id: activeWindow
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.top: workspaces.bottom
|
|
anchors.bottom: tray.top
|
|
anchors.margins: Appearance.spacing.large
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.top: workspaces.bottom
|
|
anchors.bottom: activeWindow.top
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
|
|
onWheel: event => {
|
|
const monitor = Brightness.getMonitorForScreen(root.screen);
|
|
if (event.angleDelta.y > 0)
|
|
monitor.setBrightness(monitor.brightness + 0.1);
|
|
else if (event.angleDelta.y < 0)
|
|
monitor.setBrightness(monitor.brightness - 0.1);
|
|
}
|
|
}
|
|
|
|
Tray {
|
|
id: tray
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.bottom: clock.top
|
|
anchors.bottomMargin: Appearance.spacing.larger
|
|
}
|
|
|
|
Clock {
|
|
id: clock
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.bottom: statusIcons.top
|
|
anchors.bottomMargin: Appearance.spacing.normal
|
|
}
|
|
|
|
StyledRect {
|
|
id: statusIcons
|
|
|
|
anchors.left: parent.left
|
|
anchors.right: parent.right
|
|
anchors.bottom: power.top
|
|
anchors.bottomMargin: Appearance.spacing.normal
|
|
|
|
radius: Appearance.rounding.full
|
|
color: Colours.palette.m3surfaceContainer
|
|
|
|
implicitHeight: statusIconsInner.implicitHeight + Appearance.padding.normal * 2
|
|
|
|
StatusIcons {
|
|
id: statusIconsInner
|
|
|
|
anchors.centerIn: parent
|
|
}
|
|
}
|
|
|
|
Power {
|
|
id: power
|
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.bottom: parent.bottom
|
|
anchors.bottomMargin: Appearance.padding.large
|
|
}
|
|
}
|
|
}
|