Files
feresaria/portal/src/main.rs
T

47 lines
1.4 KiB
Rust

mod backend;
mod bridge;
mod capture;
mod consent;
mod desktop;
mod eis;
mod inhibit;
mod input_capture;
mod lockdown;
mod parent;
mod permissions;
mod picker;
mod recording;
mod recording_region;
mod restore;
mod settings;
mod shortcuts;
mod stream;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let args: Vec<_> = std::env::args().skip(1).collect();
match args.as_slice() {
[flag, name, cursor] if flag == "--stream" => {
stream::run(name.clone(), cursor == "embedded", None)
}
[flag, id, cursor] if flag == "--stream-window" => {
let id: u64 = id.parse()?;
stream::run(format!("window:{id}"), cursor == "embedded", None)
}
[flag, name, cursor, generation] if flag == "--stream" => stream::run(
name.clone(),
cursor == "embedded",
Some(generation.parse()?),
),
[flag] if flag == "--sources" => {
let capture = capture::Capture::connect(&std::sync::atomic::AtomicBool::new(false))?;
println!("{}", serde_json::to_string(&capture.sources())?);
Ok(())
}
[flag] if flag == "--picker" => picker::run(),
[flag] if flag == "--consent" => consent::run(),
[] => tokio::runtime::Runtime::new()?.block_on(backend::run()),
_ => Err("Usage: xdg-desktop-portal-ferese [--sources]".into()),
}
}