LinuxCommandLibrary

foot

Launch Wayland terminal emulator

TLDR

Spawn a terminal

$ foot
copy

Verify your config
$ foot [[-C|--check-config]]
copy

Start the server (use footclient to start terminal windows that connect to the server)
$ foot [[-s|--server]]
copy

Display help
$ foot [[-h|--help]]
copy

Display version
$ foot [[-v|--version]]
copy

SYNOPSIS

foot [options...] [--] [program [arguments...]]

PARAMETERS

-c, --config=FILE
    Load configuration from FILE instead of defaults.

-C, --config-dir=DIR
    Use configuration directory DIR.

-d, --cwd=DIR
    Set working directory to DIR.

-e, --exec=PROGRAM
    Execute PROGRAM instead of shell.

-f, --font=FONT
    Use font FONT (e.g., "monospace:size").

-i, --icon=ICON
    Set window icon name to ICON.

-s, --font-size=SIZE
    Set initial font size to SIZE.

-t, --title=TITLE
    Set initial window title to TITLE.

-T, --term=TERM
    Set $TERM to TERM (default: foot).

--app-id=ID
    Set Wayland app ID to ID.

--cursor-shape=shape
    Set cursor shape: beam, block, underline.

-h, --help
    Print help and exit.

-v, --version
    Print version information.

-w, --window-size=Pixels
    Set window geometry to WIDTHxHEIGHT.

--hold
    Keep window open after program exit.

--max-lines=NUM
    Limit scrollback buffer to NUM lines.

--server
    Run as server (client-server mode).

--client
    Run as client, connecting to server.

DESCRIPTION

foot is a terminal emulator designed for Wayland compositors, emphasizing speed, low latency, and minimal resource usage. Unlike many terminals with graphical effects or ligatures, foot prioritizes correctness and performance, rendering text efficiently without unnecessary features.

It supports modern terminal standards like true color, hyperlinks, and sixel graphics. foot uses a client-server architecture optionally, allowing multiple terminal windows to share a single server process for reduced overhead. Configuration is done via a simple foot.ini file, supporting per-window overrides.

Key strengths include sub-millisecond latency, small memory footprint (around 5-10MB per window), and precise mouse reporting. It's script-friendly with features like OSC 52 clipboard support and kitty keyboard protocol. Ideal for users seeking a no-frills, high-performance terminal on Wayland desktops like Sway or Hyprland.

foot avoids X11 embedding, focusing solely on Wayland for native integration. It's lightweight enough for embedded systems or resource-constrained environments while scaling to powerful workstations.

CAVEATS

Wayland-only; no X11 support. Requires Wayland compositor. Client-server mode needs matching font/config. High DPI scaling may need config tweaks.

CONFIGURATION

Primary config: $XDG_CONFIG_HOME/foot/foot.ini. Sections for [main], [colors], [mousebinds], [keybinds]. Supports inline CSI sequences for runtime changes.

CLIENT-SERVER MODE

Run foot --server once; clients via footclient. Shares fonts, reduces latency across windows. Socket at $XDG_RUNTIME_DIR/foot-$WAYLAND_DISPLAY.

HISTORY

Developed by Simon Ser (kpcyrd) starting 2019. First release 2020 as a performant Wayland alternative to urxvt. Active development focuses on standards compliance, sixel/graphics support added in v0.7+. Widely used in Sway/i3wm communities.

SEE ALSO

kitty(1), alacritty(1), wezterm(1), swaymsg(1)

Copied to clipboard