zzzjy 4707817053 fix: resolve new tab creation failure and shortcut passthrough
- Fix pty.spawn cwd tilde expansion: ptyManager now passes resolvedCwd (expanding ~ and verifying directory existence) so child processes do not exit immediately on launch
- Add pointer-events: none to SVGs inside buttons and tabs to prevent Electron window-dragging interception
- Extend xterm attachCustomKeyEventHandler to allow Ctrl+Shift+T, Ctrl+Shift+W, etc. through while terminal is focused
- Wrap remote SSH and serial spawns with fallback to local bash to prevent tab death loops on connection failures
2026-09-24 01:48:43 +08:00

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)

🚀 启动与打包构建

# 1. 启动开发终端
npm start

# 2. 本地一键打包生成 Linux .deb 安装包 (生成于 dist/ 目录)
npm run package:deb

# 3. 安装生成的 deb 包
sudo dpkg -i dist/hatty_1.0.0_amd64.deb

# 4. 若 Node ABI 变动,重新编译底层 node-pty
npm run rebuild

🤖 Gitea Actions 自动化发版

项目已配置 Gitea Actions 流水线(.gitea/workflows/release.yaml):

  • 推送以 v 开头的标签(如 git tag v1.0.0 && git push origin v1.0.0)会自动触发编译打包,并把 .deb 安装包作为附件发布到 Gitea Releases。
  • 也可以在 Gitea 仓库页面中手动点击 Actions -> Run workflow 触发发布。

🛠️ 架构分层

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    # 偏好设置及本地存储
S
Description
终端软件
Readme
429 KiB
hatty v1.1.0
Latest
2026-09-24 17:45:56 +00:00
Languages
JavaScript 80.6%
CSS 14.5%
HTML 4.4%
Python 0.5%