l0ng-ai 2484e64f10 feat(terminal): richer buffer search — case/regex toggles, ⌘G, persistence
Bring the Cmd+F search bar up to par with mainstream terminals:

- Case toggle ("Aa"): smart-case stays the default (insensitive unless the
  query has an uppercase char); pressing it forces case-sensitivity via a
  `(?-i)` prefix.
- Regex toggle (".*"): the query is now matched literally by default
  (metacharacters escaped), so searching for `.`/`*`/`(` behaves; toggle on
  for a real regex pattern.
- Invalid-regex feedback: a pattern that fails to compile (only possible in
  regex mode) turns the field border red instead of silently showing zero
  matches.
- ⌘G / ⌘⇧G step to the next / previous match while the bar is open, alongside
  Enter / Shift+Enter.
- Query + toggle state persist across close/reopen; opening prefills the field
  from a single-line terminal selection.
- Navigation and live re-search only scroll when the focused match is
  off-screen, so refining the query no longer jerks the viewport.

Also fix a click-through bug the new toggle buttons surfaced: the terminal
registers a pane-wide mouse handler, so a click on the floating search bar fell
through and started a text selection underneath. The bar now `.occlude()`s its
area and the terminal's mouse handlers gate on `Hitbox::is_hovered` (occlusion-
aware) instead of raw bounds containment.

Covered by a new end-to-end test that drives the real search path against a
seeded grid (case/regex toggles, invalid-regex flag, and persistence).
2026-07-13 22:59:19 +08:00
2026-07-11 19:14:19 +08:00

tty7

tty7

A GPU-rendered terminal in pure Rust.

GPU rendering on Zed's gpui · VT core from Alacritty


CI Version License Discord

Why tty7 · Install · Features · Benchmarks · Keybindings

English · 简体中文

Why tty7

  • Fast — about 2× the throughput of Alacritty, Ghostty, or Kitty on the same hardware (benchmarks)
  • A modern prompt — completion, syntax highlighting, and history search built in; no plugins to assemble
  • Sessions that survive — close the window or quit the app, your shells keep running; no tmux
  • Zero config — zsh, bash, fish, and PowerShell work out of the box

Native builds for macOS, Windows, and Linux ship with every release.

Install

Download the build for your platform from Releases:

  • macOStty7-<version>-macos-arm64.dmg (Apple Silicon) or …-x86_64.dmg (Intel); open it and drag tty7.app into Applications.
  • Windows…-windows-x86_64-setup.exe (installer: Start Menu shortcut + uninstall entry), or …-windows-x86_64.zip (portable: unzip and run tty7.exe).
  • Linux…-linux-x86_64.AppImage (recommended: bundles the x11/wayland libraries, so it runs on Fedora / Arch / etc. with no extra packages — chmod +x and run), or …-linux-x86_64.tar.gz (bare binary; extract and run ./tty7, needs the usual x11/wayland runtime libraries installed).

Features

At the prompt

  • Ghost suggestions — your history completes the whole line as you type; to accept
  • Tab completion that explains — every flag and subcommand with its description, for ~100 common commands
  • Syntax highlighting — as you type, nothing to install
  • Fuzzy history search⌃ R shows what you ran, where, and whether it failed
  • History from day one — your existing shell history just works, and carries across sessions
  • Real line editing — selection, word motion, undo

In the window

  • Tabs & splits — always open in the current directory
  • Command palette ⌘ P · scrollback search ⌘ F
  • ⌘-click links · desktop notifications
  • Eight themes · CJK / IME input

Benchmarks

All four terminals measured back-to-back on the same machine, same day, same 155×40 grid — Apple M1 Pro, macOS 26.3.1, five-run averages (2026-07-04):

tty7 Alacritty Ghostty Kitty
Plaintext IO — 11 MB cat (lower = better) 95 ms 239 ms 179 ms 185 ms
DOOM-fire frame rate (higher = better) 888 fps 485 fps 552 fps 617 fps
Cold-launch memory 116 MB¹ 105 MB 128 MB 130 MB

¹ GUI 105 MB + the persistent daemon 11 MB.

Where the speed comes from:

  • The PTY is read at device speed and parsed in large batches, off the render path
  • Hot paths are lock-free — a big cat never waits on drawing
  • The daemon buffers up to 16 MiB ahead of the window before backpressure applies

Methodology (how each terminal is driven, grid fairness, known pitfalls) and one-command reproduction live in scripts/bench/ — run it yourself.

Keybindings

Keys are shown in macOS notation — on Windows and Linux, read as Ctrl. Open Settings with ⌘ , to browse or remap them all. The essentials:

⌘ T · ⌘ W · ⌘ ⇧ T new tab · close tab · reopen closed tab
⌘ 1⌘ 9 · ⌃ ⇥ · ⌃ ⇧ ⇥ jump to tab 19 · next tab · previous tab
⌘ D · ⌘ ⇧ D split right · split down
⌘ ] · ⌘ [ next pane · previous pane
⌘ ⌥ ←→↑↓ focus the pane in that direction
⌘ ⏎ · ⌘ ⇧ ⏎ toggle fullscreen · maximize / restore the pane
⌘ K clear the screen and scrollback
⌘ P command palette
⌘ F search the scrollback
⌃ R fuzzy-search shell history
⌘ + · · ⌘ 0 font size up · down · reset

Settings → Keybindings lists every shortcut. Click one, press the new keys (Esc cancels, Backspace resets to default), and it takes effect immediately. Pane resize and swap have no default keys — bind them here or run them from the command palette. Prefer tmux muscle memory? Flip the tmux preset to remap pane/tab actions onto a prefix (default ⌃ B): ⌃ B C opens a tab, ⌃ B % splits, ⌃ B then an arrow moves focus. A bare prefix reaches the shell after a brief pause, and prefix + an unbound key is passed straight through to the terminal.


S
Description
A terminal workbench in pure Rust: shells, persistent sessions, SSH, coding agents. GPU-rendered on Zed's gpui, VT core from Alacritty.
Readme Apache-2.0
35 MiB
Languages
Rust 99.1%
Shell 0.5%
PowerShell 0.2%
Inno Setup 0.1%