菜单

特性

相关源文件

本文档全面概述了 ChatGPT 桌面应用程序的关键功能。这款基于 Tauri 的 ChatGPT 服务桌面包装器提供了比标准 Web 界面更强大的功能。有关整体系统架构的信息,请参阅 系统架构

多 Webview 架构

ChatGPT 桌面应用程序采用独特的“多 Webview”方法,而非传统的单一 Webview。这种架构通过专门的界面组件提供了更接近原生应用的的用户体验。

应用程序根据操作系统不同,对这些 Webview 的组织方式也不同。

  • 在 macOS 上:标题栏视图位于顶部,主内容在中间,提问视图在底部。
  • 在 Windows/Linux 上:主内容位于顶部,提问视图在中间,标题栏在底部。

在窗口调整大小时,会管理此布局以保持正确的比例和位置。

来源:src-tauri/src/core/setup.rs56-167 src-tauri/src/core/cmd.rs106-191

用户界面组件

自定义标题栏

应用程序实现了自定义标题栏,提供导航控件和应用程序设置。

标题栏的主要功能包括:

  • URL 显示,带有可点击的主机名,用于在外部浏览器中打开。
  • 前进和后退导航控件。
  • 刷新 ChatGPT Webview 的重新加载按钮。
  • 用于启用/禁用提问界面的切换按钮。
  • 固定/取消固定窗口按钮,用于将应用程序窗口置于顶层。
  • 主题切换器(系统/浅色/深色)。
  • 设置按钮。

在 macOS 上,标题栏在鼠标未悬停时会自动隐藏,从而提供更简洁、符合平台惯例的界面。

来源:src/view/Titlebar.tsx20-177

提问界面

提问界面提供了一个专用的文本输入区域,用于向 ChatGPT 发送消息,而无需与标准 Web 界面进行交互。

提问界面的主要功能:

  • 用于撰写消息的文本输入区域。
  • 消息内容与主 Webview 实时同步。
  • 发送消息的键盘快捷键(macOS 上为 Cmd+Enter,Windows/Linux 上为 Ctrl+Enter)。
  • 带有显示键盘快捷键工具提示的发送按钮。
  • 自动焦点管理。

来源:src/view/Ask.tsx8-70 src-tauri/src/core/cmd.rs62-87

主题系统

该应用程序支持三种主题选项:系统、浅色和深色。可以通过标题栏 UI 更改主题。

主题系统的工作原理是:

  1. 将当前主题存储在应用程序配置中。
  2. 将主题应用于应用程序窗口。
  3. 单击主题图标时循环切换主题(系统 → 浅色 → 深色 → 系统)。
  4. 重新启动应用程序以应用主题更改。

主题会影响所有 Webview 的外观,提供一致的视觉体验。

来源:src/view/Titlebar.tsx98-109 src-tauri/src/core/cmd.rs89-98

窗口管理

该应用程序包含多项窗口管理功能,以增强可用性:

置顶显示

可以将窗口固定在其他应用程序的顶部,这在处理其他应用程序时引用 ChatGPT 的响应非常有用。

来源:src/view/Titlebar.tsx84-87 src-tauri/src/core/cmd.rs48-60

跨平台布局

应用程序根据操作系统调整其布局,以提供最接近原生应用的体验。

通过 on_window_event 处理程序可以在窗口调整大小时保留布局,该处理程序会重新计算每个 Webview 的位置和大小。

来源:src-tauri/src/core/setup.rs111-251

文件下载处理

该应用程序内置了对通过 ChatGPT 界面下载的文件的处理功能。

当文件被下载时:

  1. 应用程序会确定合适的下载目录。
  2. 文件将被保存到指定位置。
  3. 下载成功后,将使用系统默认应用程序自动打开该文件。

来源:src-tauri/src/core/setup.rs58-94

配置系统

用户偏好和应用程序设置通过一个跨会话持久化的配置系统进行管理。

配置包括以下设置:

  • 主题偏好(系统/浅色/深色)。
  • 窗口置顶状态。
  • 提问模式状态(启用/禁用)。
  • macOS 标题栏可见性。

这些设置在应用程序启动时加载,并在用户通过 UI 更改偏好时更新。

来源:src-tauri/src/core/cmd.rs48-60 src-tauri/src/core/cmd.rs89-111

跨平台支持

该应用程序设计用于在 Windows、macOS 和 Linux 上运行,并进行了平台特定的调整。

应用程序通过以下方式适应每个平台:

  • 使用特定于平台的窗口样式(macOS 上的覆盖标题栏)。
  • 根据平台调整 Webview 的布局。
  • 提供适当的键盘快捷键(Cmd vs Ctrl)。
  • 处理文件下载等功能的特定平台行为。

来源:src-tauri/src/core/setup.rs32-38 src-tauri/capabilities/desktop.json12-16