ZacharyZhang-NY de48f491bc
CI / platforms (windows-latest) (push) Successful in 2m49s
CI / platforms (ubuntu-24.04) (push) Successful in 3m17s
CI / macos (push) Failing after 8m36s
T23: the Linux and Windows CI jobs build without debuginfo: linking gpui's test binaries with it ran the Linux runner's 8 GB VM out of memory, and scripts/linux.sh builds so already
2026-10-15 13:21:11 -04:00
2026-10-14 11:09:50 -04:00
2026-10-15 10:23:28 -04:00

ELYTerminal

A terminal for macOS, Windows and Linux, in Rust on GPUI and Ely components. Sessions sit on the left, the terminal in the middle, Git or Files on the right. Every setting has a control in the settings window.

Build and run

Rust 1.95.

cargo run --release

On Linux, install the libraries gpui links first. On Debian and Ubuntu:

sudo apt-get install pkg-config libwayland-dev libxkbcommon-dev libxkbcommon-x11-dev \
  libxcb1-dev libx11-xcb-dev libfontconfig-dev libfreetype-dev

The app writes its log to stderr. RUST_LOG=elyterminal=debug writes more; trace logs each paint.

What it does

  • The terminal runs on alacritty_terminal: 256 colors and truecolor, bold, dim, italic, five underline styles, wide characters and combining marks. Box drawing, block elements and powerline shapes are drawn as geometry, so lines join across cells. Keys follow xterm and the kitty keyboard protocol; input methods compose at the cursor; programs can track the mouse; pastes are bracketed when a program asks; OSC 8 and plain links open with the link press below; find searches the scrollback.
  • Shell integration for zsh, bash, fish and PowerShell: each prompt reports its folder and title.
  • Sessions: new, close and switch. A bell marks a hidden session's row and makes no sound.
  • Files shows the session's folder as a tree with Git's marks.
  • Git shows the branch, stages, unstages, discards, commits, lists recent commits and opens diffs, all through the git command line.
  • Themes: Ely Dark, Ely Light, Catppuccin Mocha, Macchiato, Frappé and Latte, Tokyo Night, Dracula, Nord, Gruvbox Dark, Rosé Pine, Solarized Light, One Light and Kanagawa Wave. A second theme can take over while the system is dark.
  • Background opacity and blur: NSVisualEffectView on macOS, acrylic on Windows, ext_background_effect_v1 or org_kde_kwin_blur on Wayland, _KDE_NET_WM_BLUR_BEHIND_REGION on X11, which KWin reads.

Keys

macOS Windows and Linux
New session Cmd-T Ctrl-Shift-T
Close session Cmd-W Ctrl-Shift-W
Session 1 to 8, last Cmd-1 to Cmd-8, Cmd-9 Alt-1 to Alt-8, Alt-9
Next, previous session Ctrl-Tab, Ctrl-Shift-Tab Ctrl-Tab, Ctrl-Shift-Tab
Sessions column Cmd-B Ctrl-Shift-B
Right column Cmd-Alt-B Ctrl-Shift-Alt-B
Copy, paste Cmd-C, Cmd-V Ctrl-Shift-C, Ctrl-Shift-V
Select all Cmd-A Ctrl-Shift-A
Find Cmd-F Ctrl-Shift-F
Bigger, smaller, reset size Cmd-=, Cmd-minus, Cmd-0 Ctrl-=, Ctrl-minus, Ctrl-0
Open a link Cmd-press Ctrl-press
Settings Cmd-, Ctrl-,
Minimize Cmd-M
Quit Cmd-Q Ctrl-Shift-Q

Settings

The settings window saves each change at once to settings.json in the platform's config folder:

  • macOS: ~/Library/Application Support/ELYTerminal/settings.json
  • Linux: $XDG_CONFIG_HOME/ELYTerminal/settings.json, else ~/.config/ELYTerminal/settings.json
  • Windows: %APPDATA%\ELYTerminal\settings.json

A file that does not parse, or holds a value out of range, stops the start with an error naming the file and the field. The app never overwrites it.

Development

scripts/check.sh runs fmt, clippy, the tests and the 500-line rule. AGENTS.md lists the rest: the layout, the decisions and the tools.

License

MIT, in LICENSE. Box drawing and key encoding follow Ghostty's code, MIT, in LICENSE-GHOSTTY. The theme files come from iTerm2-Color-Schemes, MIT, with its license in assets/themes. JetBrains Mono and its Nerd Font build are under the SIL Open Font License, in assets/fonts.

S
Description
A terminal on GPUI and Ely.
Readme MIT
5 MiB
7 Stars 1 Watchers 0 Forks
2026-10-19 07:13:10 +00:00
Languages
Rust 97.9%
Shell 1.5%
PowerShell 0.6%