dbus-settings-bindings/upower
Ian Douglas Scott 3b86984332 Update to zbus 5.x
https://github.com/dbus2/zbus/releases/tag/zbus-5.0.0

Now requires `pub` on uses of `#[proxy]` if the generated types should
be `pub`.
2025-05-22 22:54:07 +02:00
..
examples chore: cargo fmt & geoclue docs 2024-02-19 11:35:11 -05:00
src Update to zbus 5.x 2025-05-22 22:54:07 +02:00
.gitignore feat: add upower-dbus for org.freedesktop.UPower 2023-02-01 17:31:08 +01:00
Cargo.toml set workspace resolver to 2 and use workspace deps 2023-11-10 11:27:29 -05:00
LICENSE feat: add upower-dbus for org.freedesktop.UPower 2023-02-01 17:31:08 +01:00
README.md feat: add upower-dbus for org.freedesktop.UPower 2023-02-01 17:31:08 +01:00

upower-dbus

A Rust library which interfaces with UPower status information through dbus.

Examples

Detecting if the system is running on battery

extern crate upower_dbus;

use futures::stream::StreamExt;
use upower_dbus::UPowerProxy;

fn main() -> zbus::Result<()> {
    futures::executor::block_on(async move {
        let connection = zbus::Connection::system().await?;

        let upower = UPowerProxy::new(&connection).await?;

        println!("On Battery: {:?}", upower.on_battery().await);

        let mut stream = upower.receive_on_battery_changed().await;

        while let Some(event) = stream.next().await {
            println!("On Battery: {:?}", event.get().await);
        }

        Ok(())
    })
}

Getting the current battery status as a percentage

extern crate upower_dbus;

use upower_dbus::UPowerProxy;

fn main() -> zbus::Result<()> {
    futures::executor::block_on(async move {
        let connection = zbus::Connection::system().await?;

        let upower = UPowerProxy::new(&connection).await?;

        let device = upower.get_display_device().await?;

        println!("Battery: {:?}", device.percentage().await);

        Ok(())
    })
}