diff --git a/src/main.rs b/src/main.rs index 0fa6068..19e0877 100644 --- a/src/main.rs +++ b/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::>()); + let (executable, args) = ( + args.next().unwrap_or_else(|| String::from("cosmic-comp")), + args.collect::>(), + ); 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;