Skip to main content
otter-term is Otter Shell’s built-in terminal emulator. It uses libghostty-vt for terminal emulation and Otter libraries for Wayland windowing, PTY handling, input, rendering, configuration, and clipboard. Tabs, horizontal and vertical splits, shell integration via OSC sequences, and IME support. No X11 dependency.

Launching

Pass a directory path to open there, or use -e to run a command instead of your default shell.

Features

Tabs

Multiple terminal tabs in one window. Close buttons appear per tab and hide when only one tab remains.

Split Panes

Split any tab horizontally or vertically. Each pane has its own focus, resizes independently, and closes without affecting the others.

Shell Integration

OSC 7 tracks the current working directory so new tabs and splits open in the right place. OSC 133 captures command output for the context menu.

URL Handling

http://, https://, and www. URLs are detected, underlined on hover, and opened with a configurable command (default: xdg-open).

IME Support

Full zwp_text_input_v3 support with preedit text display and candidate-window positioning at the terminal cursor.

Clipboard

Copy with Ctrl+Shift+C and paste with Ctrl+Shift+V. Primary selection and a right-click context menu are also supported.

Scrollback

Configurable scrollback. Idle panes compress history so big buffers cost less memory.

Configuration

otter-term reads ~/.config/otter-shell/otter-term.conf. The file loads on startup and hot-reloads whenever you save it. Font, padding, and grid size update without restarting the terminal. Shared colors in theme.conf hot-reload too. otter-theme-gen and otter-settings write that file; saving it updates open terminal panes.
general_shell = "" uses $SHELL, falling back to /bin/sh if unset. The default general_term value xterm-256color works best for remote hosts over SSH. Only set it to xterm-ghostty when the target host has that terminfo entry installed.
Set shell_capture_output = true to enable OSC 133 command-output capture. The right-click context menu then gets a Copy Last Output action that copies the full output of the most recent command. Off by default to keep large command output off the hot PTY path.

Color Palette

The color palette uses colors_* keys in otter-term.conf, or inherits from theme.conf when those keys are unset. Palette changes hot-reload on save. Per-app keys in otter-term.conf override the shared theme.

Compositor compatibility

Works on Hyprland, Sway, Niri, and other wlroots compositors. On Niri, scroll damage is tracked so scrollback redraws match the viewport.

Keyboard Shortcuts