use std::sync; use tokio::sync::mpsc; pub struct Service { _connection: zbus::Connection, } impl Service { pub async fn start( sessions: sync::Arc>, requests: mpsc::Sender, power_allowed: sync::Arc>, power_requests: mpsc::Sender, ) -> anyhow::Result { let connection = zbus::connection::Builder::system()? .serve_at( "/org/freedesktop/login1/session/auto", crate::backlight::Login1Session { sessions, requests }, )? .serve_at( "/org/freedesktop/login1", crate::power::Login1Manager { power_allowed, power_requests, }, )? .name("org.freedesktop.login1")? .build() .await?; Ok(Self { _connection: connection, }) } }