feat(desktop): ship full and mini clients
This commit is contained in:
@@ -9,5 +9,5 @@ npm run desktop:dev
|
||||
```
|
||||
|
||||
- Web 开发端口:`5180`
|
||||
- 桌面窗口默认尺寸:`420 × 820`
|
||||
- 桌面窗口默认宽度:`420`;启动后高度自动适配当前屏幕全高,并停靠在屏幕右侧
|
||||
- 左右停靠状态保存在本地;在 Tauri 桌面环境中会移动实际窗口。
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use tauri::{PhysicalPosition, Window};
|
||||
use tauri::{PhysicalPosition, PhysicalSize, Window};
|
||||
|
||||
#[tauri::command]
|
||||
fn dock_window(window: Window, side: String) -> Result<(), String> {
|
||||
@@ -9,12 +9,16 @@ fn dock_window(window: Window, side: String) -> Result<(), String> {
|
||||
let window_size = window.outer_size().map_err(|error| error.to_string())?;
|
||||
let monitor_position = monitor.position();
|
||||
let monitor_size = monitor.size();
|
||||
let dock_size = PhysicalSize::new(window_size.width, monitor_size.height);
|
||||
let x = if side == "left" {
|
||||
monitor_position.x
|
||||
} else {
|
||||
monitor_position.x + monitor_size.width as i32 - window_size.width as i32
|
||||
monitor_position.x + monitor_size.width as i32 - dock_size.width as i32
|
||||
};
|
||||
|
||||
window
|
||||
.set_size(dock_size)
|
||||
.map_err(|error| error.to_string())?;
|
||||
window
|
||||
.set_position(PhysicalPosition::new(x, monitor_position.y))
|
||||
.map_err(|error| error.to_string())?;
|
||||
|
||||
@@ -31,7 +31,10 @@ export function App() {
|
||||
const [experts, setExperts] = useState<Expert[]>([])
|
||||
const [aiSessions, setAISessions] = useState<AISession[]>([])
|
||||
const [view, setView] = useState<View>('home')
|
||||
const [dockSide, setDockSide] = useState<DockSide>(() => localStorage.getItem('senlin-mini-dock') === 'left' ? 'left' : 'right')
|
||||
const [dockSide, setDockSide] = useState<DockSide>(() => {
|
||||
if ('__TAURI_INTERNALS__' in window) return 'right'
|
||||
return localStorage.getItem('senlin-mini-dock') === 'left' ? 'left' : 'right'
|
||||
})
|
||||
const [loading, setLoading] = useState(Boolean(session))
|
||||
const [error, setError] = useState('')
|
||||
const [action, setAction] = useState<Action>(null)
|
||||
|
||||
Reference in New Issue
Block a user