Zellij 终端复用器深度研究报告
研究日期:2026-03-24 研究主题:Zellij — 用 Rust 编写的终端工作区管理器,与 tmux 的对比、核心优势、使用方法,以及与 Ghostty 终端的兼容性
1. 概述与背景
1.1 什么是 Zellij?
Zellij 是一款用 Rust 编写的现代终端复用器(terminal multiplexer)/工作区管理器,由 Aram Drevekenin 创建,于 2021 年首次发布,采用 MIT 许可证(GitHub 仓库)。截至 2026 年 3 月,Zellij 在 GitHub 上拥有约 30,300 颗星标(30.3k),约 1,100 个 Fork,是终端工具领域增长最快的开源项目之一。
最新版本 Zellij 0.44.0 于 2026 年 3 月 23 日发布,带来了原生 Windows 支持、HTTPS 远程会话、只读会话共享等重大更新(Zellij 0.44.0 发布公告)。
1.2 名称由来
“Zellij”(阿拉伯语:الزليج)源自一种马赛克瓷砖工艺——由手工雕刻的不同颜色瓷砖拼合而成精致的伊斯兰几何图案。这个名字恰如其分地反映了 Zellij 将不同的终端窗格组合成统一工作空间的设计理念(About Zellij)。
1.3 创建者与设计哲学
Aram Drevekenin 从 15 岁起就是 Linux 用户,长期使用终端进行开发工作。他认为终端是一个”令人惊叹且无处不在的应用平台”,然而被严重低估和未充分利用。他创建 Zellij 的核心理念是(Why Zellij?):
不因追求强大功能而牺牲简洁性——将终端的全部力量放在每个人的指尖,而无需攀登知识和领域经验的大山。
Zellij 特别强调界面可发现性(discoverability)——将提示和帮助信息直接放在应用内和屏幕上,使界面可被发现且美观,这是核心原则而非附加功能。
1.4 终端复用器简史
| 工具 | 首次发布 | 编程语言 | GitHub Stars | 状态 |
|---|---|---|---|---|
| GNU Screen | 1987 | C | N/A | 维护模式 |
| tmux | 2007 | C | ~35,000+ | 活跃维护 |
| Zellij | 2021 | Rust | ~30,300 | 快速发展 |
2. Zellij vs tmux:核心差异
2.1 设计理念差异
这是两者最根本的分歧:
tmux 假设用户愿意投入时间学习,以换取长期的效率回报。没有内置的快捷键提示,新用户需要通过 man tmux 或在线教程学习。
Zellij 将可发现性作为核心设计原则。启动后屏幕底部显示提示栏,列出当前模式下所有可用的快捷键。用户无需记忆快捷键即可开始使用(Zellij 官方文档)。
2.2 架构差异
| 维度 | tmux | Zellij |
|---|---|---|
| 编程语言 | C | Rust |
| 配置格式 | .tmux.conf(自定义命令语言) | KDL(结构化文档语言) |
| 插件系统 | Shell 脚本(通过 TPM) | WASM 沙箱化插件 |
| 布局系统 | 需第三方工具(tmuxinator) | 原生 KDL 布局文件 |
| 键绑定模型 | Prefix 键(Ctrl+b + 功能键) | 模态系统(模式切换) |
| 会话持久化 | 需插件(tmux-resurrect) | 内置支持 |
2.3 功能对比详表
| 功能 | tmux | Zellij | 优胜者 |
|---|---|---|---|
| 启动速度 | 极快(~10ms) | 较慢(~100ms) | tmux |
| 内存占用 | 低(~5-10MB) | 较高(~30-60MB) | tmux |
| 学习曲线 | 陡峭 | 平缓 | Zellij |
| 可发现性 | 无内置提示 | 底部快捷键提示 | Zellij |
| 浮动窗格 | 有限(popup) | 原生完整支持 | Zellij |
| 脚本/自动化 | 极强 | 良好 | tmux |
| 插件生态 | 非常成熟(数百个) | 早期阶段(数十个) | tmux |
| 插件安全性 | 低(完整系统权限) | 高(WASM 沙箱) | Zellij |
| 配置可读性 | 中 | 高(KDL) | Zellij |
| 鼠标支持 | 良好(需启用) | 优秀(默认开启) | Zellij |
| 布局系统 | 需第三方工具 | 原生 KDL 布局 | Zellij |
| 远程服务器适用 | 极佳 | 一般 | tmux |
| 社区/生态 | 极成熟 | 快速成长 | tmux |
| 剪贴板集成 | 需配置 | 内置 | Zellij |
| 回滚/搜索 | 良好 | 良好+编辑器导出 | Zellij |
| 稳定性 | 极高 | 高 | tmux |
| Windows 支持 | 不支持 | 0.44.0 原生支持 | Zellij |
| 远程会话共享 | 基础 | HTTPS + Web 客户端 | Zellij |
2.4 性能对比
| 指标 | tmux | Zellij |
|---|---|---|
| 启动时间 | ~5-15ms | ~50-150ms |
| 空闲内存 | ~5-10MB | ~30-60MB |
| 多窗格内存 | ~15-30MB | ~60-120MB |
| 渲染速度 | 极快(C 语言底层) | 良好(持续优化中) |
tmux 在资源受限环境(小型 VPS、远程服务器)中明显优势更大。在现代开发机器上,两者差异通常不构成问题。
2.5 何时选择 Zellij
- 终端复用器新手——底部提示栏大幅降低学习门槛
- 偏好开箱即用——默认配置即可满足多数需求
- 需要浮动窗格——Zellij 的独特优势
- 重视安全性——WASM 沙箱化插件系统
- 使用声明式布局——原生 KDL 布局文件
- 需要远程会话共享——0.44.0 的 HTTPS 远程会话和 Web 客户端
- 需要 Windows 支持——0.44.0 原生支持
2.6 何时选择 tmux
- 远程服务器管理——几乎所有服务器都预装或可轻松安装
- 需要丰富插件生态——数百个插件覆盖几乎所有需求
- 高级脚本自动化——tmux 命令接口极其强大
- 资源受限环境——内存仅需 5-10MB
- 已有大量 tmux 配置积累
- 需要极低延迟——C 语言实现
3. Zellij 核心功能与使用指南
3.1 安装
# macOS / Linux (Homebrew)
brew install zellij
# Rust 用户
cargo install zellij
# Arch Linux
pacman -S zellij
# 预编译二进制
bash <(curl -L zellij.dev/launch)3.2 基本使用
# 启动新会话
zellij
# 指定会话名称
zellij -s my-project
# 使用布局启动
zellij --layout compact
# 列出会话
zellij ls
# 附加到会话
zellij attach my-project
# 附加或创建
zellij a -c my-project3.3 模式系统
Zellij 采用模态设计,类似 Vim 的模式切换,避免快捷键与终端应用冲突(模式文档):
| 模式 | 进入方式 | 用途 |
|---|---|---|
| Normal | 默认 / Esc | 键入内容传递给终端 |
| Locked | Ctrl+g | 所有按键直传终端 |
| Pane | Ctrl+p | 管理面板 |
| Tab | Ctrl+t | 管理标签页 |
| Resize | Ctrl+n | 调整面板大小 |
| Move | Ctrl+h | 移动面板位置 |
| Scroll | Ctrl+s | 滚动历史输出 |
| Session | Ctrl+o | 管理会话 |
| Tmux | Ctrl+b | 兼容 tmux 习惯 |
常用快速操作(无需进入特定模式):
| 操作 | 快捷键 |
|---|---|
| 面板间切换 | Alt+方向键 或 Alt+h/j/k/l |
| 新建面板 | Alt+n |
| 浮动面板切换 | Alt+f |
| 增大/缩小面板 | Alt+= / Alt+- |
3.4 KDL 配置
Zellij 使用 KDL 格式配置,默认位于 ~/.config/zellij/config.kdl(配置文档):
// 生成默认配置
// zellij setup --dump-config > ~/.config/zellij/config.kdl
theme "catppuccin-mocha"
default_shell "zsh"
default_layout "compact"
simplified_ui true
mouse_mode true
scroll_buffer_size 10000
copy_on_select true
copy_command "pbcopy" // macOS3.5 布局系统
布局是 Zellij 最强大的特性之一(布局文档):
// ~/.config/zellij/layouts/fullstack.kdl
layout {
cwd "/home/user/my-app"
default_tab_template {
pane size=1 borderless=true {
plugin location="compact-bar"
}
children
}
tab name="edit" focus=true {
pane split_direction="vertical" {
pane size="70%" { command "nvim"; args "."; }
pane size="30%"
}
}
tab name="server" {
pane split_direction="vertical" {
pane name="dev" { command "npm"; args "run" "dev"; }
pane name="tests" { command "npm"; args "test" "--" "--watch"; }
}
}
tab name="git" {
pane { command "lazygit"; }
}
}3.6 插件系统
Zellij 基于 WebAssembly (WASM) 的插件系统(插件文档):
内置插件:tab-bar、status-bar、compact-bar、strider(文件浏览器)、session-manager、filepicker、plugin-manager
知名第三方插件:
- zjstatus — 高度可定制的状态栏
- zellij-forgot — 快捷键速查
- room — 类似 tmux sessionizer
创建自定义 Rust 插件:
use zellij_tile::prelude::*;
#[derive(Default)]
struct MyPlugin {}
register_plugin!(MyPlugin);
impl ZellijPlugin for MyPlugin {
fn load(&mut self, _config: BTreeMap<String, String>) {
subscribe(&[EventType::Key, EventType::ModeUpdate]);
}
fn update(&mut self, event: Event) -> bool {
match event {
Event::Key(key) => { /* 处理按键 */ true }
_ => false
}
}
fn render(&mut self, rows: usize, cols: usize) {
println!("Hello! Size: {}x{}", cols, rows);
}
}# 编译为 WASM
cargo build --release --target wasm32-wasi0.44.0 新增插件 API:读取滚动缓冲区、高亮视口文本、设置窗格颜色、查询环境变量等。
3.7 会话管理
# 创建命名会话
zellij -s work
# 列出 / 附加 / 终止
zellij ls
zellij attach work
zellij kill-session work
# 在会话中:Ctrl+o d 挂起,Ctrl+o w 打开会话管理器0.44.0 新增:zellij watch <session> 只读观看会话。
3.8 CLI 自动化
# 在新面板中运行命令
zellij run -- htop
zellij run --floating -- lazygit
zellij run --direction right -- vim file.txt
# Action 命令
zellij action new-pane --direction down
zellij action new-tab
zellij action rename-tab "my-tab"
zellij action toggle-floating-panes
# 0.44.0 新增
zellij action list-panes
zellij action send-keys "Ctrl c"
zellij action dump-screen /tmp/screen.txt4. Zellij 与 Ghostty 的兼容性
4.1 Ghostty 简介
Ghostty 是由 Mitchell Hashimoto(HashiCorp 联合创始人)开发的 GPU 加速终端模拟器,使用 Zig 语言编写,于 2024 年 12 月正式发布 1.0 版本。核心特点:
- GPU 加速渲染(OpenGL/Metal)
- 原生平台集成(macOS 上为原生 .app)
- 原生分屏和标签页
- 符合标准的终端仿真
- 零配置即好用
4.2 Ghostty 对终端复用器的立场
Mitchell Hashimoto 的观点(Ghostty Discussions):
- 终端应提供原生分屏/标签——直接利用 GPU 渲染,性能优于复用器嵌套
- 但不排斥复用器使用——理解会话持久化、远程管理等复用器的独特价值
- Ghostty 会确保与 Zellij/tmux 兼容
4.3 已知兼容性问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| Alt 快捷键不工作 | macOS Option 键默认不作为 Alt | macos-option-as-alt = left |
| 键绑定被 Ghostty 拦截 | 默认快捷键冲突 | keybind = clear 或逐个 unbind |
| CMD 键无法转发到 Zellij | Ghostty 拦截 CMD 组合键 | 在 Ghostty 中 unbind,在 Zellij 中 rebind |
| Linux 下 Ctrl/Alt 失效 | NumLock 导致键码异常 | 升级 Zellij(修复于 #3725) |
| 边框字符渲染异常 | 早期 Ghostty 版本 | 更新 Ghostty 到最新版本 |
| 颜色不正确 | terminfo 检测问题 | 设置 term = xterm-256color 或安装 ghostty terminfo |
| 剪贴板不工作 | 权限限制 | clipboard-read = allow / clipboard-write = allow |
| Shell 集成冲突 | 双重 shell 集成 | 在一侧禁用 shell 集成 |
4.4 推荐的 Ghostty 配置
# ~/.config/ghostty/config
# 核心兼容性设置
macos-option-as-alt = left
clipboard-read = allow
clipboard-write = allow
# 字体(支持 box-drawing 字符)
font-family = "JetBrainsMono Nerd Font"
font-size = 14
# 如果只用 Zellij 管理分屏,解绑 Ghostty 快捷键
keybind = super+d=unbind
keybind = super+shift+d=unbind
keybind = cmd+t=unbind
keybind = cmd+n=unbind
keybind = cmd+w=unbind
# 终端类型
term = xterm-ghostty4.5 推荐的 Zellij 配置(搭配 Ghostty)
// ~/.config/zellij/config.kdl
simplified_ui true
default_layout "compact"
copy_command "pbcopy"
copy_on_select true
mouse_mode true
// 与 Ghostty 使用相同主题保持视觉协调
// theme "catppuccin-mocha"4.6 Ghostty 原生功能 vs Zellij
| 功能 | Ghostty 原生 | Zellij |
|---|---|---|
| 分屏 | GPU 渲染,性能极佳 | 更灵活的布局系统 |
| 标签页 | 原生平台标签页 | 可自定义标签名 |
| 会话持久化 | 不支持 | 支持 |
| 远程使用 | 不适用 | 完全支持 |
| 布局保存/恢复 | 有限 | 完整 KDL 布局 |
| 插件系统 | 无 | WASM 插件 |
| 浮动窗格 | 不支持 | 支持 |
| 窗格同步输入 | 不支持 | 支持 |
推荐混合方案:使用 Ghostty 原生标签页管理不同”工作区”,在每个标签页内运行 Zellij 进行细粒度窗格管理,利用 Zellij 会话持久化防止意外丢失工作。
4.7 Kitty 键盘协议优势
Zellij 原生支持 kitty 键盘协议(kitty keyboard protocol),这是相对 tmux 的一大优势。像 Claude Code 等依赖该协议的工具,Shift+Enter 等组合键在 Zellij + Ghostty 中可以开箱即用,而在 tmux 中则需要额外配置。
5. 最新发展与未来方向(2025-2026)
5.1 重要版本里程碑
| 版本 | 发布时间 | 重大更新 |
|---|---|---|
| 0.40.0 | 2024 | 插件别名、CSI 同步渲染 |
| 0.41.x | 2025 初 | 非冲突键绑定、插件管理器、配置热重载 |
| 0.42.0 | 2025.03 | 堆叠调整大小、固定浮动窗格、新主题规范 |
| 0.43.0 | 2025.08 | Web 客户端、多窗格操作 |
| 0.44.0 | 2026.03 | Windows 支持、HTTPS 远程会话、只读共享 |
5.2 生态系统状况
- 社区规模:30,300+ GitHub stars,~1,100 forks,活跃的 Discord 社区
- 插件生态:基于 WASM 的沙箱化插件系统,仍在早期但增长迅速
- 社区资源:awesome-zellij 聚合了第三方插件和工具
- 发布节奏:约每 2-4 个月一个大版本,持续快速迭代
5.3 未来趋势
- 跨平台扩展:0.44.0 的 Windows 支持是重要里程碑
- 远程协作:HTTPS 远程会话和 Web 客户端为远程协作打开新可能
- 插件生态成熟:新 API 的持续引入降低了插件开发门槛
- 终端作为应用平台:Aram 的愿景是让终端成为一个完整的应用开发平台
6. 从 tmux 迁移到 Zellij
6.1 概念映射
| tmux | Zellij | 说明 |
|---|---|---|
| Session | Session | 基本相同 |
| Window | Tab | 名称不同,概念相同 |
| Pane | Pane | 基本相同 |
Prefix (Ctrl+b) | 模式切换 | Zellij 无 prefix |
.tmux.conf | config.kdl | 格式完全不同 |
| tmuxinator | 内置布局 | Zellij 原生支持 |
| TPM 插件 | WASM 插件 | 生态差异大 |
6.2 tmux 兼容模式
keybinds {
tmux {
bind "\"" { NewPane "Down"; SwitchToMode "Normal"; }
bind "%" { NewPane "Right"; SwitchToMode "Normal"; }
bind "c" { NewTab; SwitchToMode "Normal"; }
bind "d" { Detach; }
bind "n" { GoToNextTab; SwitchToMode "Normal"; }
bind "p" { GoToPreviousTab; SwitchToMode "Normal"; }
bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
bind "[" { SwitchToMode "Scroll"; }
}
}6.3 迁移建议
- 并行使用:在本地尝试 Zellij,服务器保持 tmux
- 从默认配置开始:先体验 Zellij 原生工作流
- 迁移布局:将 tmuxinator 配置转换为 KDL 布局
- 逐步替换插件:查找 Zellij 对应功能
- 保留 tmux:服务器环境中 tmux 仍是更好选择
7. 一句话总结
- tmux:终端复用器的瑞士军刀——功能全面、生态成熟、性能卓越,远程服务器管理的不二之选,但学习曲线较陡
- Zellij:面向现代开发者的终端复用器——开箱即用、界面友好、浮动窗格独具特色,WASM 插件系统面向未来,跨平台支持日益完善
- Ghostty + Zellij:强大的组合方案——Ghostty 提供卓越的 GPU 渲染性能和原生平台体验,Zellij 提供会话管理、布局系统和插件扩展,两者优势互补