Update for spawn_desktop_exec that calls SpawnTransientUnit

Allows `xdg-desktop-portal` to get app id from PID.

Also updates calls to `cosmic::process::spawn` to spawn in future.
This commit is contained in:
Ian Douglas Scott 2024-07-25 10:21:46 -07:00 committed by Ian Douglas Scott
parent b0e4e6fc6d
commit 293a91e8b1
11 changed files with 76 additions and 119 deletions

View file

@ -1178,6 +1178,7 @@ impl cosmic::Application for CosmicAppList {
},
WaylandUpdate::ActivationToken {
token,
app_id,
exec,
gpu_idx,
} => {
@ -1194,8 +1195,8 @@ impl cosmic::Application for CosmicAppList {
.map(|(k, v)| (k.clone(), v.clone())),
);
}
tokio::task::spawn_blocking(|| {
cosmic::desktop::spawn_desktop_exec(exec, envs);
tokio::spawn(async move {
cosmic::desktop::spawn_desktop_exec(exec, envs, app_id.as_deref()).await
});
}
}

View file

@ -179,6 +179,7 @@ impl ActivationHandler for AppData {
fn new_token(&mut self, token: String, data: &ExecRequestData) {
let _ = self.tx.unbounded_send(WaylandUpdate::ActivationToken {
token: Some(token),
app_id: data.app_id().map(|x| x.to_owned()),
exec: data.exec.clone(),
gpu_idx: data.gpu_idx,
});
@ -678,6 +679,7 @@ pub(crate) fn wayland_handler(
} else {
let _ = state.tx.unbounded_send(WaylandUpdate::ActivationToken {
token: None,
app_id: Some(app_id),
exec,
gpu_idx,
});

View file

@ -107,6 +107,7 @@ pub enum WaylandUpdate {
Output(OutputUpdate),
ActivationToken {
token: Option<String>,
app_id: Option<String>,
exec: String,
gpu_idx: Option<usize>,
},