From 139ecc8176e1940f03f7c2c5e867a9e05b6c49d2 Mon Sep 17 00:00:00 2001 From: Yuri Karamian Date: Thu, 4 Jun 2026 19:27:00 +0200 Subject: [PATCH] Add Interface Scale setting to zoom the whole app (80-200%) --- src-tauri/capabilities/desktop.json | 3 +- src-tauri/src/commands.rs | 8 +++++ src-tauri/src/lib.rs | 1 + src-tauri/src/types.rs | 3 ++ src/lib/api.ts | 4 +++ src/lib/components/SettingsPanel.svelte | 47 ++++++++++++++++++++++++- src/lib/types.ts | 1 + src/routes/+page.svelte | 10 ++++++ 8 files changed, 75 insertions(+), 2 deletions(-) diff --git a/src-tauri/capabilities/desktop.json b/src-tauri/capabilities/desktop.json index 78d56da..ed85a92 100644 --- a/src-tauri/capabilities/desktop.json +++ b/src-tauri/capabilities/desktop.json @@ -6,6 +6,7 @@ "windows": ["main"], "permissions": [ "updater:default", - "window-state:default" + "window-state:default", + "core:webview:allow-set-webview-zoom" ] } diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index ce60779..c18ac50 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -103,6 +103,14 @@ pub fn set_line_height(state: State<'_, AppState>, height: f64) -> Result<(), St Ok(()) } +#[tauri::command] +pub fn set_ui_scale(state: State<'_, AppState>, scale: f64) -> Result<(), String> { + let mut config = state.config.lock().map_err(|e| e.to_string())?; + config.ui_scale = Some(scale); + save_app_config(&config)?; + Ok(()) +} + // ── Notebooks ── #[tauri::command] diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 6be7ad1..3634df4 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -103,6 +103,7 @@ pub fn run() { commands::set_font_size, commands::set_font_family, commands::set_line_height, + commands::set_ui_scale, commands::get_notebooks, commands::count_root_notes, commands::create_notebook, diff --git a/src-tauri/src/types.rs b/src-tauri/src/types.rs index d75332d..ec01fa5 100644 --- a/src-tauri/src/types.rs +++ b/src-tauri/src/types.rs @@ -70,6 +70,8 @@ pub struct AppConfig { #[serde(default)] pub line_height: Option, #[serde(default)] + pub ui_scale: Option, + #[serde(default)] pub compact_notes: bool, #[serde(default)] pub time_format: String, @@ -167,6 +169,7 @@ impl Default for AppConfig { font_size: None, font_family: None, line_height: None, + ui_scale: None, compact_notes: false, time_format: "relative".to_string(), gpu_acceleration: true, diff --git a/src/lib/api.ts b/src/lib/api.ts index 20d73d8..9ced10e 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -43,6 +43,10 @@ export async function setLineHeight(height: number): Promise { return invoke("set_line_height", { height }); } +export async function setUiScale(scale: number): Promise { + return invoke("set_ui_scale", { scale }); +} + export async function getNotebooks(): Promise { return invoke("get_notebooks"); } diff --git a/src/lib/components/SettingsPanel.svelte b/src/lib/components/SettingsPanel.svelte index 4ec1bbe..5edc184 100644 --- a/src/lib/components/SettingsPanel.svelte +++ b/src/lib/components/SettingsPanel.svelte @@ -1,9 +1,10 @@