Skip to main content
Glama
resize_window.rs3.2 kB
//! Window resize functionality. use serde::{Deserialize, Serialize}; use tauri::{AppHandle, LogicalSize, PhysicalSize, Runtime}; use super::list_windows::resolve_window; /// Parameters for resizing a window. #[derive(Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ResizeWindowParams { /// Width in pixels pub width: u32, /// Height in pixels pub height: u32, /// Optional window label (defaults to "main") pub window_id: Option<String>, /// Whether to use logical (true) or physical (false) pixels. Defaults to logical. #[serde(default = "default_logical")] pub logical: bool, } fn default_logical() -> bool { true } /// Result of a window resize operation. #[derive(Debug, Serialize)] #[serde(rename_all = "camelCase")] pub struct ResizeWindowResult { /// Whether the resize was successful pub success: bool, /// The window that was resized pub window_label: String, /// The new width pub width: u32, /// The new height pub height: u32, /// Whether logical pixels were used pub logical: bool, /// Error message if resize failed pub error: Option<String>, } /// Resizes a window to the specified dimensions. /// /// # Arguments /// /// * `app` - The Tauri application handle /// * `params` - Resize parameters including width, height, and optional window label /// /// # Returns /// /// * `Ok(ResizeWindowResult)` - Result of the resize operation /// * `Err(String)` - Error message if the operation fails /// /// # Notes /// /// - Uses logical pixels by default (respects display scaling) /// - Set `logical: false` to use physical pixels /// - The resize may fail if the window has fixed size constraints pub async fn resize_window<R: Runtime>( app: AppHandle<R>, params: ResizeWindowParams, ) -> Result<ResizeWindowResult, String> { let window_label = params .window_id .clone() .unwrap_or_else(|| "main".to_string()); let window = resolve_window(&app, params.window_id)?; // Check if window is resizable let is_resizable = window.is_resizable().unwrap_or(true); if !is_resizable { return Ok(ResizeWindowResult { success: false, window_label, width: params.width, height: params.height, logical: params.logical, error: Some("Window is not resizable".to_string()), }); } // Perform the resize let result = if params.logical { window.set_size(LogicalSize::new(params.width, params.height)) } else { window.set_size(PhysicalSize::new(params.width, params.height)) }; match result { Ok(()) => Ok(ResizeWindowResult { success: true, window_label, width: params.width, height: params.height, logical: params.logical, error: None, }), Err(e) => Ok(ResizeWindowResult { success: false, window_label, width: params.width, height: params.height, logical: params.logical, error: Some(format!("Failed to resize window: {e}")), }), } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hypothesi/mcp-server-tauri'

If you have feedback or need assistance with the MCP directory API, please join our Discord server