Ptyxis Terminal 迎来分屏(Split Pane)功能
·
让你的终端工作流更上一层楼 —— 在同一个标签页内水平或垂直分割终端,无需开多个窗口或标签。
为什么需要分屏?
作为开发者或运维工程师,我们经常需要同时查看多个终端:一边跑 tail -f 看日志,一边敲命令;一边 SSH 到远程服务器,一边在本地操作;一边 docker logs,一边 docker exec 进容器调试。
传统做法是开多个终端窗口或者多个标签页,然后频繁地 Ctrl+Tab 切来切去。屏幕就那么大,标签页多了找不到,窗口多了又乱。
分屏(Split Pane)是解决这个问题的经典方案 —— 终端模拟器领域的"老牌选手" tmux 和 iTerm2 早就证明了它的价值。现在,GNOME 生态中最现代的终端模拟器 Ptyxis 也正式迎来了这个功能。
功能一览
上下/左右分屏
- 水平分割(上下):
Ctrl+Shift+D—— 将当前终端分为上下两个 pane - 垂直分割(左右):
Ctrl+Shift+R—— 将当前终端分为左右两个 pane - 分屏可以无限嵌套:你可以在右半屏里再水平分割,形成一个 2×2 的工作区
智能焦点切换
Alt + 方向键在 pane 之间快速切换焦点- 基于几何位置智能查找最近 pane ——
Alt+Right会跳到右边那个 pane,而不是简单的 tab 顺序切换 - 非聚焦的 pane 会自动轻微变暗(opacity 降低),让你一眼就能看出哪个终端是活动的
贴心的关闭逻辑
Close Pane快捷键:多 pane 时关闭当前 pane,仅剩一个 pane 时自动关闭整个标签页- 鼠标右键菜单同样提供 Split / Close Pane 选项
- 所有快捷键均可在 Preferences → Shortcuts 中自定义
无缝继承上下文
新创建的 pane 会自动继承当前 pane 的:
- 工作目录(cwd)—— 不用再
cd回去 - 容器环境(container)—— 如果你在 podman 容器里,新 pane 也在同一个容器
- 终端配置(字体大小、配色方案、scrollback 行数等)
技术实现亮点
分屏功能基于 GTK4 的 GtkPaned 组件实现,每个 pane 拥有独立的 PtyxisTerminal、AdwBanner 和 GCancellable,确保:
- 各 pane 的进程生命周期独立管理,关闭一个 pane 不会影响其他
- 异步操作(spawn / wait)通过
GCancellable安全取消,避免 use-after-free - 主终端的 agent 轮询和通知系统与次级 pane 正确隔离
- 焦点切换通过
GtkEventControllerFocus的notify::contains-focus信号驱动,并同步活动 pane 的状态到 tab 级别(标题、命令行、进程信息等)
试用
本项目基于 Ptyxis 的 split-pane 分支开发,源码位于:
https://github.com/liyingjun/ptyxis/tree/split-pane
详细的编译构建步骤请参考仓库中的 BUILD_AND_INSTALL.md。
Ptyxis 是 GNOME 生态中基于 GTK4 + libadwaita 构建的现代终端模拟器,由 Christian Hergert 开发。本项目为其增加了分屏能力。
更多推荐

所有评论(0)