diff --git a/components/StyledLayoutSeparator.qml b/components/StyledLayoutSeparator.qml deleted file mode 100644 index e5b0295..0000000 --- a/components/StyledLayoutSeparator.qml +++ /dev/null @@ -1,12 +0,0 @@ -import qs.config -import QtQuick -import QtQuick.Layouts - -Rectangle { - color: Styling.theme.basecontent - opacity: 0.33 - Layout.fillHeight: true - Layout.margins: 2 - implicitWidth: 0.5 - radius: 9999 -} diff --git a/components/StyledPopupWindow.qml b/components/StyledPopupWindow.qml index 4927cfb..cf87fb1 100644 --- a/components/StyledPopupWindow.qml +++ b/components/StyledPopupWindow.qml @@ -1,102 +1,92 @@ -import qs.services +import qs.config import QtQuick import Quickshell -import Quickshell.Widgets +import Quickshell.Hyprland PopupWindow { id: root - property bool opened: false - property int animationDuration: 200 - property alias margins: background.margin - property alias backgroundColor: background.color - property alias radius: background.radius - property alias state: background.state + required property Component content + implicitWidth: background.width + implicitHeight: background.height color: "transparent" + HyprlandFocusGrab { + id: grab + active: root.visible + windows: [root] + onCleared: { + background.state = "closed"; + } + } + function toggle() { - Visibility.togglePopup(this); + background.state = background.state == "opened" ? "closed" : "opened"; } - implicitWidth: background.width - Behavior on implicitWidth { - NumberAnimation { - duration: 100 - } - } - implicitHeight: background.height - Behavior on implicitHeight { - NumberAnimation { - duration: 100 - } - } + StyledWrapperRectangle { + id: background - Timer { - id: timer - interval: 750 - onTriggered: { - if (!root.visible) { - return; + margin: 16 + focus: true + onFocusChanged: { + if (!focus) { + grab.active = false; } - root.toggle(); } - } - WrapperMouseArea { - hoverEnabled: true - onExited: { - timer.start(); + Behavior on opacity { + NumberAnimation { + duration: Styling.animations.speed.normal + } } - onEntered: { - timer.stop(); - } - WrapperRectangle { - id: background - opacity: 0 - Behavior on opacity { - NumberAnimation { - duration: root.animationDuration + state: "closed" + states: [ + State { + name: "closed" + PropertyChanges { + background { + opacity: 0 + } } - } - - states: State { + }, + State { name: "opened" - when: root.opened PropertyChanges { background { opacity: 1 } } } + ] - transitions: [ - Transition { - from: "" - to: "opened" - ScriptAction { - script: root.visible = true + transitions: [ + Transition { + from: "closed" + to: "opened" + ScriptAction { + script: root.visible = true + } + }, + Transition { + from: "opened" + to: "closed" + SequentialAnimation { + PauseAnimation { + duration: root.animationDuration } - }, - Transition { - from: "opened" - to: "" - SequentialAnimation { - PauseAnimation { - duration: root.animationDuration - } - ScriptAction { - script: root.visible = false - } + ScriptAction { + script: root.visible = false } } - ] - - Loader { - active: root.visible - sourceComponent: root.content } + ] + + Loader { + active: root.visible + sourceComponent: root.content } } } diff --git a/modules/bar/Bar.qml b/modules/bar/Bar.qml index afa5947..37d8226 100644 --- a/modules/bar/Bar.qml +++ b/modules/bar/Bar.qml @@ -28,7 +28,7 @@ StyledWrapperRectangle { RowLayout { id: leftbar - spacing: Styling.layout.spacing.lg + spacing: Styling.layout.spacing.base SystemLogo { implicitSize: 22 @@ -44,7 +44,7 @@ StyledWrapperRectangle { Layout.alignment: Qt.AlignHCenter - spacing: Styling.layout.spacing.lg + spacing: Styling.layout.spacing.base Mpris {} } @@ -54,14 +54,18 @@ StyledWrapperRectangle { Layout.alignment: Qt.AlignRight - spacing: Styling.layout.spacing.lg + spacing: Styling.layout.spacing.base + + Pywal {} Pipewire {} - StyledLayoutSeparator {} + Caffeine {} Network {} + Bluetooth {} + Storage {} Memory {} @@ -70,20 +74,10 @@ StyledWrapperRectangle { Gpu {} - StyledLayoutSeparator {} - - Pywal {} - - Caffeine {} - - Bluetooth {} - - StyledLayoutSeparator {} + Power {} Clock {} - Power {} - Notifications {} } } diff --git a/modules/bar/components/Caffeine.qml b/modules/bar/components/Caffeine.qml index e45cb45..126ec7a 100644 --- a/modules/bar/components/Caffeine.qml +++ b/modules/bar/components/Caffeine.qml @@ -6,7 +6,7 @@ StyledIconButton { id: root border.width: 2 - border.color: Caffeine.enabled ? Styling.theme.secondary : root.hovered ? Styling.theme.primary : Styling.theme.base200 + border.color: Caffeine.enabled ? Styling.theme.secondary : root.hovered ? Styling.theme.primary : Styling.theme.base300 text: Styling.lucide.icons.coffee onClicked: { diff --git a/modules/bar/components/Clock.qml b/modules/bar/components/Clock.qml index 1941417..3ddb5a7 100644 --- a/modules/bar/components/Clock.qml +++ b/modules/bar/components/Clock.qml @@ -1,10 +1,12 @@ import qs.components import Quickshell -StyledText { - text: ` ${Qt.formatDateTime(clock.date, "hh:mm:ss AP")}` - SystemClock { - id: clock - precision: SystemClock.Seconds +StyledRectangle { + StyledText { + text: ` ${Qt.formatDateTime(clock.date, "hh:mm:ss AP")}` + SystemClock { + id: clock + precision: SystemClock.Seconds + } } } diff --git a/modules/bar/components/Memory.qml b/modules/bar/components/Memory.qml index deafda7..55f90df 100644 --- a/modules/bar/components/Memory.qml +++ b/modules/bar/components/Memory.qml @@ -5,17 +5,20 @@ import qs.utils import QtQuick import QtQuick.Layouts -RowLayout { +StyledRectangle { - Ref { - service: SystemInfo - } + RowLayout { - LucideIcon { - text: Styling.lucide.icons.memoryStick - } + Ref { + service: SystemInfo + } - StyledText { - text: ` ${(SystemInfo.memPerc * 100).toFixed()}%` + LucideIcon { + text: Styling.lucide.icons.memoryStick + } + + StyledText { + text: ` ${(SystemInfo.memPerc * 100).toFixed()}%` + } } } diff --git a/modules/bar/components/Network.qml b/modules/bar/components/Network.qml index 7b65d2c..57a0905 100644 --- a/modules/bar/components/Network.qml +++ b/modules/bar/components/Network.qml @@ -5,48 +5,51 @@ import qs.utils import QtQuick import QtQuick.Layouts -RowLayout { +StyledRectangle { - Ref { - service: NetworkService - } + RowLayout { - LucideIcon { - id: icon - text: Styling.lucide.icons.wifiOff - states: [ - State { - name: "high" - when: NetworkService.active?.strength > 50 - PropertyChanges { - icon { - text: Styling.lucide.icons.wifi + Ref { + service: NetworkService + } + + LucideIcon { + id: icon + text: Styling.lucide.icons.wifiOff + states: [ + State { + name: "high" + when: NetworkService.active?.strength > 50 + PropertyChanges { + icon { + text: Styling.lucide.icons.wifi + } + } + }, + State { + name: "medium" + when: NetworkService.active?.strength > 25 + PropertyChanges { + icon { + text: Styling.lucide.icons.wifiHigh + } + } + }, + State { + name: "low" + when: NetworkService.active?.strength > 0 + PropertyChanges { + icon { + text: Styling.lucide.icons.wifiLow + } } } - }, - State { - name: "medium" - when: NetworkService.active?.strength > 25 - PropertyChanges { - icon { - text: Styling.lucide.icons.wifiHigh - } - } - }, - State { - name: "low" - when: NetworkService.active?.strength > 0 - PropertyChanges { - icon { - text: Styling.lucide.icons.wifiLow - } - } - } - ] - } + ] + } - StyledText { - id: text - text: ` ${(NetworkService.active?.strength ?? 0).toFixed()}%` + StyledText { + id: text + text: ` ${(NetworkService.active?.strength ?? 0).toFixed()}%` + } } } diff --git a/modules/bar/components/Storage.qml b/modules/bar/components/Storage.qml index 7450969..0a1d2b7 100644 --- a/modules/bar/components/Storage.qml +++ b/modules/bar/components/Storage.qml @@ -5,19 +5,22 @@ import qs.utils import QtQuick import QtQuick.Layouts -RowLayout { +StyledRectangle { - Ref { - service: SystemInfo - } + RowLayout { - LucideIcon { - text: Styling.lucide.icons.hardDrive - } + Ref { + service: SystemInfo + } - StyledText { - id: text + LucideIcon { + text: Styling.lucide.icons.hardDrive + } - text: ` ${(SystemInfo.storagePerc * 100).toFixed()}%` + StyledText { + id: text + + text: ` ${(SystemInfo.storagePerc * 100).toFixed()}%` + } } } diff --git a/modules/bar/components/bluetooth/BluetoothMenu.qml b/modules/bar/components/bluetooth/BluetoothMenu.qml index b9bc688..7e953cf 100644 --- a/modules/bar/components/bluetooth/BluetoothMenu.qml +++ b/modules/bar/components/bluetooth/BluetoothMenu.qml @@ -1,7 +1,6 @@ pragma ComponentBehavior: Bound import qs.components -import qs.config import QtQuick import QtQuick.Layouts import Quickshell @@ -10,10 +9,6 @@ import Quickshell.Bluetooth StyledPopupWindow { id: root - backgroundColor: Styling.theme.base300 - margins: 16 - radius: 8 - content: ColumnLayout { spacing: 8 StyledWrapperRectangle { diff --git a/modules/bar/components/notifications/NotificationMenu.qml b/modules/bar/components/notifications/NotificationMenu.qml index 877f30f..d608fd8 100644 --- a/modules/bar/components/notifications/NotificationMenu.qml +++ b/modules/bar/components/notifications/NotificationMenu.qml @@ -9,10 +9,6 @@ import QtQuick.Layouts StyledPopupWindow { id: root - backgroundColor: Styling.theme.base300 - margins: 16 - radius: 8 - content: GridLayout { columns: 2 diff --git a/modules/bar/components/tray/menu/Menu.qml b/modules/bar/components/tray/menu/Menu.qml index 43ce6b5..db54cfc 100644 --- a/modules/bar/components/tray/menu/Menu.qml +++ b/modules/bar/components/tray/menu/Menu.qml @@ -9,10 +9,6 @@ import Quickshell StyledPopupWindow { id: window - backgroundColor: Styling.theme.base300 - margins: 14 - radius: 8 - property QsMenuOpener menuOpener content: ColumnLayout { diff --git a/services/Visibility.qml b/services/Visibility.qml index 57cf887..d3ea806 100644 --- a/services/Visibility.qml +++ b/services/Visibility.qml @@ -1,6 +1,5 @@ pragma Singleton -import qs.components import Quickshell Singleton { @@ -9,15 +8,6 @@ Singleton { property alias pomodoro: properties.pomodoro property alias powermenu: properties.powermenu property alias storybook: properties.storybook - property StyledPopupWindow activePopup - - function togglePopup(popup: StyledPopupWindow) { - if (activePopup && popup != activePopup) { - activePopup.state = ""; - } - popup.state = popup.state == "opened" ? "" : "opened"; - activePopup = popup; - } PersistentProperties { id: properties