mirror of
https://github.com/zoriya/astal.git
synced 2025-12-06 06:06:10 +00:00
battery: use json-glib for cli
This commit is contained in:
@@ -9,15 +9,15 @@ Library and CLI tool for monitoring [upowerd](https://upower.freedesktop.org/) d
|
||||
:::code-group
|
||||
|
||||
```sh [<i class="devicon-archlinux-plain"></i> Arch]
|
||||
sudo pacman -Syu meson vala gobject-introspection
|
||||
sudo pacman -Syu meson vala json-glib gobject-introspection
|
||||
```
|
||||
|
||||
```sh [<i class="devicon-fedora-plain"></i> Fedora]
|
||||
sudo dnf install meson gcc valac gobject-introspection-devel
|
||||
sudo dnf install meson gcc valac json-glib-devel gobject-introspection-devel
|
||||
```
|
||||
|
||||
```sh [<i class="devicon-ubuntu-plain"></i> Ubuntu]
|
||||
sudo apt install meson valac gobject-introspection
|
||||
sudo apt install meson valac libjson-glib-dev gobject-introspection
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
astal = mkPkg "astal" ./core [gtk3 gtk-layer-shell];
|
||||
apps = mkPkg "astal-apps" ./lib/apps [json-glib];
|
||||
auth = mkPkg "astal-auth" ./lib/auth [pam];
|
||||
battery = mkPkg "astal-battery" ./lib/battery [];
|
||||
battery = mkPkg "astal-battery" ./lib/battery [json-glib];
|
||||
bluetooth = mkPkg "astal-bluetooth" ./lib/bluetooth [];
|
||||
hyprland = mkPkg "astal-hyprland" ./lib/hyprland [json-glib];
|
||||
mpris = mkPkg "astal-mpris" ./lib/mpris [gvfs json-glib];
|
||||
|
||||
@@ -37,38 +37,14 @@ int main(string[] argv) {
|
||||
}
|
||||
|
||||
var battery = AstalBattery.get_default();
|
||||
print("%s\n", to_json(battery));
|
||||
print("%s\n", Json.gobject_to_data(battery, null));
|
||||
|
||||
if (monitor) {
|
||||
battery.notify.connect((prop) => {
|
||||
if (prop.get_name() == "percentage"
|
||||
|| prop.get_name() == "state"
|
||||
|| prop.get_name() == "icon-name"
|
||||
|| prop.get_name() == "time-to-full"
|
||||
|| prop.get_name() == "time-to-empty"
|
||||
) {
|
||||
print("%s\n", to_json(battery));
|
||||
}
|
||||
battery.notify.connect(() => {
|
||||
print("%s\n", Json.gobject_to_data(battery, null));
|
||||
});
|
||||
new GLib.MainLoop(null, false).run();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
private string to_json(AstalBattery.Device device) {
|
||||
string s = "unknown";
|
||||
if (device.state == AstalBattery.State.CHARGING)
|
||||
s = "charging";
|
||||
if (device.state == AstalBattery.State.DISCHARGING)
|
||||
s = "discharging";
|
||||
if (device.state == AstalBattery.State.FULLY_CHARGED)
|
||||
s = "fully_charged";
|
||||
|
||||
var p = device.percentage;
|
||||
var i = device.icon_name;
|
||||
var r = device.state == AstalBattery.State.CHARGING
|
||||
? device.time_to_full : device.time_to_empty;
|
||||
|
||||
return "{ \"percentage\": %f, \"state\": \"%s\", \"icon_name\": \"%s\", \"time_remaining\": %f }".printf(p, s, i, r);
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ public class Device : Object {
|
||||
battery_icon_name = "battery-level-100-charged";
|
||||
} else {
|
||||
var state = charging ? "-charging" : "";
|
||||
var level = (int)Math.round(percentage * 100);
|
||||
var level = (int)Math.round(percentage * 10)*10;
|
||||
battery_icon_name = @"battery-level-$level$state-symbolic";
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ pkgconfig_deps = [
|
||||
dependency('glib-2.0'),
|
||||
dependency('gio-2.0'),
|
||||
dependency('gobject-2.0'),
|
||||
dependency('json-glib-1.0'),
|
||||
]
|
||||
|
||||
deps = pkgconfig_deps + meson.get_compiler('c').find_library('m')
|
||||
|
||||
Reference in New Issue
Block a user