Files
hatty/README.md
T
2026-09-23 00:18:31 +08:00

84 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# hatty ⚡
> 一个超高颜值、极速响应、功能丰富的现代 Linux 终端模拟器。
基于 **Electron + 原生 PTY + xterm.js (WebGL 硬件加速)** 架构打造,兼备现代桌面应用的丝滑交互与系统底层的澎湃性能。
---
## ✨ 核心特性
- 🎨 **极致现代设计**:
- 沉浸式无边框磨砂毛玻璃窗口(Acrylic / Frosted Glass)。
- 内置 5 套精品现代主题(**Tokyo Night**、**Catppuccin Mocha**、**Dracula**、**One Dark**、**Cyberpunk**),支持全局即时热切换与调色板联动。
- 状态栏与标签页平滑微动效、发光焦点与光标呼吸闪烁。
- ⚡ **高性能 GPU 渲染**:
- 挂载 `@xterm/addon-webgl` 硬件加速管线,利用 GPU 直接进行字形栅格化与批处理渲染,轻松保持 60~120 FPS 丝滑帧率。
- 📑 **多标签页与多窗格分屏**:
- **多标签页(Tabs)**:无上限新建、关闭与快捷切换,自动提取进程标题。
- **多窗格分屏(Split Panes)**:支持向右水平分屏(Split Right)与向下垂直分屏(Split Down),每个窗格独立持有 Linux PTY 会话,焦点自由切换。
- 🧭 **Command Palette 快速命令面板**:
- 按下 `Ctrl+Shift+P` 或 `F1` 唤出类似 VS Code / Sublime 的命令搜索面板,支持键盘模糊搜索主题、分屏、快捷操作。
- 🔍 **终端内搜索**:
- 按下 `Ctrl+Shift+F` 唤起悬浮搜索框,支持高亮匹配、上一个/下一个遍历与即时跳转。
- ⚙️ **丰富的偏好配置**:
- 支持调整字号(11px ~ 24px)、字体族(JetBrains Mono / Fira Code 等)、光标形状(Block / Bar / Underline)、光标闪烁,配置自动本地持久化。
---
## ⌨️ 常用快捷键
| 快捷键 | 功能说明 |
| :--- | :--- |
| `Ctrl + Shift + P` / `F1` | 呼出快速命令面板 (Command Palette) |
| `Ctrl + Shift + T` | 新建标签页 (New Tab) |
| `Ctrl + Shift + W` | 关闭当前窗格 / 标签页 (Close Pane / Tab) |
| `Ctrl + Shift + E` | 向右水平分屏 (Split Right) |
| `Ctrl + Shift + O` | 向下垂直分屏 (Split Down) |
| `Ctrl + Shift + F` | 唤出终端内快速搜索 (Search Buffer) |
| `Ctrl + Tab` / `Ctrl + Shift + Tab` | 切换到下一个 / 上一个标签页 |
| `Alt + 1` ~ `Alt + 9` | 快速直达第 1 ~ 9 个标签页 |
| `Ctrl + ,` | 打开偏好设置 (Preferences) |
---
## 🚀 启动与构建
```bash
# 启动开发终端
npm start
# 若 Node ABI 变动,重新编译底层 node-pty
npm run rebuild
```
---
## 🛠️ 架构分层
```
hatty/
├── src/
│ ├── main/
│ │ ├── index.cjs # Electron 主进程,无边框透明窗口与 IPC 路由
│ │ └── pty-manager.cjs # 基于 node-pty 的 Linux 伪终端管理与进程调度
│ ├── preload/
│ │ └── index.cjs # 安全 ContextBridge 预加载隔离脚本
│ └── renderer/
│ ├── index.html # 现代终端 UI DOM 结构
│ ├── css/
│ │ ├── variables.css # 主题调色板与设计 Token
│ │ ├── app.css # 全局视口、标题栏、控制按钮
│ │ ├── tabs.css # 标签栏微动效与样式
│ │ ├── split.css # 窗格分屏容器与焦点高亮
│ │ └── components.css # 状态栏、搜索条、命令面板与设置弹窗
│ └── js/
│ ├── app.js # 前端总控中枢
│ ├── terminal-view.js # xterm + WebGL + FitAddon 实例管理
│ ├── tab-manager.js # 标签页生命周期
│ ├── split-manager.js # 多窗格分屏树与动态尺寸自适应
│ ├── theme-manager.js # 主题系统与 xterm 颜色映射
│ ├── command-palette.js # 快速命令面板交互
│ └── settings.js # 偏好设置及本地存储
```