# st

> Simple, minimalist terminal implementation from suckless.org, configured through source code patches.

Language: C · License: MIT · Platforms: Linux, BSD · Config: C source

Features: configurable

- Repository: https://git.suckless.org/st
- Page: https://www.trmn.sh/terminals/st

## Overview

st ("simple terminal") is a minimal terminal emulator for X from the suckless project, written in C under the MIT license. It exists because the suckless developers consider xterm, with over 65,000 lines of code, and rxvt far more complex than a terminal emulator needs to be. It is for people who like to read, patch and recompile their tools.

What st implements is deliberately short: most VT10x escape sequences, serial line support, XIM input, UTF-8 and wide characters, 256 colors and true color, antialiased fonts through fontconfig with fallback fonts, line drawing, clipboard handling and resizing. Several things other terminals build in are left to other programs. utmp entries are handled by the separate `utmp` tool. There is no scrollback, and the FAQ suggests running `st -e tmux` or `st -e screen`, using the suckless `scroll` tool, or applying the scrollback patch. It has no tabs or splits.

There is no runtime config file. You configure st by editing `config.h`, which is generated from the defaults in `config.def.h`, and recompiling. Fonts, colors, shortcuts and mouse bindings are all set there. Extra features are added with patches from st.suckless.org/patches, so every user's st is effectively a custom build. If you skip `make install`, programs may say the terminal is unknown because the `st` terminfo entry was never installed. The FAQ's fix is `tic -sx st.info`.

The repository linked from this catalog entry is Luke Smith's build of st, not upstream suckless. It applies the ligatures, boxdraw and font2 patches and adds scrollback with Alt plus arrow or vim-style keys, font zoom, Xresources and pywal colors, transparency, and dmenu-based shortcuts to follow URLs (Alt-L), copy URLs (Alt-Y) and copy command output (Alt-O). Building it needs the Xlib and HarfBuzz development files.

## Alternatives

- [Windows Terminal](https://www.trmn.sh/terminals/windows-terminal.md): Microsoft's terminal for Windows that hosts PowerShell, cmd and WSL shells in tabs and panes, with GPU text rendering and JSON settings. (Windows, 105.3k stars)
- [Tabby](https://www.trmn.sh/terminals/tabby.md): Cross-platform Electron terminal with a built-in SSH, Telnet and serial client, saved connection profiles and a plugin system. (Linux/macOS/Windows, 75.3k stars)
- [Alacritty](https://www.trmn.sh/terminals/alacritty.md): Cross-platform OpenGL terminal emulator written in Rust, configured with a TOML file and leaving tabs and splits to a multiplexer like tmux. (Linux/macOS/Windows/BSD, 66.1k stars)
- [Warp](https://www.trmn.sh/terminals/warp.md): Terminal written in Rust with an IDE-style command editor, command output grouped into blocks, and built-in AI agents. (macOS/Linux/Windows, 65.8k stars)
- [Termux](https://www.trmn.sh/terminals/termux.md): Android terminal emulator and Linux environment that installs packages through its own apt repository, no root required. (Android, 64.0k stars)
- [Ghostty](https://www.trmn.sh/terminals/ghostty.md): Terminal emulator written in Zig with GPU rendering and a native UI on each platform: Swift/AppKit on macOS, GTK on Linux. (Linux/macOS, 63.3k stars)
- [Hyper](https://www.trmn.sh/terminals/hyper.md): Electron terminal built on HTML, CSS and JavaScript, themed and extended through npm plugins. (Linux/macOS/Windows, 44.8k stars)
- [Kitty](https://www.trmn.sh/terminals/kitty.md): GPU-rendered terminal written in C and Python, with its own graphics protocol, built-in tabs and splits, and scriptable 'kittens'. (Linux/macOS/BSD, 35.5k stars)

## Guides

- [Alacritty Alternatives](https://www.trmn.sh/alternatives/alacritty): Alacritty alternatives: WezTerm, Kitty and Ghostty add tabs, splits and scripting; Windows Terminal and iTerm2 cover one OS each.

---

Canonical: https://www.trmn.sh/terminals/st
