mcpField
D
desktop-applications

desktop-applications

github.com/bobmatnyc开发78249 次安装15 周前更新
代码仓库

关于 desktop-applications

面向 Rust 桌面应用开发的技能,涵盖框架选择、架构、平台集成与发布。帮助开发者在 Tauri 的 Web UI 与 Rust 后端方案,以及纯 Rust GUI 框架之间做出选择。

主要功能

  1. 01比较 Tauri 与原生 GUI 框架
  2. 02规划前后端分层与 IPC
  3. 03指导异步运行时和状态管理
  4. 04处理系统集成与跨平台构建

适用场景

  1. 01使用 Tauri 构建桌面应用
  2. 02开发 Rust 原生 GUI 工具
  3. 03为应用添加系统托盘或文件访问
  4. 04准备跨平台构建与发布

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bobmatnyc/claude-mpm-skills --skill desktop-applications

安装后在 Claude Code 中输入/desktop-applications确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

metadata.json
references/
architecture-patterns.md
native-gui-frameworks.md
platform-integration.md
state-management.md
tauri-framework.md
testing-deployment.md

详细介绍

Rust 桌面应用

概述

Rust 已成为构建桌面应用的首选语言之一,能够兼顾原生性能与内存安全。其生态系统提供了两种主要方案:用于混合式 Web UI + Rust 后端应用的 Tauri(可以把它想象成 Electron,但体积小 10 倍、速度也快得多),以及 egui、iced 和 slint 等用于纯 Rust 界面的原生 GUI 框架。

Tauri 彻底革新了桌面开发:开发者可以用 Web 技术(React、Vue、Svelte)构建前端,同时利用 Rust 的性能与安全性执行系统级操作。Tauri 应用的打包体积不到 5MB,内存占用仅为 Electron 的 1/10,能够提供桌面级性能。原生框架则适用于特定场景:egui 适用于即时模式工具和游戏编辑器,iced 适用于 Elm 风格的响应式应用,slint 适用于嵌入式和声明式 UI。

本技能涵盖完整的 Rust 桌面开发生命周期,从框架选择到架构、状态管理、平台集成和部署。你将构建可用于生产环境的应用,并采用恰当的 IPC 模式、异步运行时集成、原生系统访问方式和跨平台分发方案。

何时使用此技能

在构建需要原生性能、小型打包体积、系统集成或内存安全保证的桌面应用时启用。具体适用于:

  • 使用 Web UI + Rust 后端构建 Electron 替代方案(Tauri)
  • 创建高性能开发者工具或效率应用
  • 开发需要原生 OS 集成的系统工具
  • 构建适用于 Windows、macOS 和 Linux 的跨平台应用
  • 需要小于 10MB 的打包体积,而非 100MB 以上的 Electron 应用
  • 实现实时应用(音视频处理、游戏)
  • 创建嵌入式 GUI 应用(自助服务终端、IoT 设备)

不适用场景

  • 简单的 Web 应用——使用 Next.js、Vite 或 Web 框架
  • 移动端优先的应用——使用 Flutter、React Native 或 Kotlin Multiplatform
  • 纯 CLI 工具——使用 clap/structopt 构建命令行应用
  • 浏览器扩展——使用 WebExtensions API
  • 快速原型——原生开发需要额外的环境配置
  • 团队缺乏 Rust 经验——系统编程的学习曲线陡峭

铁律

WEB UI + RUST 后端用 TAURI|纯 RUST 用原生 GUI|切勿在前端混入业务逻辑

在前端和后端重复实现逻辑,或绕过 IPC 直接访问,都会违反架构原则。

核心原则

  1. 框架选择与团队匹配:擅长 Web 技术的团队选用 Tauri,以 Rust 为主的项目选用原生 GUI
  2. 明确分层:前端负责 UI,Rust 后端负责业务逻辑和系统访问
  3. 类型安全的 IPC:命令和事件使用 serde 序列化,并进行强类型定义
  4. 异步运行时:后端并发使用 Tokio,避免阻塞主线程
  5. 安全优先:验证所有 IPC 输入,尽量减少暴露的命令,并配置 CSP 策略
  6. 平台抽象:一次编写,妥善处理平台差异

快速入门

  1. 选择框架

    • Tauri:具备 Web 开发技能(React/Vue/Svelte)?想要快速开发 UI?→ cargo install tauri-cli
    • 原生 GUI:纯 Rust 项目?即时模式或响应式模式?→ 选择 egui/iced/slint
  2. 初始化项目

    # Tauri
    cargo create-tauri-app my-app
    # Select: npm, React/Vue/Svelte, TypeScript
    
    # Native (egui example)
    cargo new my-app
    cargo add eframe egui
    
  3. 搭建架构

    • Tauri:在 src-tauri/src/main.rs 中定义命令并处理 IPC
    • 原生:实现应用状态、事件循环和 UI 更新逻辑
    • 结构:src/(后端)、ui/ 或 src-ui/(Tauri 前端)
  4. 实现核心功能

    • 使用 #[tauri::command] 定义 Tauri 命令
    • 搭建状态管理(Arc<Mutex> 或通道)
    • 集成 Tokio 以支持异步操作
    • 使用 Result<T, E> 添加错误处理
  5. 添加平台集成

    • 文件系统访问(对话框、读取/写入)
    • 系统托盘、通知、自动更新
    • 深层链接、自定义 URL 方案
    • 操作系统专属功能(Windows 注册表、macOS 沙盒)
  6. 构建和分发

    # Development
    cargo tauri dev  # or cargo run
    
    # Production build
    cargo tauri build  # Creates installers for current platform
    
    # Cross-platform: Use GitHub Actions with matrix builds
    

框架决策树

Need desktop app?
├─ Have web frontend skills (React/Vue/Svelte)?
│  └─ YES → Use Tauri
│     ├─ Need <5MB bundles? ✓
│     ├─ System integration? ✓
│     ├─ Cross-platform? ✓
│     └─ Rapid UI development? ✓
│
└─ Pure Rust, no web frontend?
   ├─ Game editor or immediate mode tools? → egui
   ├─ Elm-style reactive architecture? → iced
   ├─ Declarative UI, embedded devices? → slint
   └─ Data-first reactive? → druid

适用 Tauri 的情况:熟悉 Web UI,需要现代前端框架,快速迭代 适用原生 GUI 的情况:追求最高性能、不依赖 Web、需要专门的 UI 模式

导航

详细指南:

  • Tauri 框架:完整介绍 Tauri 架构、项目搭建、IPC 通信模式、原生 API 访问、配置、安全模型和构建流程,并提供实际示例
  • 原生 GUI 框架:深入介绍 egui、iced、druid 和 slint,包括架构模式、各自的适用场景、对比表和生产环境代码示例
  • 架构模式:桌面应用专属模式,包括 MVC/MVVM、命令模式、事件驱动架构、插件系统、资源管理和错误处理策略
  • 状态管理:状态管理策略、与 Tokio 的异步运行时集成、消息传递、响应式模式、持久化(配置/数据库)和多窗口状态共享
  • 平台集成:文件系统访问、系统托盘、通知、自动更新、深层链接、操作系统专属功能(Windows/macOS/Linux)、权限和安全
  • 测试与部署:集成测试、UI 测试方法、交叉编译、平台专属构建、分发(安装程序/软件包/商店)、签名、公证和 CI/CD 流水线

关键模式

正确的 Tauri 模式:

✅ Commands in Rust backend
✅ Type-safe IPC with serde
✅ Async operations with Tokio
✅ State management with Arc<Mutex<T>>
✅ Error propagation with Result<T, E>
✅ Frontend calls backend via invoke()

正确的原生 GUI 模式:

✅ Immediate mode (egui) or retained mode (iced)
✅ State updates trigger redraws
✅ Event handling in Rust
✅ Platform-agnostic rendering
✅ Resource cleanup on drop

错误模式:

❌ Business logic in frontend JavaScript
❌ Exposing unsafe commands without validation
❌ Blocking operations on main thread
❌ Direct filesystem access from frontend
❌ Missing error handling on IPC
❌ Hardcoded platform-specific paths

危险信号 - 停止

  • 阻塞主线程 - 对长时间运行的操作使用 Tokio spawn
  • 暴露敏感命令 - 进行验证、限制速率并尽量缩小暴露范围
  • Tauri 中缺少 CSP - 配置内容安全策略
  • 未验证输入 - 始终验证 IPC 命令参数
  • 前端直接访问文件 - 使用 Tauri 文件系统 API
  • 忽视平台差异 - 在所有目标平台上测试
  • 软件包体积过大 - 分析并优化依赖项
  • 没有自动更新策略 - 用户不会手动更新

与其他技能集成

  • vite-local-dev:将 Vite 与 Tauri 集成,实现热模块替换和快速前端构建
  • async-testing:测试 Tauri 命令和后台任务中的异步 Tokio 代码
  • performance-profiling:使用 Criterion 分析 Rust 后端,并使用火焰图进行优化
  • test-driven-development:为命令、状态管理和业务逻辑编写测试
  • verification-before-completion:发布前测试跨平台构建
  • systematic-debugging:调试 Tauri IPC 问题、检查控制台日志并使用 Rust 调试器

真实影响

性能指标:

  • 包体积:3-5MB(Tauri)vs 100-200MB(Electron)
  • 内存占用:50-100MB(Tauri)vs 500MB-1GB(Electron)
  • 启动时间:<1s(Tauri)vs 3-5s(Electron)
  • 构建时间:1-2 min(Tauri)vs 5-10 min(Electron)

生产环境示例:

  • Warp Terminal:使用 Rust 构建的高性能终端(egui/custom)
  • Lapce:使用 Druid 构建的快速代码编辑器(之后采用自定义框架)
  • Zed:具有原生 Rust UI 的协作式代码编辑器
  • Notion 类应用:使用 Tauri 开发桌面版本
  • 系统工具:文件管理器、任务管理器、监控工具

总结

Rust 桌面开发兼具卓越性能与内存安全。

网页 UI + Rust 后端且追求极小包体积时,选择 Tauri。需要纯 Rust 和专用模式时,选择原生 GUI。通过清晰的前后端分离来设计架构。使用类型安全的 IPC。集成 Tokio 以支持异步。处理平台差异。尽早进行跨平台测试。

这就是 Rust 桌面开发之道。

评论

支持 Markdown