mirror of
https://gitlab.steamos.cloud/holo/steamos-manager.git
synced 2025-07-09 16:10:34 -04:00
Add initial dbus interface xml descripiton.
Much of this will change, but needed something to start with. Based on notes at https://gitlab.steamos.cloud/jupiter/tasks/-/issues/894 Use objectserver to get introspection done for us. Change to session bus for now since system bus will need a config file to allow us to take the name. Will add later. Implement one quick say_hello dbus method to start. Add copyright headers.
This commit is contained in:
parent
302fe3c063
commit
701ff23987
5 changed files with 347 additions and 31 deletions
55
src/main.rs
55
src/main.rs
|
@ -1,33 +1,48 @@
|
|||
use std::io::ErrorKind;
|
||||
/*
|
||||
* Copyright © 2023 Collabora Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
use zbus::{ConnectionBuilder, Result};
|
||||
|
||||
use steamos_manager::*;
|
||||
|
||||
use zbus::{Connection, Result};
|
||||
|
||||
#[async_std::main]
|
||||
async fn main() -> Result<()>
|
||||
{
|
||||
// This daemon is responsible for creating a dbus api that steam client can use to do various OS
|
||||
// level things (change brightness, etc.) In order to do that it reads a folder of dbus api
|
||||
// configuration files and exposes each configuration with the api in the config file. In order
|
||||
// to know what to do with each it gets the information from the same config file about whether
|
||||
// to run a script or call some other dbus api.
|
||||
// level things. It implements com.steampowered.SteamOSManager1 interface
|
||||
|
||||
let manager = manager::SMManager {};
|
||||
|
||||
let session_connection = Connection::session().await?;
|
||||
session_connection.request_name("com.steampowered.SteamOSManager").await?;
|
||||
|
||||
let result = initialize_apis("/usr/share/steamos-manager".to_string());
|
||||
match result {
|
||||
Ok(manager_apis) => {
|
||||
let worked: bool = create_dbus_apis(session_connection, manager_apis);
|
||||
}
|
||||
Err(error) => {
|
||||
println!("There was an error reading configuration files, doing nothing. {:?}", error);
|
||||
}
|
||||
}
|
||||
let _system_connection = ConnectionBuilder::session()?
|
||||
.name("com.steampowered.SteamOSManager1")?
|
||||
.serve_at("/com/steampowered/SteamOSManager1", manager)?
|
||||
.build()
|
||||
.await?;
|
||||
|
||||
loop
|
||||
{
|
||||
|
||||
std::future::pending::<()>().await;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue