main: Only launch xdg-portal on COSMIC
This commit is contained in:
parent
c44946be82
commit
5a0df6afb6
1 changed files with 30 additions and 22 deletions
52
src/main.rs
52
src/main.rs
|
|
@ -9,7 +9,10 @@ mod service;
|
|||
mod systemd;
|
||||
|
||||
use std::{
|
||||
borrow::Cow, env, os::fd::{AsRawFd, OwnedFd}, sync::Arc
|
||||
borrow::Cow,
|
||||
env,
|
||||
os::fd::{AsRawFd, OwnedFd},
|
||||
sync::Arc,
|
||||
};
|
||||
|
||||
use async_signals::Signals;
|
||||
|
|
@ -115,7 +118,10 @@ async fn start(
|
|||
info!("Starting cosmic-session");
|
||||
|
||||
let mut args = env::args().skip(1);
|
||||
let (executable, args) = (args.next().unwrap_or_else(|| String::from("cosmic-comp")), args.collect::<Vec<_>>());
|
||||
let (executable, args) = (
|
||||
args.next().unwrap_or_else(|| String::from("cosmic-comp")),
|
||||
args.collect::<Vec<_>>(),
|
||||
);
|
||||
|
||||
let process_manager = ProcessManager::new().await;
|
||||
_ = process_manager.set_max_restarts(usize::MAX).await;
|
||||
|
|
@ -336,26 +342,28 @@ async fn start(
|
|||
)
|
||||
.await;
|
||||
|
||||
let span = info_span!(parent: None, "xdg-desktop-portal-cosmic");
|
||||
let mut sockets = Vec::with_capacity(1);
|
||||
let extra_env = Vec::with_capacity(1);
|
||||
let portal_extras =
|
||||
if let Ok((mut env, fd)) = create_privileged_socket(&mut sockets, &extra_env) {
|
||||
let mut env = env.remove(0);
|
||||
env.0 = "PORTAL_WAYLAND_SOCKET".to_string();
|
||||
vec![(fd, env, sockets.remove(0))]
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
start_component(
|
||||
XDP_COSMIC.unwrap_or("/usr/libexec/xdg-desktop-portal-cosmic"),
|
||||
span,
|
||||
&process_manager,
|
||||
&env_vars,
|
||||
&socket_tx,
|
||||
portal_extras,
|
||||
)
|
||||
.await;
|
||||
if env::var("XDG_CURRENT_DESKTOP").as_deref() == Ok("COSMIC") {
|
||||
let span = info_span!(parent: None, "xdg-desktop-portal-cosmic");
|
||||
let mut sockets = Vec::with_capacity(1);
|
||||
let extra_env = Vec::with_capacity(1);
|
||||
let portal_extras =
|
||||
if let Ok((mut env, fd)) = create_privileged_socket(&mut sockets, &extra_env) {
|
||||
let mut env = env.remove(0);
|
||||
env.0 = "PORTAL_WAYLAND_SOCKET".to_string();
|
||||
vec![(fd, env, sockets.remove(0))]
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
start_component(
|
||||
XDP_COSMIC.unwrap_or("/usr/libexec/xdg-desktop-portal-cosmic"),
|
||||
span,
|
||||
&process_manager,
|
||||
&env_vars,
|
||||
&socket_tx,
|
||||
portal_extras,
|
||||
)
|
||||
.await;
|
||||
}
|
||||
|
||||
let mut signals = Signals::new(vec![libc::SIGTERM, libc::SIGINT]).unwrap();
|
||||
let mut status = Status::Exited;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue