summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/libraries/battery.md6
-rw-r--r--flake.nix2
-rw-r--r--lib/battery/cli.vala30
-rw-r--r--lib/battery/device.vala2
-rw-r--r--lib/battery/meson.build1
5 files changed, 9 insertions, 32 deletions
diff --git a/docs/libraries/battery.md b/docs/libraries/battery.md
index 5c2c79f..b42d747 100644
--- a/docs/libraries/battery.md
+++ b/docs/libraries/battery.md
@@ -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
```
:::
diff --git a/flake.nix b/flake.nix
index 04ea609..e3451b6 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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];
diff --git a/lib/battery/cli.vala b/lib/battery/cli.vala
index 710edec..c51264b 100644
--- a/lib/battery/cli.vala
+++ b/lib/battery/cli.vala
@@ -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);
-}
diff --git a/lib/battery/device.vala b/lib/battery/device.vala
index b6c13b8..92df04a 100644
--- a/lib/battery/device.vala
+++ b/lib/battery/device.vala
@@ -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";
}
diff --git a/lib/battery/meson.build b/lib/battery/meson.build
index f9751d0..584f66d 100644
--- a/lib/battery/meson.build
+++ b/lib/battery/meson.build
@@ -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')