0xTerm

A minimal terminal workspace for macOS, drawn by the GPU.


Docs

Shortcuts

KeysAction
⌘T / ⌘Wnew tab / close pane
⇧⌘[ / ⇧⌘]previous / next tab
⌘D / ⇧⌘Dsplit right / split down
⌘[ / ⌘]previous / next pane
⌘Bshow or hide the file tree
⇧⌘Bshow or hide the viewer
⌘Ffind in the open file
⇧⌘Fsearch the folder
⌘Kclear the terminal
⌘-clickopen a path:line or a URL

Config

0xTerm reads ~/.config/0xterm/config.toml. Every key is optional, and anything you leave out keeps the value shown here.

[font]
family = "Menlo"
size = 13.0
line_height = 1.2

[terminal]
shell = ""            # empty means your login shell ($SHELL)
scrollback = 10000
option_as_meta = true # ⌥+key sends ESC+key, for word movement

[theme]
mode = "system"       # or "light" / "dark"

[theme.dark]
background = "#0b0b0b"
foreground = "#e6e6e6"

[theme.light] takes the same keys. Each palette also takes cursor, selection and a 16-color ansi list.

How it is built

Bytes travel one way from the shell to the screen, and keys travel back:

zsh ⇄ pty ⇄ task (forkpty, reader thread)
              → alacritty_terminal (parser, grid, scrollback)
              → terminal view (GPUI on Metal, one snapshot per frame)

The window holds tabs, each tab holds a tree of splits, and each split ends in a pane running a shell. Beside them sits the toolbelt: the file tree, folder search and the viewer. The toolbelt talks to the panes only through events, such as “open this file at this line” or “the working folder changed”.

CrateWhat it does
oxt-taskpty, child process, reader and writer threads, cwd and foreground job
oxt-sessionterminal state, key, paste and mouse encoding, OSC 7
oxt-terminal-viewdraws the grid, selection, links, find
oxt-windowtabs, splits, panes
oxt-toolbeltfile tree, search, viewer
oxt-configconfig file, themes, keymap