terminal: Spawn terminal process on main thread on unix (#42234) (cherry-pick to preview) (#42236)
zed-zippy[bot]
and
Lukas Wirth
created
Cherry-pick of #42234 to preview
----
Otherwise the terminal will not process the signals correctly
Release Notes:
- Fixed ctrl+c and friends not working in the terminal on macOS and
linux
Co-authored-by: Lukas Wirth <lukas@zed.dev>
@@ -426,7 +426,7 @@ impl TerminalBuilder {
activation_script: Vec<String>,
) -> Task<Result<TerminalBuilder>> {
let version = release_channel::AppVersion::global(cx);
- cx.background_spawn(async move {
+ let fut = async move {
// If the parent environment doesn't have a locale set
// (As is the case when launched from a .app on MacOS),
// and the Project doesn't have a locale set, then
@@ -648,7 +648,13 @@ impl TerminalBuilder {
terminal,
events_rx,
})
- })
+ };
+ // the thread we spawn things on has an effect on signal handling
+ if cfg!(target_os = "unix") {
+ cx.spawn(async move |_| fut.await)
+ } else {
+ cx.background_spawn(fut)
+ }
}
pub fn subscribe(mut self, cx: &Context<Terminal>) -> Terminal {