Files
quickshell/modules/bar/states/Battery/BatteryState.qml
T

57 lines
2.3 KiB
QML

pragma Singleton
import QtQuick
import Quickshell
import Quickshell.Services.UPower
Item {
id: root
property bool available: UPower.displayDevice.isLaptopBattery
property real percentage: UPower.displayDevice.percentage*100
property string state: UPowerDeviceState.toString(UPower.displayDevice.state)
property bool charging: state == "Charging"
property bool full: state == "FullyCharged"
property real energy: UPower.displayDevice.energy
property real energy_formated: Math.round(energy*10)/10
property real time_to_empty: UPower.displayDevice.timeToEmpty
property real hour_to_empty: Math.floor(time_to_empty/3600)
property real min_to_empty: Math.floor((time_to_empty%3600)/60)
property real energy_rate: UPower.displayDevice.changeRate
property real energy_rate_formated: Math.round(energy_rate*10)/10
property bool healthSupported: UPower.displayDevice.healthSupported
property real health: healthSupported ? UPower.displayDevice.healthPercentage : NaN
property int _maxHistory: 60*60
property var percentageHistory: [{time: Date.now() - _maxHistory*1000, value: 0}, {time: Date.now(), value: 0}]
property var energyHistory: [{time: Date.now() - _maxHistory*1000, value: 0}, {time: Date.now(), value: 0}]
property var usageHistory: [{time: Date.now() - _maxHistory*1000, value: 0}, {time: Date.now(), value: 0}]
Timer {
id: statsTimer
interval: 1000
repeat: true
running: true
onTriggered: {
var now = Date.now()
// Creating percentage History
var pHist = root.percentageHistory
pHist.push({time: now, value: percentage})
if (pHist.length > root._maxHistory) pHist.shift()
root.percentageHistory = pHist
// Creating percentage History
var eHist = root.energyHistory
eHist.push({time: now, value: percentage})
if (eHist.length > root._maxHistory) eHist.shift()
root.energyHistory = eHist
// Creating percentage History
var uHist = root.usageHistory
uHist.push({time: now, value: percentage})
if (uHist.length > root._maxHistory) uHist.shift()
root.usageHistory = uHist
}
}
}