mirror of
https://gitlab.steamos.cloud/holo/steamos-manager.git
synced 2025-07-08 07:30:36 -04:00
user_manager: Start bringing up user manager
This commit is contained in:
parent
65d8ff958e
commit
bf521a7bbb
4 changed files with 59 additions and 1 deletions
|
@ -254,4 +254,25 @@
|
||||||
|
|
||||||
</interface>
|
</interface>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
com.steampowered.SteamOSManager1.UserManager
|
||||||
|
@short_description: Interface to control various aspects of SteamOS running as a user.
|
||||||
|
|
||||||
|
Version available: 8
|
||||||
|
-->
|
||||||
|
<interface name="com.steampowered.SteamOSManager1.UserManager">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Version:
|
||||||
|
|
||||||
|
The version of this interface implemented by this object.
|
||||||
|
|
||||||
|
The manager may not support the latest version of the API.
|
||||||
|
Each method/property has an associated version number that
|
||||||
|
denotes in which interface version it first became available.
|
||||||
|
-->
|
||||||
|
<property name="Version" type="u" access="read"/>
|
||||||
|
|
||||||
|
</interface>
|
||||||
|
|
||||||
</node>
|
</node>
|
||||||
|
|
|
@ -25,12 +25,13 @@ mod root;
|
||||||
mod sls;
|
mod sls;
|
||||||
mod systemd;
|
mod systemd;
|
||||||
mod user;
|
mod user;
|
||||||
|
mod user_manager;
|
||||||
mod wifi;
|
mod wifi;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod testing;
|
mod testing;
|
||||||
|
|
||||||
const API_VERSION: u32 = 7;
|
const API_VERSION: u32 = 8;
|
||||||
|
|
||||||
trait Service
|
trait Service
|
||||||
where
|
where
|
||||||
|
|
|
@ -13,12 +13,18 @@ use zbus::connection::Connection;
|
||||||
use zbus::ConnectionBuilder;
|
use zbus::ConnectionBuilder;
|
||||||
|
|
||||||
use crate::daemon::Daemon;
|
use crate::daemon::Daemon;
|
||||||
|
use crate::user_manager::SteamOSManagerUser;
|
||||||
|
|
||||||
async fn create_connection() -> Result<Connection> {
|
async fn create_connection() -> Result<Connection> {
|
||||||
let connection = ConnectionBuilder::session()?
|
let connection = ConnectionBuilder::session()?
|
||||||
.name("com.steampowered.SteamOSManager1")?
|
.name("com.steampowered.SteamOSManager1")?
|
||||||
.build()
|
.build()
|
||||||
.await?;
|
.await?;
|
||||||
|
let manager = SteamOSManagerUser::new(connection.clone()).await?;
|
||||||
|
connection
|
||||||
|
.object_server()
|
||||||
|
.at("/com/steampowered/SteamOSManager1/User", manager)
|
||||||
|
.await?;
|
||||||
Ok(connection)
|
Ok(connection)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
30
src/user_manager.rs
Normal file
30
src/user_manager.rs
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
/*
|
||||||
|
* Copyright © 2023 Collabora Ltd.
|
||||||
|
* Copyright © 2024 Valve Software
|
||||||
|
* Copyright © 2024 Igalia S.L.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: MIT
|
||||||
|
*/
|
||||||
|
|
||||||
|
use anyhow::Result;
|
||||||
|
use zbus::{interface, Connection};
|
||||||
|
|
||||||
|
use crate::API_VERSION;
|
||||||
|
|
||||||
|
pub struct SteamOSManagerUser {
|
||||||
|
connection: Connection,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl SteamOSManagerUser {
|
||||||
|
pub async fn new(connection: Connection) -> Result<Self> {
|
||||||
|
Ok(SteamOSManagerUser { connection })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[interface(name = "com.steampowered.SteamOSManager1.UserManager")]
|
||||||
|
impl SteamOSManagerUser {
|
||||||
|
#[zbus(property(emits_changed_signal = "const"))]
|
||||||
|
async fn version(&self) -> u32 {
|
||||||
|
API_VERSION
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue