terminal delight
Install

Get started

Install

Updated 2026-09-25 · true of release v0.3.0 and main at 81ec545

Brief

Terminal Delight ships as one file, terminal-delight-x86_64.AppImage, for 64-bit Linux on X11 or Wayland. Download it, make it executable, and run it:

curl -LO https://github.com/parker-brown-family/terminal-delight/releases/latest/download/terminal-delight-x86_64.AppImage
chmod +x terminal-delight-x86_64.AppImage
./terminal-delight-x86_64.AppImage

Nothing is installed system-wide. It runs from wherever you put it, uses your system's graphics driver like any other native app, and keeps its settings in ~/.config/terminal-delight/.

The rest of these docs call it terminal-delight. To get that command, move the file into a folder on your PATH under that name:

mv terminal-delight-x86_64.AppImage ~/.local/bin/terminal-delight

Technical covers what the AppImage needs from your system, building from source, why there is no cargo install, where everything is kept, and how to remove it.

Technical

Setup

Terminal Delight is built on gpui, the UI framework from the Zed editor, and it needs a gpui that crates.io does not have. That one fact decides how it is distributed: a prebuilt AppImage for running it, and a build against a pinned Zed checkout for changing it.

What the AppImage needs

NeedsDetail
Architecturex86_64. It is the only asset on the release.
DisplayX11 or Wayland.
GraphicsA working Vulkan or OpenGL driver, taken from your system. The renderer is wgpu, which targets NVIDIA, AMD and Intel. At startup the app reports the GPU and driver it found.
FontsNothing to install. It walks an explicit monospace fallback chain and warns at startup if the default font is missing.
Sound (optional)ffplay, from ffmpeg, plays the bell when an agent finishes. Without it the bell stays silent. The default sounds are bundled and copied into place on first run.

Wider testing on AMD, Intel, Wayland and fractional scaling is open work for 1.0, and so is a Flatpak.2

The file

The latest release is v0.3.0, published 2026-09-18. Its one asset is terminal-delight-x86_64.AppImage, 31.6 MB. The address …/releases/latest/download/terminal-delight-x86_64.AppImage always redirects to the newest release, so the command in the Brief keeps working after the next one ships. To update, download it again over the old file.

The AppImage's launcher passes every argument through to the program, so the subcommands work through it: ctl, mcp, serve, skin, surface, conversation, probe, bindings, agent-usage and agent-vitals.

The binary is MIT-licensed. The two GPL crates that Zed's dependency graph would otherwise link are cut out at build time, cargo deny passes with no GPL exceptions, and the licences of everything bundled are listed in THIRD-PARTY-LICENSES.md.

Building from source

# dependencies, on Ubuntu: Vulkan and the build libraries
bash scripts/setup-deps.sh
# clone the pinned Zed checkout and apply the patches
bash scripts/prepare-gpui.sh
# run it
cd app && cargo run
# or build a release binary: app/target/release/terminal-delight
cd app && cargo build --release

prepare-gpui.sh sets up a sibling zed-upstream/ directory at Zed commit abbe85a and applies five patches from docs/patches/: 0001-td-crt-pass (the per-pane barrel warp), 0002-focus-blur, 0003-text-crawl, 0004-warp-tube-cap-32, and 0002-sever-gpl-crates. CI builds the same way. CONTRIBUTING.md has the CI bar and the clean-room rule.

Why there is no cargo install

The crate is not on crates.io, and it cannot be published as it stands. app/Cargo.toml sets publish = false, and gpui is a path dependency on the pinned Zed checkout. The gpui that is on crates.io ships an older renderer, blade, with known problems on NVIDIA under X11.

Where things are kept

PathHolds
~/.config/terminal-delight/theme.tomlYour own theme. Changes are picked up while the app runs.
~/.config/terminal-delight/skin.tomlA skin override for the chrome. $TD_SKIN does the same.
~/.config/terminal-delight/launch.tomlWhat a new agent opens with.
~/.config/terminal-delight/notifications.tomlWhat a finished agent may do to the rest of the desktop.
~/.config/terminal-delight/sessions/One file per window session: its layout, each pane's working directory, and each agent's resume command, so the work reopens after a restart.
~/.config/terminal-delight/plugins/Plugins, one folder each with a plugin.json.
~/.local/state/terminal-delight/The workbench's surfaces and conversations.

$XDG_CONFIG_HOME and $XDG_STATE_HOME replace ~/.config and ~/.local/state when they are set.

Agent hooks

For an agent's replies to reach the workbench on their own, Claude Code needs Terminal Delight's hooks. Their installer lives in the source tree, not in the AppImage:

scripts/install-agent-hooks.sh

It puts td-agent-hooks in ~/.local/bin and adds it to ~/.claude/settings.json on five events: UserPromptSubmit, PreToolUse and PostToolUse for AskUserQuestion, Stop, and Notification. It appends to any hooks already there and keeps a timestamped backup of the file. Running it twice changes nothing.

Removing it

  • Delete the AppImage, or ~/.local/bin/terminal-delight if you moved it there.
  • Delete ~/.config/terminal-delight/ and ~/.local/state/terminal-delight/ to remove your settings, sessions and saved work.
  • If you installed the hooks, run scripts/install-agent-hooks.sh --uninstall.

What would prove this wrong

This page claims the three commands in the Brief give you a working Terminal Delight on a 64-bit Linux desktop with a working graphics driver. If they don't, that is a bug. Open an issue with your distribution, your GPU, and the lines the app prints at startup, which name the GPU and driver it found.3

Sources

  1. Release v0.3.0, and the Install and Build from source sections of the README.
  2. Packaging and platform, in the feature catalogue.
  3. Open an issue.
  4. The code this page was checked against: build-appimage.sh, app/Cargo.toml, instance.rs, install-agent-hooks.sh.