add low battery toast, unload if not laptop battery.
This commit is contained in:
@@ -214,6 +214,10 @@ Singleton {
|
|||||||
},
|
},
|
||||||
idle: {
|
idle: {
|
||||||
timeouts: general.idle.timeouts
|
timeouts: general.idle.timeouts
|
||||||
|
},
|
||||||
|
battery: {
|
||||||
|
popupThresholds: general.battery.popupThresholds,
|
||||||
|
critPerc: general.battery.critPerc
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,8 @@ import Quickshell
|
|||||||
JsonObject {
|
JsonObject {
|
||||||
property Apps apps: Apps {
|
property Apps apps: Apps {
|
||||||
}
|
}
|
||||||
|
property Battery battery: Battery {
|
||||||
|
}
|
||||||
property Color color: Color {
|
property Color color: Color {
|
||||||
}
|
}
|
||||||
property string dateFormat: "ddd d MMM - hh:mm:ss"
|
property string dateFormat: "ddd d MMM - hh:mm:ss"
|
||||||
@@ -19,6 +21,17 @@ JsonObject {
|
|||||||
property list<string> playback: ["mpv"]
|
property list<string> playback: ["mpv"]
|
||||||
property list<string> terminal: ["kitty"]
|
property list<string> terminal: ["kitty"]
|
||||||
}
|
}
|
||||||
|
component Battery: JsonObject {
|
||||||
|
property int critPerc: 5
|
||||||
|
property list<var> popupThresholds: [
|
||||||
|
{
|
||||||
|
perc: 20,
|
||||||
|
name: qsTr("Low battery"),
|
||||||
|
message: qsTr("Battery at %1%").arg(Battery.currentPerc * 100),
|
||||||
|
icon: "battery_android_frame_2"
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
component Color: JsonObject {
|
component Color: JsonObject {
|
||||||
property int hyprsunsetTemp: 5000
|
property int hyprsunsetTemp: 5000
|
||||||
property string mode: "dark"
|
property string mode: "dark"
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
import Quickshell
|
||||||
|
import Quickshell.Services.UPower
|
||||||
|
import QtQuick
|
||||||
|
import ZShell
|
||||||
|
import qs.Config
|
||||||
|
import qs.Components.Toast
|
||||||
|
|
||||||
|
Scope {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
readonly property real currentPerc: UPower.displayDevice.percentage
|
||||||
|
readonly property list<var> popupThresholds: [...Config.general.battery.popupThresholds].sort((a, b) => b.perc - a.perc)
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
function onOnBatteryChanged(): void {
|
||||||
|
if (UPower.onBattery) {
|
||||||
|
if (Config.utilities.toasts.chargingChanged)
|
||||||
|
Toaster.toast(qsTr("Charger unplugged"), qsTr("Battery is discharging"), "power_off");
|
||||||
|
} else {
|
||||||
|
if (Config.utilities.toasts.chargingChanged)
|
||||||
|
Toaster.toast(qsTr("Charger plugged in"), qsTr("Battery is charging"), "power");
|
||||||
|
for (const level of root.popupThresholds)
|
||||||
|
level.warned = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
target: UPower
|
||||||
|
}
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
function onPercentageChanged(): void {
|
||||||
|
if (!UPower.onBattery)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const p = UPower.displayDevice.percentage * 100;
|
||||||
|
for (const perc of root.popupThresholds) {
|
||||||
|
if (p <= perc.perc && !perc.warned) {
|
||||||
|
perc.warned = true;
|
||||||
|
Toaster.toast(perc.title ?? qsTr("Battery warning"), perc.message ?? qsTr("Battery perc is low"), perc.icon ?? "battery_android_alert", perc.critical ? Toast.Error : Toast.Warning);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
target: UPower.displayDevice
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,7 +6,6 @@ import Quickshell
|
|||||||
Singleton {
|
Singleton {
|
||||||
property var extraOpts: ({})
|
property var extraOpts: ({})
|
||||||
readonly property list<var> fuzzyPrepped: useFuzzy ? list.map(e => {
|
readonly property list<var> fuzzyPrepped: useFuzzy ? list.map(e => {
|
||||||
console.log(useFuzzy);
|
|
||||||
const obj = {
|
const obj = {
|
||||||
_item: e
|
_item: e
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -6,14 +6,20 @@
|
|||||||
//@ pragma Env QT_SCALE_FACTOR_ROUNDING_POLICY=Round
|
//@ pragma Env QT_SCALE_FACTOR_ROUNDING_POLICY=Round
|
||||||
//@ pragma DropExpensiveFonts
|
//@ pragma DropExpensiveFonts
|
||||||
import Quickshell
|
import Quickshell
|
||||||
|
import Quickshell.Services.UPower
|
||||||
import qs.Modules
|
import qs.Modules
|
||||||
import qs.Modules.Wallpaper
|
import qs.Modules.Wallpaper
|
||||||
import qs.Modules.Lock
|
import qs.Modules.Lock
|
||||||
import qs.Drawers
|
import qs.Drawers
|
||||||
import qs.Helpers
|
import qs.Helpers
|
||||||
import qs.Modules.Polkit
|
import qs.Modules.Polkit
|
||||||
|
import qs.Daemons
|
||||||
|
|
||||||
ShellRoot {
|
ShellRoot {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
readonly property bool laptop: UPower.displayDevice.isLaptopBattery
|
||||||
|
|
||||||
settings.watchFiles: true
|
settings.watchFiles: true
|
||||||
|
|
||||||
Windows {
|
Windows {
|
||||||
@@ -38,4 +44,11 @@ ShellRoot {
|
|||||||
|
|
||||||
Polkit {
|
Polkit {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LazyLoader {
|
||||||
|
activeAsync: root.laptop
|
||||||
|
|
||||||
|
component: Battery {
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user