diff options
| author | Adam <[email protected]> | 2026-01-12 10:11:29 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-01-15 07:29:13 -0600 |
| commit | 679270d9e0731c2b3e2c059d83907cb4086d90e2 (patch) | |
| tree | 4e8d70a281b92f86a4b916ed45a5410ecbba0289 /packages/desktop | |
| parent | 9f66a45970d1edf12ae9b3e7a22d77711b5e51c3 (diff) | |
| download | opencode-679270d9e0731c2b3e2c059d83907cb4086d90e2.tar.gz opencode-679270d9e0731c2b3e2c059d83907cb4086d90e2.zip | |
feat(app): new layout
Diffstat (limited to 'packages/desktop')
| -rw-r--r-- | packages/desktop/index.html | 2 | ||||
| -rw-r--r-- | packages/desktop/src-tauri/Cargo.toml | 1 | ||||
| -rw-r--r-- | packages/desktop/src-tauri/capabilities/default.json | 1 | ||||
| -rw-r--r-- | packages/desktop/src-tauri/src/lib.rs | 45 | ||||
| -rw-r--r-- | packages/desktop/src-tauri/tauri.conf.json | 14 | ||||
| -rw-r--r-- | packages/desktop/src-tauri/tauri.prod.conf.json | 21 |
6 files changed, 62 insertions, 22 deletions
diff --git a/packages/desktop/index.html b/packages/desktop/index.html index 11e9f39a6..d7d439ab8 100644 --- a/packages/desktop/index.html +++ b/packages/desktop/index.html @@ -17,7 +17,7 @@ </head> <body class="antialiased overscroll-none text-12-regular overflow-hidden"> <noscript>You need to enable JavaScript to run this app.</noscript> - <div id="root" class="flex flex-col h-screen"></div> + <div id="root" class="flex flex-col h-dvh"></div> <script src="/src/index.tsx" type="module"></script> </body> </html> diff --git a/packages/desktop/src-tauri/Cargo.toml b/packages/desktop/src-tauri/Cargo.toml index 05422b096..1a5864641 100644 --- a/packages/desktop/src-tauri/Cargo.toml +++ b/packages/desktop/src-tauri/Cargo.toml @@ -41,6 +41,7 @@ semver = "1.0.27" reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] } uuid = { version = "1.19.0", features = ["v4"] } + [target.'cfg(target_os = "linux")'.dependencies] gtk = "0.18.2" webkit2gtk = "=2.0.1" diff --git a/packages/desktop/src-tauri/capabilities/default.json b/packages/desktop/src-tauri/capabilities/default.json index 1b305aebe..2653f8c28 100644 --- a/packages/desktop/src-tauri/capabilities/default.json +++ b/packages/desktop/src-tauri/capabilities/default.json @@ -7,6 +7,7 @@ "core:default", "opener:default", "core:window:allow-start-dragging", + "core:window:allow-set-theme", "core:webview:allow-set-webview-zoom", "core:window:allow-is-focused", "core:window:allow-show", diff --git a/packages/desktop/src-tauri/src/lib.rs b/packages/desktop/src-tauri/src/lib.rs index 0d5b585e8..15033fd56 100644 --- a/packages/desktop/src-tauri/src/lib.rs +++ b/packages/desktop/src-tauri/src/lib.rs @@ -14,7 +14,7 @@ use std::{ sync::{Arc, Mutex}, time::{Duration, Instant}, }; -use tauri::{AppHandle, LogicalSize, Manager, RunEvent, State, WebviewUrl, WebviewWindow}; +use tauri::{AppHandle, LogicalSize, Manager, RunEvent, State, WebviewWindowBuilder}; use tauri_plugin_dialog::{DialogExt, MessageDialogButtons, MessageDialogResult}; use tauri_plugin_shell::process::{CommandChild, CommandEvent}; use tauri_plugin_store::StoreExt; @@ -237,7 +237,14 @@ pub fn run() { } })) .plugin(tauri_plugin_os::init()) - .plugin(tauri_plugin_window_state::Builder::new().build()) + .plugin( + tauri_plugin_window_state::Builder::new() + .with_state_flags( + tauri_plugin_window_state::StateFlags::all() + - tauri_plugin_window_state::StateFlags::DECORATIONS, + ) + .build(), + ) .plugin(tauri_plugin_store::Builder::new().build()) .plugin(tauri_plugin_dialog::init()) .plugin(tauri_plugin_shell::init()) @@ -268,29 +275,25 @@ pub fn run() { .map(|m| m.size().to_logical(m.scale_factor())) .unwrap_or(LogicalSize::new(1920, 1080)); - #[allow(unused_mut)] - let mut window_builder = - WebviewWindow::builder(&app, "main", WebviewUrl::App("/".into())) - .title("OpenCode") - .inner_size(size.width as f64, size.height as f64) - .decorations(true) - .zoom_hotkeys_enabled(true) - .disable_drag_drop_handler() - .initialization_script(format!( - r#" + let config = app + .config() + .app + .windows + .iter() + .find(|w| w.label == "main") + .expect("main window config missing"); + + let window_builder = WebviewWindowBuilder::from_config(&app, config) + .expect("Failed to create window builder from config") + .inner_size(size.width as f64, size.height as f64) + .initialization_script(format!( + r#" window.__OPENCODE__ ??= {{}}; window.__OPENCODE__.updaterEnabled = {updater_enabled}; "# - )); - - #[cfg(target_os = "macos")] - { - window_builder = window_builder - .title_bar_style(tauri::TitleBarStyle::Overlay) - .hidden_title(true); - } + )); - window_builder.build().expect("Failed to create window"); + let _window = window_builder.build().expect("Failed to create window"); let (tx, rx) = oneshot::channel(); app.manage(ServerState::new(None, rx)); diff --git a/packages/desktop/src-tauri/tauri.conf.json b/packages/desktop/src-tauri/tauri.conf.json index b6737d383..19da295c5 100644 --- a/packages/desktop/src-tauri/tauri.conf.json +++ b/packages/desktop/src-tauri/tauri.conf.json @@ -11,6 +11,20 @@ "frontendDist": "../dist" }, "app": { + "windows": [ + { + "label": "main", + "create": false, + "title": "OpenCode", + "url": "/", + "decorations": true, + "dragDropEnabled": false, + "zoomHotkeysEnabled": true, + "titleBarStyle": "Overlay", + "hiddenTitle": true, + "trafficLightPosition": { "x": 12.0, "y": 18.0 } + } + ], "withGlobalTauri": true, "security": { "csp": null diff --git a/packages/desktop/src-tauri/tauri.prod.conf.json b/packages/desktop/src-tauri/tauri.prod.conf.json index 7ce4c7842..282db5b26 100644 --- a/packages/desktop/src-tauri/tauri.prod.conf.json +++ b/packages/desktop/src-tauri/tauri.prod.conf.json @@ -2,6 +2,27 @@ "$schema": "https://schema.tauri.app/config/2", "productName": "OpenCode", "identifier": "ai.opencode.desktop", + "app": { + "windows": [ + { + "label": "main", + "create": false, + "title": "OpenCode", + "url": "/", + "decorations": true, + "dragDropEnabled": false, + "zoomHotkeysEnabled": true, + "titleBarStyle": "Overlay", + "hiddenTitle": true, + "trafficLightPosition": { "x": 12.0, "y": 18.0 } + } + ], + "withGlobalTauri": true, + "security": { + "csp": null + }, + "macOSPrivateApi": true + }, "bundle": { "createUpdaterArtifacts": true, "icon": [ |
