From c500637fd81311d056f2688d9a06b3c63f975287 Mon Sep 17 00:00:00 2001 From: Benjamin Palko Date: Wed, 3 Sep 2025 09:54:18 -0400 Subject: [PATCH 1/4] remove unused --- modules/launcher/Launcher.qml | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/launcher/Launcher.qml b/modules/launcher/Launcher.qml index 36d65ab..137c861 100644 --- a/modules/launcher/Launcher.qml +++ b/modules/launcher/Launcher.qml @@ -2,10 +2,8 @@ pragma ComponentBehavior: Bound import "services" import qs.components -import qs.config import qs.constants import qs.services -import qs.widgets import Quickshell.Hyprland import Quickshell.Wayland import QtQuick From da4654e4a623f95942535cebb2a10be9202ff421 Mon Sep 17 00:00:00 2001 From: Benjamin Palko Date: Wed, 3 Sep 2025 11:51:09 -0400 Subject: [PATCH 2/4] animate icon color --- components/LucideIcon.qml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/components/LucideIcon.qml b/components/LucideIcon.qml index 500fff6..206d5b4 100644 --- a/components/LucideIcon.qml +++ b/components/LucideIcon.qml @@ -2,9 +2,12 @@ import qs.config import QtQuick Text { - color: Theme.palette.basecontent - + Behavior on color { + ColorAnimation { + duration: 100 + } + } font.family: Theme.lucide.font.family font.pixelSize: Dimensions.gpu.iconSize font.bold: true From 9505748b32e85a8f02b064e08ed4a878daf1280a Mon Sep 17 00:00:00 2001 From: Benjamin Palko Date: Wed, 3 Sep 2025 11:51:14 -0400 Subject: [PATCH 3/4] add charging icon --- constants/Icons.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/constants/Icons.qml b/constants/Icons.qml index 7caf3e3..881277e 100644 --- a/constants/Icons.qml +++ b/constants/Icons.qml @@ -3,6 +3,7 @@ pragma Singleton import Quickshell Singleton { + property string batteryCharging: "\u{E058}" property string batteryFull: "\u{E059}" property string batteryMedium: "\u{E05b}" property string batteryLow: "\u{E05a}" From d043f862693638bb96dc4de307aa85980b2b4855 Mon Sep 17 00:00:00 2001 From: Benjamin Palko Date: Wed, 3 Sep 2025 12:00:54 -0400 Subject: [PATCH 4/4] add battery for laptops --- modules/bar/Bar.qml | 2 ++ modules/bar/components/Power.qml | 60 ++++++++++++++++++++++++++++++++ services/PowerService.qml | 12 +++++++ 3 files changed, 74 insertions(+) create mode 100644 modules/bar/components/Power.qml create mode 100644 services/PowerService.qml diff --git a/modules/bar/Bar.qml b/modules/bar/Bar.qml index 1f468d4..c39e847 100644 --- a/modules/bar/Bar.qml +++ b/modules/bar/Bar.qml @@ -107,6 +107,8 @@ PanelWindow { Gpu {} + Power {} + Clock {} Notifications {} diff --git a/modules/bar/components/Power.qml b/modules/bar/components/Power.qml new file mode 100644 index 0000000..5cb6150 --- /dev/null +++ b/modules/bar/components/Power.qml @@ -0,0 +1,60 @@ +import qs.components +import qs.config +import qs.constants +import qs.widgets +import QtQuick +import QtQuick.Layouts +import Quickshell.Services.UPower + +StyledButton { + id: root + property UPowerDevice laptopBattery: UPower.devices.values.find(device => device.isLaptopBattery) + property bool isCritical: laptopBattery.percentage < 0.10 + + contentItem: RowLayout { + spacing: 4 + LucideIcon { + Layout.alignment: Qt.AlignVCenter + color: { + if (root.isCritical) { + return Theme.palette.error; + } + if (root.hovered) { + return Theme.palette.primarycontent; + } + return Theme.palette.basecontent; + } + font.pixelSize: 16 + text: { + if (root.laptopBattery.state == UPowerDeviceState.Charging) { + return Icons.batteryCharging; + } + if (root.isCritical) { + return Icons.batteryWarning; + } + if (root.laptopBattery.percentage < 0.33) { + return Icons.batteryLow; + } + if (root.laptopBattery.percentage < 0.66) { + return Icons.batteryMedium; + } + return Icons.batteryFull; + } + } + + StyledText { + Layout.alignment: Qt.AlignVCenter + color: { + if (root.isCritical) { + return Theme.palette.error; + } + if (root.hovered) { + return Theme.palette.primarycontent; + } + return Theme.palette.basecontent; + } + text: `${root.laptopBattery.percentage * 100}%` + } + } + visible: laptopBattery +} diff --git a/services/PowerService.qml b/services/PowerService.qml new file mode 100644 index 0000000..09735ae --- /dev/null +++ b/services/PowerService.qml @@ -0,0 +1,12 @@ +pragma Singleton + +import Quickshell +import Quickshell.Services.UPower + +Singleton { + id: root + + property bool onBattery: UPower.onBattery + property UPowerDevice laptopBattery: UPower.devices.values.find(device => device.isLaptopBattery) + +}