main: Only launch xdg-portal on COSMIC

This commit is contained in:
Victoria Brekenfeld 2024-10-25 15:45:48 +02:00 committed by Ian Douglas Scott
parent c44946be82
commit 5a0df6afb6

View file

@ -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;