2024-08-09 23:16:00 +01:00
|
|
|
use crate::clients::ClientResult;
|
|
|
|
use crate::register_fallible_client;
|
2023-03-19 02:16:49 +05:30
|
|
|
use std::sync::Arc;
|
|
|
|
use upower_dbus::UPowerProxy;
|
|
|
|
use zbus::fdo::PropertiesProxy;
|
|
|
|
|
2024-08-09 23:16:00 +01:00
|
|
|
pub async fn create_display_proxy() -> ClientResult<PropertiesProxy<'static>> {
|
|
|
|
let dbus = Box::pin(zbus::Connection::system()).await?;
|
2023-03-19 02:16:49 +05:30
|
|
|
|
2024-08-09 23:16:00 +01:00
|
|
|
let device_proxy = UPowerProxy::new(&dbus).await?;
|
2023-03-19 02:16:49 +05:30
|
|
|
|
2024-08-09 23:16:00 +01:00
|
|
|
let display_device = device_proxy.get_display_device().await?;
|
2023-03-19 02:16:49 +05:30
|
|
|
|
2024-01-07 23:50:10 +00:00
|
|
|
let path = display_device.path().to_owned();
|
2023-03-19 02:16:49 +05:30
|
|
|
|
2024-01-07 23:50:10 +00:00
|
|
|
let proxy = PropertiesProxy::builder(&dbus)
|
|
|
|
.destination("org.freedesktop.UPower")
|
|
|
|
.expect("failed to set proxy destination address")
|
|
|
|
.path(path)
|
|
|
|
.expect("failed to set proxy path")
|
|
|
|
.cache_properties(zbus::CacheProperties::No)
|
|
|
|
.build()
|
2024-08-09 23:16:00 +01:00
|
|
|
.await?;
|
2023-03-19 02:16:49 +05:30
|
|
|
|
2024-08-09 23:16:00 +01:00
|
|
|
Ok(Arc::new(proxy))
|
2023-03-19 02:16:49 +05:30
|
|
|
}
|
|
|
|
|
2024-08-09 23:16:00 +01:00
|
|
|
register_fallible_client!(PropertiesProxy<'static>, upower);
|