- 新增系统托盘图标及菜单,支持显示窗口、启动/停止穿透、退出应用 - 点击窗口关闭按钮或使用系统关闭快捷键时,弹出确认对话框,可选择最小化到托盘或直接退出 - 托盘菜单随语言切换同步更新,且根据穿透运行状态自动启用/禁用对应选项 - 升级应用版本至v1.1.0,添加Tauri tray-icon特性及相关权限配置
67 lines
1.7 KiB
TypeScript
67 lines
1.7 KiB
TypeScript
/**
|
|
* Tauri 窗口控制封装。
|
|
* 在纯浏览器环境(非 Tauri)下调用会被安全忽略,方便 `pnpm dev` 调试。
|
|
*/
|
|
|
|
export function isTauri() {
|
|
return typeof window !== "undefined" && "__TAURI_INTERNALS__" in window
|
|
}
|
|
|
|
async function currentWindow() {
|
|
if (!isTauri()) return null
|
|
const { getCurrentWindow } = await import("@tauri-apps/api/window")
|
|
return getCurrentWindow()
|
|
}
|
|
|
|
/** 最小化窗口 */
|
|
export async function minimizeWindow() {
|
|
const win = await currentWindow()
|
|
await win?.minimize()
|
|
}
|
|
|
|
/** 最大化 / 还原窗口 */
|
|
export async function toggleMaximizeWindow() {
|
|
const win = await currentWindow()
|
|
await win?.toggleMaximize()
|
|
}
|
|
|
|
/** 关闭窗口 */
|
|
export async function closeWindow() {
|
|
const win = await currentWindow()
|
|
await win?.close()
|
|
}
|
|
|
|
/** 隐藏窗口(最小化到系统托盘,保持程序在后台运行) */
|
|
export async function hideWindow() {
|
|
const win = await currentWindow()
|
|
await win?.hide()
|
|
}
|
|
|
|
/** 显示并聚焦窗口(从系统托盘恢复) */
|
|
export async function revealWindow() {
|
|
const win = await currentWindow()
|
|
if (!win) return
|
|
await win.show()
|
|
await win.unminimize()
|
|
await win.setFocus()
|
|
}
|
|
|
|
/** 退出整个应用(退出前由调用方负责停止穿透等收尾工作) */
|
|
export async function exitApp() {
|
|
if (!isTauri()) return
|
|
const { exit } = await import("@tauri-apps/plugin-process")
|
|
await exit(0)
|
|
}
|
|
|
|
/** 开始拖拽窗口(配合 data-tauri-drag-region 使用) */
|
|
export async function startDragging() {
|
|
const win = await currentWindow()
|
|
await win?.startDragging()
|
|
}
|
|
|
|
/** 是否已最大化 */
|
|
export async function isWindowMaximized() {
|
|
const win = await currentWindow()
|
|
return (await win?.isMaximized()) ?? false
|
|
}
|