From 3be27dde0dbc5087fa68e0ce489c8da8d1629964 Mon Sep 17 00:00:00 2001 From: Michael Aaron Murphy Date: Tue, 24 Aug 2021 22:04:21 +0200 Subject: [PATCH] fix(scripts): Close signal was not being sent --- plugins/src/scripts/mod.rs | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/plugins/src/scripts/mod.rs b/plugins/src/scripts/mod.rs index 165b183..9f262d8 100644 --- a/plugins/src/scripts/mod.rs +++ b/plugins/src/scripts/mod.rs @@ -4,12 +4,12 @@ use pop_launcher::*; use futures_lite::{AsyncBufReadExt, StreamExt}; use postage::mpsc::Sender; use postage::prelude::*; +use smol::process::{Command, Stdio}; use std::collections::VecDeque; use std::os::unix::process::CommandExt; use std::{ io, path::{Path, PathBuf}, - process::{Command, Stdio}, }; const LOCAL_PATH: &str = ".local/share/pop-launcher/scripts"; @@ -53,24 +53,17 @@ impl App { } async fn activate(&mut self, id: u32) { - use fork::{daemon, Fork}; + if let Some(script) = self.scripts.get(id as usize) { + let interpreter = script.interpreter.as_deref().unwrap_or("sh"); + send(&mut self.out, PluginResponse::Close).await; - if let Ok(Fork::Child) = daemon(true, true) { - if let Some(script) = self.scripts.get(id as usize) { - let interpreter = script.interpreter.as_deref().unwrap_or("sh"); - - let why = dbg!(Command::new(interpreter).arg(script.path.as_os_str())) - .stdin(Stdio::null()) - .stdout(Stdio::null()) - .stderr(Stdio::null()) - .exec(); - - tracing::error!("failed to exec: {}", why); - std::process::exit(1); - } + let _ = Command::new(interpreter) + .arg(script.path.as_os_str()) + .stdin(Stdio::null()) + .stdout(Stdio::null()) + .stderr(Stdio::null()) + .spawn(); } - - send(&mut self.out, PluginResponse::Close).await; } async fn reload(&mut self) {