summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/battery/cli.vala30
-rw-r--r--lib/battery/device.vala4
-rw-r--r--lib/battery/meson.build1
-rw-r--r--lib/mpris/player.vala12
-rw-r--r--lib/notifd/notification.vala16
5 files changed, 30 insertions, 33 deletions
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..7193118 100644
--- a/lib/battery/device.vala
+++ b/lib/battery/device.vala
@@ -102,10 +102,10 @@ public class Device : Object {
if (!is_battery) {
battery_icon_name = "battery-missing-symbolic";
} else if (percentage == 1.0 && charging) {
- battery_icon_name = "battery-level-100-charged";
+ battery_icon_name = "battery-level-100-charged-symbolic";
} 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')
diff --git a/lib/mpris/player.vala b/lib/mpris/player.vala
index ed146f6..6764d2b 100644
--- a/lib/mpris/player.vala
+++ b/lib/mpris/player.vala
@@ -245,10 +245,16 @@ public class Player : Object {
// metadata
metadata = proxy.metadata;
if (metadata != null) {
- if (metadata.get("mpris:length") != null)
- length = (double)metadata.get("mpris:length").get_uint64() / 1000000;
- else
+ if (metadata.get("mpris:length") != null) {
+ var v = metadata.get("mpris:length");
+ if (v.get_type_string() == "x") {
+ length = (double)v.get_int64() / 1000000;
+ } else if (v.get_type_string() == "t") {
+ length = (double)v.get_uint64() / 1000000;
+ }
+ } else {
length = -1;
+ }
trackid = get_str("mpris:trackid");
art_url = get_str("mpris:artUrl");
diff --git a/lib/notifd/notification.vala b/lib/notifd/notification.vala
index 66eaccd..74b428e 100644
--- a/lib/notifd/notification.vala
+++ b/lib/notifd/notification.vala
@@ -33,7 +33,7 @@ public class AstalNotifd.Notification : Object {
public bool transient { get { return get_bool_hint("transient"); } }
public int x { get { return get_int_hint("x"); } }
public int y { get { return get_int_hint("y"); } }
- public Urgency urgency { get { return get_hint("urgency").get_byte(); } }
+ public Urgency urgency { get { return get_byte_hint("urgency"); } }
internal Notification(
string app_name,
@@ -81,6 +81,20 @@ public class AstalNotifd.Notification : Object {
return hints.contains(hint) ? hints.get(hint).get_int32() : 0;
}
+ public uint8 get_byte_hint(string hint) {
+ if (!hints.contains(hint))
+ return 0;
+
+ var v = hints.get(hint);
+ if (v.get_type_string() == "b")
+ return v.get_byte();
+
+ if (v.get_type_string() == "x")
+ return (uint8)v.get_int64();
+
+ return 0;
+ }
+
public signal void resolved(ClosedReason reason);
public signal void dismissed();
public signal void invoked(string action);