summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src-tauri/src/lib.rs
diff options
context:
space:
mode:
authorBrendan Allan <[email protected]>2026-01-13 15:32:54 +0800
committerGitHub <[email protected]>2026-01-13 15:32:54 +0800
commitddd9c71cca1f30a8214174fc10975e2ff3bb4635 (patch)
tree6fe6459c58be57feda11bc83126cfcbfb51a12e4 /packages/desktop/src-tauri/src/lib.rs
parent520a814fc20b5c87481f8ba73703c1c2d8142bc5 (diff)
downloadopencode-ddd9c71cca1f30a8214174fc10975e2ff3bb4635.tar.gz
opencode-ddd9c71cca1f30a8214174fc10975e2ff3bb4635.zip
feat(desktop): Tie desktop & CLI to the same Windows JobObject (#8153)
Diffstat (limited to 'packages/desktop/src-tauri/src/lib.rs')
-rw-r--r--packages/desktop/src-tauri/src/lib.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/packages/desktop/src-tauri/src/lib.rs b/packages/desktop/src-tauri/src/lib.rs
index e2682ec71..183220d16 100644
--- a/packages/desktop/src-tauri/src/lib.rs
+++ b/packages/desktop/src-tauri/src/lib.rs
@@ -1,9 +1,13 @@
mod cli;
+#[cfg(windows)]
+mod job_object;
mod window_customizer;
use cli::{install_cli, sync_cli};
use futures::FutureExt;
use futures::future;
+#[cfg(windows)]
+use job_object::*;
use std::{
collections::VecDeque,
net::TcpListener,
@@ -251,6 +255,9 @@ pub fn run() {
// Initialize log state
app.manage(LogState(Arc::new(Mutex::new(VecDeque::new()))));
+ #[cfg(windows)]
+ app.manage(JobObjectState::new());
+
let primary_monitor = app.primary_monitor().ok().flatten();
let size = primary_monitor
.map(|m| m.size().to_logical(m.scale_factor()))
@@ -303,7 +310,14 @@ pub fn run() {
let res = match setup_server_connection(&app, custom_url).await {
Ok((child, url)) => {
+ #[cfg(windows)]
+ if let Some(child) = &child {
+ let job_state = app.state::<JobObjectState>();
+ job_state.assign_pid(child.pid());
+ }
+
app.state::<ServerState>().set_child(child);
+
Ok(url)
}
Err(e) => Err(e),