mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-09-22 08:02:24 +00:00
f91707e2a76b3b0ef445ea4e561272ecfc403bbf
`setup_wsl` resolved the distro's login shell with a synchronous `wsl.exe` call. The client waits for the daemon's `Spawn` reply (`terminal::remote::spawn`), so on a cold WSL start — seconds, while the distro boots — the entire window froze. Reported from a real session; the `--cd`/`-d` unit tests never saw it because they never reach the probe, and the live-PTY test only ever ran against an already-warm distro. Caching per distro was not a fix: the first WSL pane after launch is exactly when the distro is cold, so the freeze hit precisely the case the cache could not cover. Fold the decision into the one `wsl.exe` invocation we were always going to make. The command is now `sh -c` over a `case` on `$SHELL` that execs bash with our rcfile, or falls back to a plain login shell for a distro we don't integrate. It cannot block, because there is no second invocation. `$SHELL` rather than `getent passwd`: WSL populates it from the user's passwd entry, so inside the distro it already is the login shell of record — the same source `shell_kind` trusts on Unix. Written without a variable assignment so the whole thing stays one `case`, robust to the layers of quoting between the daemon and `sh`. The rcfile is now written before the shell is known. That is a local write into a throwaway dir the terminal already cleans up on drop, and paying it unconditionally is what buys the decision being free. Regression test names a distro that cannot exist and asserts setup still succeeds — if anything asked the distro a question, it could not. A timing bound would only have caught this on a cold machine, which is the same blind spot that let it ship. Removes `wsl_login_shell` and `inner_shell_kind`, both now unreachable. 736 tests pass, clippy warning count unchanged. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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%