# deptty **Repository Path**: LFRon/deptty ## Basic Information - **Project Name**: deptty - **Description**: deptty - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-08-16 - **Last Updated**: 2026-08-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # deptty 使用 Rust 和 DTK6(通过 dtk-rs)重写的 deepin-terminal。目标是作为 deepin-terminal 的直接替代品,保持相同的用户体验,同时采用纯 Rust 实现。 ## 功能特性 ### 终端仿真 基于 alacritty_terminal 的 VT 解析、屏幕网格和回滚缓冲,采用 portable-pty 实现伪终端支持。终端仿真器完全兼容 xterm 和 ANSI 标准,能够正确处理各类转义序列和特殊字符。 ### 标签页管理 标签页显示在窗口标题栏,与 deepin-terminal 保持一致的界面布局。支持新建、关闭和切换标签页操作。标签页可通过拖拽自由重新排序。新建标签页时自动继承前一个标签页的工作目录,提升多任务处理效率。快捷键 Ctrl+Shift+T 可快速新建标签页,Ctrl+Shift+W 关闭当前标签页。 ### 分屏功能 支持垂直和水平两种分割方式,通过 Ctrl+Shift+( 和 Ctrl+Shift+) 快捷键进行操作。分屏采用等分尺寸布局,相邻窗格可通过快捷键循环切换焦点。右键点击分屏分隔线可打开上下文菜单,提供新建标签页、分割和关闭等选项。使用 Ctrl+Shift+方向键可在不同分屏间移动焦点。 ### 文本操作 提供完整的文本选择功能,支持鼠标拖拽和双击选行。选中文本后可通过 Ctrl+Shift+C 复制,Ctrl+Shift+V 粘贴。系统剪贴板与终端内容互通。滚动条回滚功能可查看历史输出内容,默认记录 10000 行历史记录。 ### 鼠标功能 鼠标滚轮可用于回滚查看终端历史输出。鼠标报告模式支持 vim、htop、less 等交互式程序,使这些程序能够正确接收鼠标事件。鼠标中键点击可粘贴选中的文本内容。 ### 主题与外观 采用 ghostty 风格的 TOML 配置文件定义配色方案。内置 breeze 主题作为默认方案,同时提供 solarized-dark、solarized-light、dracula、nord、gruvbox-dark、one-dark、tokyo-night 等多种预设主题。窗口标题支持 OSC 0/2 控制序列动态设置。标签页标签颜色跟随当前焦点窗格的主题颜色变化,提供视觉反馈。 ### 配置管理 主配置文件位于 ~/.config/deptty/config.toml,支持字体家族、字体大小、光标形状、滚动行数、默认 shell 等选项。可自定义快捷键绑定,将任意键位组合映射到指定操作。窗口大小和位置会自动保存到 state.toml 文件,下次启动时恢复上次的工作状态。 ## 系统要求 Linux 操作系统,需安装 Qt6 和 DTK6 开发库。Rust 工具链版本需支持当前代码所使用的稳定特性。建议使用最新稳定版 Rust 编译器以获得最佳编译体验。 ## 编译运行 ```sh cargo build ./target/debug/deptty # 运行 ./target/debug/deptty -w /tmp # 在指定目录启动 ./target/debug/deptty /tmp # 同上 ./target/debug/deptty 'file:///tmp' # 从文件管理器打开终端 ``` 编译完成后生成的可执行文件位于 target/debug/deptty。首次编译需要下载所有依赖项,可能需要较长时间。后续增量编译速度会明显提升。 ## 测试 ```sh cargo test # 单元测试 + 离屏完整会话测试 QT_QPA_PLATFORM=offscreen cargo test --test app # 仅运行离屏会话测试 ``` 集成测试在离屏环境中启动真实应用,生成真实的 shell 会话,验证网格内容渲染、分割操作、标签页重排序、文本选择、滚动条同步、OSC 标题设置等核心功能。测试覆盖率涵盖主要用户交互场景。 ## 打包 使用 cargo-deb 创建 Debian 软件包: ```sh cargo install cargo-deb cargo deb # 生成 target/debian/deptty_<版本>_amd64.deb ``` 生成的 .deb 包可直接安装到基于 Debian 的 Linux 发行版。软件包包含可执行文件、桌面配置文件、主题文件和本地化资源。 ## 配置说明 ~/.config/deptty/config.toml 所有字段均为可选,未指定的选项使用默认值: ```toml font_family = "Fira Code" font_size = 13 scrollback = 20000 shell = "/bin/zsh" cursor_shape = "block" theme = "breeze" [[key_bindings]] key = "T" mods = "Ctrl+Shift" action = "new_tab" ``` ### 可用配置项 font_family 设置终端使用的等宽字体家族名称。font_size 控制字体大小,单位为像素。scrollback 设置回滚缓冲的行数上限。shell 指定默认启动的 shell 程序路径。cursor_shape 定义光标外观,支持 block(块)、beam(竖线)、underline(下划线)三种样式。theme 选择配色方案名称。 ### 快捷键动作 copy 复制选中内容,paste 粘贴剪贴板内容,new_tab 新建标签页,close_tab 关闭当前标签页,close_workspace 关闭整个工作区。next_tab 和 prev_tab 在标签页间切换,split_horizontal 和 split_vertical 进行水平或垂直分割。next_pane 和 prev_pane 在分屏间循环切换,focus_pane_up、focus_pane_down、focus_pane_left、focus_pane_right 将焦点移动到指定方向的窗格。 ### 默认快捷键 Ctrl+Shift+C 和 Ctrl+Shift+V 执行复制和粘贴操作。Ctrl+Shift+T 新建标签页,Ctrl+Shift+W 关闭标签页。Shift+Left 和 Shift+Right 在标签页间前后切换。Ctrl+Shift+( 和 Ctrl+Shift+) 分别进行左右和上下分割。Ctrl+Tab 和 Ctrl+Shift+Tab 循环切换分屏焦点。Ctrl+Shift+方向键在分屏间移动焦点。 ## 主题 使用 theme 配置项指定配色方案名称。主题文件按以下顺序查找:首先是 ~/.config/deptty/themes/.toml 用户自定义主题,具有最高优先级;然后是 /usr/share/deptty/themes/.toml 系统安装的主题;最后 breeze 作为内置主题始终可用。 ### 主题文件格式 ```toml background = "#232627" foreground = "#fcfcfc" cursor-color = "#eff0f1" palette = [ "#232627", "#ed1515", "#11d116", "#f67400", "#1d99f3", "#9b59b6", "#1abc9c", "#fcfcfc", "#7f8c8d", "#c0392b", "#1cdc9a", "#fdbc4b", "#3daee9", "#8e44ad", "#16a085", "#ffffff", ] ``` background 和 foreground 分别设置背景和前景文字颜色。cursor-color 定义光标颜色。palette 数组包含 16 个 ANSI 标准色,前 8 个为标准色,后 8 个为高亮色。颜色值使用十六进制格式表示,可使用三位或六位形式。 ### Emoji 显示 Emoji 字符通过 fontconfig 回退到 Noto Color Emoji 渲染。如果 Emoji 显示为方块,请安装 fonts-noto-color-emoji 软件包,并确保 fontconfig 配置正确回退到该字体。某些发行版可能需要额外配置才能正确显示彩色 Emoji。 ## 项目结构 src/main.rs 是程序入口,负责初始化配置并启动应用。src/lib.rs 包含完整的应用实现,包括窗口管理、标签页、分屏树、渲染循环、用户输入处理、PTY 线程和右键菜单等功能模块。src/config.rs 处理配置加载、键绑定解析、主题加载和默认值管理。locales/ 目录包含 rust-i18n 所需的国际化资源文件,支持英语和简体中文。tests/app.rs 实现离屏完整会话测试。themes/ 目录包含内置配色方案文件。 ## 已知限制 以下功能尚未实现:搜索栏功能、窗口透明度调节、quake 模式(桌面下滑出终端)、远程管理(包括 SSH 支持)、单实例运行(通过 zbus 实现)、字符编码检测、密钥存储功能。项目当前阶段优先完善核心终端功能,后续版本将逐步添加这些特性。 详细架构设计请参考 ARCHITECTURE.md 文件,了解各组件的设计思路和 deepin-terminal 到 Rust 的实现映射关系。