zz is a superset of tmux, with libghostty, CEF panes, in a gpui surface. Import your config and start muxing.
Download zzmacOS and Linux · MIT / Apache-2.0
A fast, productive UI framework for Rust from the creators of Zed.
Get Started →
use gpui::{ div, prelude::*, px, rgb, size, App, Application, Bounds, Context, SharedString, Window, WindowBounds, WindowOptions,}; struct HelloWorld { text: SharedString,} impl Render for HelloWorld { fn render(&mut self, _window: &mut Window, _cx: &mut Context<Self>) -> impl IntoElement { div() .flex() .flex_col() .gap_3() .bg(rgb(0x505050)) .size(px(500.0)) .justify_center() .items_center() .shadow_lg() .border_1() .border_color(rgb(0x0000ff)) .text_xl() .text_color(rgb(0xffffff)) .child(format!("Hello, {}!", &self.text)) .child( div() .flex() .gap_2() .child(div().size_8().bg(gpui::red())) .child(div().size_8().bg(gpui::green())) .child(div().size_8().bg(gpui::blue())) .child(div().size_8().bg(gpui::yellow())) .child(div().size_8().bg(gpui::black())) .child(div().size_8().bg(gpui::white())), ) }} fn main() { Application::new().run(|cx: &mut App| { let bounds = Bounds::centered(None, size(px(500.), px(500.0)), cx); cx.open_window( WindowOptions {Served by python3 -m http.server 8000 over the socks5 tunnel.
Ghostty is a fast, feature-rich, and cross-platform terminal emulator that uses platform-native UI and GPU acceleration.
Download 1.2.2~ ❯ ghostty +versionGhostty 1.2.2 build config - Zig : 0.14.0 - renderer : Metal - libadwaita: falsetmux is a terminal multiplexer: it enables a number of terminals to be created, accessed, and controlled from a single screen.
tmux may be detached from a screen and continue running in the background, then later reattached.
$ ./configure && make
's server IP address could not be found.
DNS_PROBE_FINISHED_NXDOMAIN
ReloadSame 150 MiB fixtures and DOOM-fire harness across hosts.
Apple M4 Max · 180×50 · median of 5
| terminal | cat-ascii MB/s | cat-unicode MB/s | doom-fire fps |
|---|---|---|---|
| zz | 328 | 98 | 668 |
| ghostty-tip | 294 | 94 | 650 |
| cmux | 285 | 86 | 627 |
| kero | 273 | × | × |
| ghostty | 94 | 69 | 630 |
| iterm2 | 87 | × | × |
| ghostty+tmux | 44 | 19 | 194 |
| rio | 28 | 30 | 125 |
AMD Ryzen 7 7800X3D · 7900 XTX · Wayland · 180×50 · median of 5
| terminal | cat-ascii MB/s | cat-unicode MB/s | doom-fire fps |
|---|---|---|---|
| zz | 645 | 81 | 1285 |
| ghostty-tip | 637 | 61 | 1216 |
| rio | 487 | 124 | 1191 |
| alacritty | 129 | 91 | 1255 |
| ghostty | 98 | 45 | 653 |
| limux | 94 | 54 | 618 |
| ghostty+tmux | 56 | 17 | 201 |
Crashed or failed to run in a reasonable time
Add a host over ssh and its shells, agents, and browsers join your local ones in the same window. Everything stays quick, even on a bad link.
Split a real Chromium next to the shell you are working in. Open one with your prefix key or from a script. It answers the same keys, resizes with the same drag, and reattaches on the same URL.
browser →First launch finds your tmux and Ghostty files and offers to bring them over. The prefix table arrives verbatim, the theme and font as plain values. Neither original is touched.
compat →App bundle plus zz on your PATH.
brew install --cask demfabris/zz/zz