feat(mini): add dockable compact client

This commit is contained in:
2026-07-22 18:34:20 +08:00
parent 4a82efc984
commit a23a110758
26 changed files with 7615 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
use tauri::{PhysicalPosition, Window};
#[tauri::command]
fn dock_window(window: Window, side: String) -> Result<(), String> {
let monitor = window
.current_monitor()
.map_err(|error| error.to_string())?
.ok_or_else(|| "无法识别当前屏幕".to_string())?;
let window_size = window.outer_size().map_err(|error| error.to_string())?;
let monitor_position = monitor.position();
let monitor_size = monitor.size();
let x = if side == "left" {
monitor_position.x
} else {
monitor_position.x + monitor_size.width as i32 - window_size.width as i32
};
window
.set_position(PhysicalPosition::new(x, monitor_position.y))
.map_err(|error| error.to_string())?;
window
.set_always_on_top(true)
.map_err(|error| error.to_string())?;
Ok(())
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.invoke_handler(tauri::generate_handler![dock_window])
.run(tauri::generate_context!())
.expect("failed to run 森林AI Mini");
}