diff --git a/Makefile b/Makefile index 898f4afd..76d3b4d4 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ endif VENDOR ?= 0 ifneq ($(VENDOR),0) - ARGS += --locked + ARGS += --offline --locked endif TARGET_BIN="$(DESTDIR)$(bindir)/$(BINARY)" diff --git a/debian/rules b/debian/rules index c8f4dd04..5a266947 100755 --- a/debian/rules +++ b/debian/rules @@ -15,9 +15,6 @@ ifeq ($(VENDOR),1) ischroot || make vendor endif -override_dh_auto_build: - CARGO_HOME="$$(pwd)/target/cargo" make - override_dh_installinit: dh_installinit -r diff --git a/debian/source/options b/debian/source/options new file mode 100644 index 00000000..97d96f63 --- /dev/null +++ b/debian/source/options @@ -0,0 +1,2 @@ +tar-ignore=target +tar-ignore=vendor \ No newline at end of file diff --git a/src/input/mod.rs b/src/input/mod.rs index 733fb479..4208fafc 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -1137,24 +1137,33 @@ impl State { workspace.toggle_floating_window(seat); } Action::Spawn(command) => { - if let Err(err) = std::process::Command::new("/bin/sh") - .arg("-c") - .arg(command.clone()) - .env("WAYLAND_DISPLAY", &self.common.socket) - .env( - "DISPLAY", - &self - .common - .xwayland_state - .as_ref() - .map(|s| format!(":{}", s.display)) - .unwrap_or(String::new()), - ) - .env_remove("COSMIC_SESSION_SOCK") - .spawn() - { - warn!(?err, "Failed to spawn \"{}\"", command); - } + let wayland_display = self.common.socket.clone(); + + let display = self + .common + .xwayland_state + .as_ref() + .map(|s| format!(":{}", s.display)) + .unwrap_or_default(); + + std::thread::spawn(move || { + let mut cmd = std::process::Command::new("/bin/sh"); + + cmd.arg("-c") + .arg(command.clone()) + .env("WAYLAND_DISPLAY", &wayland_display) + .env("DISPLAY", &display) + .env_remove("COSMIC_SESSION_SOCK"); + + match cmd.spawn() { + Ok(mut child) => { + let _res = child.wait(); + } + Err(err) => { + tracing::warn!(?err, "Failed to spawn \"{}\"", command); + } + } + }); } } }