Add live battery stats

This commit is contained in:
Stephen Horvath
2025-08-15 19:34:11 +10:00
parent fa5442d5fd
commit e7b4e4d194
15 changed files with 643 additions and 675 deletions

View File

@@ -1,181 +1,156 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Cambalache 0.94.1 -->
<!-- Created with Cambalache 0.96.1 -->
<interface>
<!-- interface-description The Battery page for YAFI -->
<!-- interface-authors Steve-Tech -->
<requires lib="gtk" version="4.12"/>
<requires lib="libadwaita" version="1.6"/>
<!-- interface-name battery.ui -->
<requires lib="gtk" version="4.18"/>
<requires lib="libadwaita" version="1.2"/>
<template class="BatteryPage" parent="GtkBox">
<property name="orientation">vertical</property>
<property name="homogeneous">True</property>
<child>
<object class="GtkListBox">
<property name="margin-end">10</property>
<property name="margin-start">10</property>
<child>
<object class="AdwActionRow">
<property name="selectable">False</property>
<property name="title">Battery Limiters</property>
</object>
</child>
<child>
<object class="AdwSwitchRow" id="chg_limit_enable">
<property name="title">Enable Charge Limiter</property>
</object>
</child>
<child>
<object class="AdwActionRow" id="chg_limit">
<property name="sensitive">False</property>
<property name="subtitle">Limit the maximum charge</property>
<property name="title">Charge Limit</property>
<object class="GtkPaned">
<property name="end-child">
<object class="GtkListBox">
<property name="width-request">100</property>
<child>
<object class="GtkBox">
<object class="AdwActionRow" id="batt_manu">
<property name="css-classes">property</property>
<property name="selectable">False</property>
<property name="title">Manufacturer</property>
</object>
</child>
<child>
<object class="AdwActionRow" id="batt_model">
<property name="css-classes">property</property>
<property name="selectable">False</property>
<property name="title">Model</property>
</object>
</child>
<child>
<object class="AdwActionRow" id="batt_serial">
<property name="css-classes">property</property>
<property name="selectable">False</property>
<property name="title">Serial</property>
</object>
</child>
<child>
<object class="AdwActionRow" id="batt_type">
<property name="css-classes">property</property>
<property name="selectable">False</property>
<property name="title">Type</property>
</object>
</child>
<child>
<object class="AdwActionRow" id="batt_orig_cap">
<property name="css-classes">property</property>
<property name="selectable">False</property>
<property name="title">Design Capacity</property>
</object>
</child>
<child>
<object class="AdwActionRow" id="batt_orig_volts">
<property name="css-classes">property</property>
<property name="selectable">False</property>
<property name="title">Design Voltage</property>
</object>
</child>
</object>
</property>
<property name="start-child">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkListBox">
<property name="margin-end">10</property>
<property name="margin-start">10</property>
<child>
<object class="GtkLabel" id="chg_limit_label"/>
<object class="AdwActionRow" id="batt_status">
<property name="selectable">False</property>
<property name="title">Battery Statistics</property>
</object>
</child>
<child>
<object class="GtkScale" id="chg_limit_scale">
<property name="adjustment">
<object class="GtkAdjustment">
<property name="page-increment">10.0</property>
<property name="step-increment">1.0</property>
<property name="upper">100.0</property>
<property name="value">100.0</property>
<object class="AdwActionRow">
<property name="title">Charge</property>
<child>
<object class="GtkBox">
<property name="halign">end</property>
<property name="homogeneous">True</property>
<property name="valign">center</property>
<child>
<object class="GtkProgressBar" id="batt_charge">
<property name="show-text">True</property>
<property name="width-request">300</property>
</object>
</child>
</object>
</property>
<property name="hexpand">True</property>
<property name="round-digits">0</property>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="bat_limit">
<property name="sensitive">False</property>
<property name="subtitle">Limit the minimum charge</property>
<property name="title">Discharge Limit</property>
<child>
<object class="GtkBox">
<child>
<object class="GtkLabel" id="bat_limit_label"/>
</child>
<child>
<object class="GtkScale" id="bat_limit_scale">
<property name="adjustment">
<object class="GtkAdjustment">
<property name="page-increment">10.0</property>
<property name="step-increment">1.0</property>
<property name="upper">100.0</property>
<object class="AdwActionRow">
<property name="title">Health</property>
<child>
<object class="GtkBox">
<property name="halign">end</property>
<property name="homogeneous">True</property>
<property name="valign">center</property>
<child>
<object class="GtkProgressBar" id="batt_health">
<property name="show-text">True</property>
<property name="width-request">300</property>
</object>
</child>
</object>
</property>
<property name="hexpand">True</property>
<property name="round-digits">0</property>
</child>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="chg_limit_override">
<property name="sensitive">False</property>
<property name="subtitle">Disables the limiter for one charge cycle</property>
<property name="title">Override Charge Limiter</property>
<child>
<object class="GtkBox">
<property name="halign">end</property>
<property name="homogeneous">True</property>
<property name="valign">center</property>
<child>
<object class="GtkButton" id="chg_limit_override_btn">
<property name="label">Override</property>
<object class="AdwActionRow" id="batt_cycles">
<property name="title">Charge Cycles</property>
<child>
<object class="GtkLabel" id="batt_cycles_label"/>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="batt_volts">
<property name="title">Current Voltage</property>
<child>
<object class="GtkLabel" id="batt_volts_label"/>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="batt_watts">
<property name="title">Current Wattage</property>
<child>
<object class="GtkLabel" id="batt_watts_label"/>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="batt_cap_rem">
<property name="title">Remaining Charge</property>
<child>
<object class="GtkLabel" id="batt_cap_rem_label"/>
</child>
</object>
</child>
<child>
<object class="AdwActionRow" id="batt_cap_full">
<property name="title">Last Full Charge</property>
<child>
<object class="GtkLabel" id="batt_cap_full_label"/>
</child>
</object>
</child>
<style>
<class name="boxed-list"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup" id="bat_ext_group">
<property name="description">Preserve the battery lifespan by gradually lowering battery charge voltage automatically if the system is connected to AC for more than the set day limit.</property>
<property name="margin-bottom">5</property>
<property name="margin-end">5</property>
<property name="margin-start">5</property>
<property name="margin-top">5</property>
<property name="title">Battery Extender</property>
<child>
<object class="AdwSwitchRow" id="bat_ext_enable">
<property name="title">Enable</property>
</object>
</child>
<child>
<object class="AdwActionRow" id="bat_ext_stage">
<property name="selectable">False</property>
<property name="sensitive">False</property>
<property name="title">Current Stage (0 to 2)</property>
<style>
<class name="property"/>
</style>
</object>
</child>
<child>
<object class="AdwActionRow" id="bat_ext_trigger_time">
<property name="selectable">False</property>
<property name="sensitive">False</property>
<property name="title">Time Until Trigger</property>
<style>
<class name="property"/>
</style>
</object>
</child>
<child>
<object class="AdwActionRow" id="bat_ext_reset_time">
<property name="selectable">False</property>
<property name="sensitive">False</property>
<property name="title">Time Until Reset</property>
<style>
<class name="property"/>
</style>
</object>
</child>
<child>
<object class="AdwSpinRow" id="bat_ext_trigger">
<property name="adjustment">
<object class="GtkAdjustment">
<property name="lower">1.0</property>
<property name="page-increment">5.0</property>
<property name="step-increment">1.0</property>
<property name="upper">99.0</property>
<property name="value">5.0</property>
</object>
</property>
<property name="sensitive">False</property>
<property name="subtitle">Number of days on charge before reducing charge limit</property>
<property name="title">Trigger Days</property>
</object>
</child>
<child>
<object class="AdwSpinRow" id="bat_ext_reset">
<property name="adjustment">
<object class="GtkAdjustment">
<property name="lower">1.0</property>
<property name="page-increment">5.0</property>
<property name="step-increment">1.0</property>
<property name="upper">9999.0</property>
<property name="value">30.0</property>
</object>
</property>
<property name="sensitive">False</property>
<property name="subtitle">Number of minutes off charge before resetting charge limit</property>
<property name="title">Reset Minutes</property>
</object>
</child>
</object>
</child>
<style>
<class name="boxed-list"/>
</style>
</property>
</object>
</child>
</template>