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 Screen1987CN/A维护模式
tmux2007C~35,000+活跃维护
Zellij2021Rust~30,300快速发展

2. Zellij vs tmux:核心差异

2.1 设计理念差异

这是两者最根本的分歧:

tmux 假设用户愿意投入时间学习,以换取长期的效率回报。没有内置的快捷键提示,新用户需要通过 man tmux 或在线教程学习。

Zellij 将可发现性作为核心设计原则。启动后屏幕底部显示提示栏,列出当前模式下所有可用的快捷键。用户无需记忆快捷键即可开始使用(Zellij 官方文档)。

2.2 架构差异

维度tmuxZellij
编程语言CRust
配置格式.tmux.conf(自定义命令语言)KDL(结构化文档语言)
插件系统Shell 脚本(通过 TPM)WASM 沙箱化插件
布局系统需第三方工具(tmuxinator)原生 KDL 布局文件
键绑定模型Prefix 键(Ctrl+b + 功能键)模态系统(模式切换)
会话持久化需插件(tmux-resurrect)内置支持

2.3 功能对比详表

功能tmuxZellij优胜者
启动速度极快(~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 性能对比

指标tmuxZellij
启动时间~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-project

3.3 模式系统

Zellij 采用模态设计,类似 Vim 的模式切换,避免快捷键与终端应用冲突(模式文档):

模式进入方式用途
Normal默认 / Esc键入内容传递给终端
LockedCtrl+g所有按键直传终端
PaneCtrl+p管理面板
TabCtrl+t管理标签页
ResizeCtrl+n调整面板大小
MoveCtrl+h移动面板位置
ScrollCtrl+s滚动历史输出
SessionCtrl+o管理会话
TmuxCtrl+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"  // macOS

3.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-barstatus-barcompact-barstrider(文件浏览器)、session-managerfilepickerplugin-manager

知名第三方插件

创建自定义 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-wasi

0.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.txt

4. 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):

  1. 终端应提供原生分屏/标签——直接利用 GPU 渲染,性能优于复用器嵌套
  2. 但不排斥复用器使用——理解会话持久化、远程管理等复用器的独特价值
  3. Ghostty 会确保与 Zellij/tmux 兼容

4.3 已知兼容性问题与解决方案

问题原因解决方案
Alt 快捷键不工作macOS Option 键默认不作为 Altmacos-option-as-alt = left
键绑定被 Ghostty 拦截默认快捷键冲突keybind = clear 或逐个 unbind
CMD 键无法转发到 ZellijGhostty 拦截 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-ghostty

4.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.02024插件别名、CSI 同步渲染
0.41.x2025 初非冲突键绑定、插件管理器、配置热重载
0.42.02025.03堆叠调整大小、固定浮动窗格、新主题规范
0.43.02025.08Web 客户端、多窗格操作
0.44.02026.03Windows 支持、HTTPS 远程会话、只读共享

5.2 生态系统状况

  • 社区规模:30,300+ GitHub stars,~1,100 forks,活跃的 Discord 社区
  • 插件生态:基于 WASM 的沙箱化插件系统,仍在早期但增长迅速
  • 社区资源awesome-zellij 聚合了第三方插件和工具
  • 发布节奏:约每 2-4 个月一个大版本,持续快速迭代

5.3 未来趋势

  1. 跨平台扩展:0.44.0 的 Windows 支持是重要里程碑
  2. 远程协作:HTTPS 远程会话和 Web 客户端为远程协作打开新可能
  3. 插件生态成熟:新 API 的持续引入降低了插件开发门槛
  4. 终端作为应用平台:Aram 的愿景是让终端成为一个完整的应用开发平台

6. 从 tmux 迁移到 Zellij

6.1 概念映射

tmuxZellij说明
SessionSession基本相同
WindowTab名称不同,概念相同
PanePane基本相同
Prefix (Ctrl+b)模式切换Zellij 无 prefix
.tmux.confconfig.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 迁移建议

  1. 并行使用:在本地尝试 Zellij,服务器保持 tmux
  2. 从默认配置开始:先体验 Zellij 原生工作流
  3. 迁移布局:将 tmuxinator 配置转换为 KDL 布局
  4. 逐步替换插件:查找 Zellij 对应功能
  5. 保留 tmux:服务器环境中 tmux 仍是更好选择

7. 一句话总结

  • tmux:终端复用器的瑞士军刀——功能全面、生态成熟、性能卓越,远程服务器管理的不二之选,但学习曲线较陡
  • Zellij:面向现代开发者的终端复用器——开箱即用、界面友好、浮动窗格独具特色,WASM 插件系统面向未来,跨平台支持日益完善
  • Ghostty + Zellij:强大的组合方案——Ghostty 提供卓越的 GPU 渲染性能和原生平台体验,Zellij 提供会话管理、布局系统和插件扩展,两者优势互补


参考资源