本文档提供了 ChatGPT 桌面应用程序中用户界面组件的详细技术概述。它涵盖了多 Webview 架构、组件实现以及它们通过 Tauri 命令系统的交互。有关主题系统的更多信息,请参阅 主题。
ChatGPT 桌面应用程序在一个窗口内使用多 Webview 方法。与使用传统的单个 Webview 不同,该应用程序将其 UI 分割为用于不同功能的专用 Webview,从而提供对界面布局的更好控制并提高原生感。
来源
主窗口包含三个独立的 Webview
https://chatgpt.com 加载的实际 ChatGPT 内容来源
应用程序的 UI 由 React 组件组成,这些组件根据 Webview 标签进行条件渲染
来源
标题栏组件提供导航控件和应用程序设置。它在 src/view/Titlebar.tsx 中实现。
来源
主要功能
提问界面提供了一个文本输入区域,用于向 ChatGPT 发送消息。它在 src/view/Ask.tsx 中实现。
来源
主要功能
UI 组件通过 src-tauri/src/core/cmd.rs 中定义的 Tauri 命令进行交互。
来源
来源
该应用程序根据窗口大小、平台和用户偏好动态地定位和调整 Webview 的大小。这种管理在初始设置和响应事件时都会实现。
来源
该应用程序为 macOS 与 Windows/Linux 平台提供了不同的 UI 布局
| 功能 | macOS | Windows/Linux |
|---|---|---|
| 标题栏位置 | 顶部 | 底部 |
| 窗口控件 | 原生 macOS 控件,带有覆盖层 | 标题栏中的自定义控件 |
| 主 Webview 位置 | 位于标题栏下方 | 位于窗口顶部 |
| 提问 Webview 位置 | 底部 | 位于标题栏上方 |
| 标题栏隐藏状态 | 支持鼠标悬停时隐藏和显示 | 始终可见 |
平台特定的布局是使用条件编译实现的,具体为 #[cfg(target_os = "macos")] 和 #[cfg(not(target_os = "macos"))]。
来源
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(a6de9a)