1
This commit is contained in:
45
.cursor/rules/tauri-desktop.mdc
Normal file
45
.cursor/rules/tauri-desktop.mdc
Normal file
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: Tauri 2 桌面壳、窗口与单例规范
|
||||
globs: src-tauri/**/*
|
||||
alwaysApply: false
|
||||
---
|
||||
|
||||
# Tauri 桌面规范
|
||||
|
||||
## 窗口配置(`tauri.conf.json`)
|
||||
|
||||
- 主窗口 `label`: `"main"`(单例回调中通过此 label 获取窗口)
|
||||
- `decorations: false` — 无边框;`resizable: true`
|
||||
- `identifier`: `com.aiclient.desktop`(避免以 `.app` 结尾)
|
||||
|
||||
## 单例运行
|
||||
|
||||
- 插件:`tauri-plugin-single-instance`
|
||||
- 二次启动时:对 `main` 窗口 `unminimize` → `show` → `set_focus`,**不**新建窗口
|
||||
- 注册于 `src-tauri/src/lib.rs`,需 `use tauri::Manager`
|
||||
|
||||
```rust
|
||||
.plugin(tauri_plugin_single_instance::init(|app, _args, _cwd| {
|
||||
if let Some(window) = app.get_webview_window("main") {
|
||||
let _ = window.unminimize();
|
||||
let _ = window.show();
|
||||
let _ = window.set_focus();
|
||||
}
|
||||
}))
|
||||
```
|
||||
|
||||
## 权限(`capabilities/default.json`)
|
||||
|
||||
- 拖动窗口需:`core:window:allow-start-dragging`
|
||||
- 前端标题栏元素使用 `data-tauri-drag-region`(在 `AppTitlebar.vue`)
|
||||
|
||||
## Rust 约定
|
||||
|
||||
- 入口逻辑在 `src/lib.rs`;`main.rs` 仅调用 `tauri_app_lib::run()`
|
||||
- 新增 Tauri 命令:在 `lib.rs` 用 `#[tauri::command]` 定义,并在 `invoke_handler` 注册
|
||||
- 前端调用:`import { invoke } from "@tauri-apps/api/core"`
|
||||
|
||||
## 开发注意
|
||||
|
||||
- Vite 固定端口 `1420`(见 `vite.config.js`),与 `tauri.conf.json` 的 `devUrl` 一致
|
||||
- 修改 capabilities 或插件后需重新 `tauri dev` / `tauri build`
|
||||
Reference in New Issue
Block a user