diff options
-rw-r--r-- | docs/libraries/battery.md | 6 | ||||
-rw-r--r-- | flake.nix | 2 | ||||
-rw-r--r-- | lib/battery/cli.vala | 30 | ||||
-rw-r--r-- | lib/battery/device.vala | 2 | ||||
-rw-r--r-- | lib/battery/meson.build | 1 |
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 ``` ::: @@ -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') |