Files
tty7/build.rs
T
l0ng-ai 22e1ab1694 tty7: a GPU-rendered, daemon-backed terminal in pure Rust
tty7 is split into two Rust processes: a persistent daemon that owns the
shells and a GPU-rendered client that talks to it over a local socket.
Because the shells live in the daemon, quitting and reopening the app
leaves the session intact — detach and reattach, no tmux required.

- Persistent sessions — the daemon holds the PTYs and child processes, so
  closing a window or swapping in a new build never takes a shell down.
- Performance — an 11 MB `cat` completes in 95 ms and DOOM-fire renders at
  888 fps; the daemon drains the PTY at device speed off the render path.
- Shell-aware — new tabs and splits open in the current working directory;
  zsh, bash, fish, and PowerShell are set up automatically.
- Enhanced prompt — inline completion, syntax highlighting, history, and
  in-terminal search, with rich flag/subcommand signatures for common tools.
- Tabs, resizable splits, a command palette, click-to-open links, desktop
  notifications, eight themes, and CJK/IME input.

Native builds for macOS, Windows, and Linux.
Built on Zed's gpui and Alacritty's VT core.
2026-07-06 21:54:27 +08:00

23 lines
955 B
Rust
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//! Build script — Windows-only: embed the app icon into the `.exe`.
//!
//! On Windows the taskbar / window / Explorer icon comes from an icon *resource*
//! compiled into the executable; there's no equivalent of macOS's `.app` bundle
//! (which gets its icon from `tty7.icns` via `.github/scripts/bundle.sh`). So we
//! compile `assets/favicon.ico` (a multi-res 16256px ICO) into the binary here.
//!
//! On every other platform this is a no-op.
fn main() {
#[cfg(windows)]
{
println!("cargo:rerun-if-changed=assets/favicon.ico");
let mut res = winresource::WindowsResource::new();
res.set_icon("assets/favicon.ico");
if let Err(e) = res.compile() {
// Don't fail the build just because the resource compiler is missing;
// the app still runs, it just falls back to the default Windows icon.
println!("cargo:warning=failed to embed Windows icon: {e}");
}
}
}