mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-09-21 16:02:20 +00:00
ecb5ab1ed7dd86cc9be81ffb5dfb5db0f28e913c
Option-as-Meta had no effect for anyone typing with a CJK input source. The whole setting was dead for them: with Pinyin selected, macOS reports Option chords as printable text (Option+B composes the special character), so gpui routed them to the IME before the key handler ran. The IME committed the composed character and swallowed the event -- on_key_down never ran, and reshape_option_keystroke never got a say. Switching to ABC made it work again, which is why this looked intermittent. Verified on the wire: with Pinyin active Option+F/Option+B put c692 / e288ab on the PTY where ESC f / ESC b belong. The routing decision lives in gpui's macOS backend and is asked once per view, with no keystroke in hand, so it could not answer "IME for text, but not for this chord". gpui now comes from our fork, whose one commit passes the keystroke to prefers_ime_for_printable_keys; the default implementation ignores it, so no existing handler changes behavior. The terminal answers per key: an Option chord with the setting on stays on the dispatch path, everything else still prefers the IME. Gated on the setting deliberately. With Option-as-Meta off the chord is text input and the IME is the right owner -- it is what makes dead keys (Option+E then E -> e-acute) compose at all. The fork is wired in with [patch] on the source rather than by editing the gpui pins, because gpui-component declares its own gpui from the upstream URL and a pin swap would put two incompatible copies of gpui in the tree. Fetching a repo that size needs the git CLI; cargo's built-in libgit2 transfer times out partway through. Fixes #177
tty7
A terminal workbench: shells, sessions, SSH, coding agents.
Pure Rust · GPU rendering on Zed's gpui · VT core from Alacritty
English · 简体中文
Why
- Fast — ~2× the throughput of Alacritty, Ghostty, or Kitty (benchmarks)
- Sessions persist — quit or reboot; your shells keep running, no tmux
- Editor-grade input — completion, syntax highlighting, history search built in; zero config for zsh, bash, fish, PowerShell
- Agent-aware — recognizes Claude Code & co. in a pane: status, notifications, session resume
Install
Native builds for each platform on Releases:
| macOS | …-macos-arm64.dmg · …-x86_64.dmg |
drag into Applications |
| Windows | …-setup.exe · portable ….zip |
|
| Linux | …-x86_64.AppImage |
chmod +x and run — x11/wayland libs bundled |
What's inside
| Input | ghost suggestions from history · explained tab completion · syntax highlighting · multi-line editing · click places the caret · ⌃ R fuzzy history |
| Window | tabs & splits · ⌘ P palette · ⌘ F scrollback search · eight themes · IME |
| Coding agents | per-pane agent detection (~17 CLIs): status dot, notifications, branch + diff, resume after reboot, tray icon that signals "needs your input" |
| SSH | native russh stack: profiles with keychain secrets, SFTP panel, port forwarding, jump hosts |
Details for every row: docs/features.md. Keybindings: ⌘ , opens Settings — browse and remap everything, tmux preset included (full list).
Benchmarks
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.
Methodology and one-command reproduction: scripts/bench/.
Built on gpui and alacritty_terminal · Apache-2.0 · Discord · Changelog
Description
A terminal workbench in pure Rust: shells, persistent sessions, SSH, coding agents. GPU-rendered on Zed's gpui, VT core from Alacritty.
ai-agentsalacrittyclaude-codecoding-agentcross-platformdaemondeveloper-toolsgpugpuilinuxmacosptyrustshellsshterminalterminal-emulatorterminal-multiplexertmuxwindows
Readme
Apache-2.0
34 MiB
Languages
Rust
99.1%
Shell
0.5%
PowerShell
0.2%
Inno Setup
0.1%