From 3b01362a5ad01db416aa43a88a389f21900bd870 Mon Sep 17 00:00:00 2001 From: tux Date: Sun, 23 Aug 2026 17:45:45 +0530 Subject: [PATCH] feat(power): add power profile component --- assets/icons/power.svg | 1 + config/BarLayout.qml | 1 + modules/bar/PowerProfileWidget.qml | 11 +++++++++++ services/PowerProfile.qml | 22 ++++++++++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 assets/icons/power.svg create mode 100644 modules/bar/PowerProfileWidget.qml create mode 100644 services/PowerProfile.qml diff --git a/assets/icons/power.svg b/assets/icons/power.svg new file mode 100644 index 0000000..a15a059 --- /dev/null +++ b/assets/icons/power.svg @@ -0,0 +1 @@ + diff --git a/config/BarLayout.qml b/config/BarLayout.qml index 97bef46..20fd5fb 100644 --- a/config/BarLayout.qml +++ b/config/BarLayout.qml @@ -13,6 +13,7 @@ Singleton { property var left: [ root.widget("LauncherButton"), + root.widget("PowerProfileWidget"), root.widget("BatteryIndicator"), ] diff --git a/modules/bar/PowerProfileWidget.qml b/modules/bar/PowerProfileWidget.qml new file mode 100644 index 0000000..ed53823 --- /dev/null +++ b/modules/bar/PowerProfileWidget.qml @@ -0,0 +1,11 @@ +pragma ComponentBehavior: Bound + +import qs.ui +import qs.services + +BarButton { + hoverHighlight: false + pointerCursor: false + label: PowerProfile.name + iconSource: PowerProfile.icon +} diff --git a/services/PowerProfile.qml b/services/PowerProfile.qml new file mode 100644 index 0000000..f4347c8 --- /dev/null +++ b/services/PowerProfile.qml @@ -0,0 +1,22 @@ +pragma Singleton + +import QtQuick +import Quickshell +import Quickshell.Services.UPower as UPower + +Singleton { + id: root + + readonly property bool performanceAvailable: UPower.PowerProfiles.hasPerformanceProfile + readonly property string name: { + switch (UPower.PowerProfiles.profile) { + case UPower.PowerProfile.Performance: + return "Performance"; + case UPower.PowerProfile.PowerSaver: + return "Power Saver"; + default: + return "Balanced"; + } + } + readonly property url icon: `${Quickshell.shellPath("assets")}/icons/power.svg` +}