# Contour

> GPU-accelerated terminal emulator written in C++ that focuses on VT conformance, with Sixel graphics, ligatures and a vi-like input mode.

Stars: 3.1k · Language: C++ · License: Apache-2.0 · Platforms: Linux, macOS, Windows · Config: YAML

Features: GPU-accelerated, cross-platform, ligatures, inline images, configurable

- Repository: https://github.com/contour-terminal/contour
- Page: https://www.trmn.sh/terminals/contour

## Overview

Contour is a GPU-accelerated terminal emulator written in C++23 for Linux, macOS, FreeBSD, OpenBSD and Windows 10 and later, licensed under Apache-2.0. It aims at power users who care about broad terminal protocol coverage, and it is modal, with vi-like input modes for selection and copy and paste, plus a vi-like `scrolloff` setting.

Rendering needs OpenGL 3.3, either hardware-accelerated or through a software rasterizer, and the CPU must be x86-64 with AES-NI or ARMv8 with crypto extensions. Text features include font ligatures such as those in Fira Code, bold and italic fonts, emoji (including ZWJ sequences and variation selectors), grapheme clusters and high-DPI support. Graphics include Sixel inline images and ReGIS vector graphics from the VT330/VT340. Contour also implements synchronized rendering (mode 2026), configurable text reflow (mode 2028), OSC 8 hyperlinks, OSC 52 clipboard writes, a VT320 host-programmable status line, and its own buffer capture extension for extracting screen contents.

Configuration is a YAML file, `contour.yml`, generated in `~/.config/contour` on first run and reloaded at runtime. Profiles group a color scheme, login shell and related behavior, and key bindings are customizable. Shell integration scripts, generated from the CLI, exist for zsh, fish and tcsh. Other features include vertical line markers for jumping through history, a read-only mode that blocks accidental input such as Ctrl+C, blurred transparent backgrounds on Windows 10+, KDE and GNOME, and blurrable background images.

Contour has tabs and split panes. Daemon mode moves sessions into a background process so they survive closing the window or a dropped SSH link. `contour client` attaches to the daemon, starting it if needed, and sessions can be reattached from another machine over an encrypted connection. It speaks tmux's control-mode protocol in both directions: the stock `tmux` binary can attach to a Contour daemon, and `contour client --tmux` shows a running tmux server as Contour tabs and splits. The README marks daemon mode as experimental, with flags and wire protocol that may still change.

## 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.
- [Ghostty Alternatives](https://www.trmn.sh/alternatives/ghostty): Ghostty alternatives: WezTerm, Kitty and Alacritty compared by platform, built-in tabs and splits, scripting, and licensing.
- [Kitty Alternatives](https://www.trmn.sh/alternatives/kitty): Kitty alternatives: WezTerm, Ghostty, and Alacritty compared by platform, multiplexing, scripting and rendering, plus Rio, Contour, iTerm2 and foot.
- [WezTerm Alternatives](https://www.trmn.sh/alternatives/wezterm): WezTerm alternatives: Kitty, Ghostty, Alacritty, Windows Terminal and Tabby compared on multiplexing, config format and platform support.
- [Windows Terminal Alternatives](https://www.trmn.sh/alternatives/windows-terminal): Windows Terminal alternatives compared: WezTerm, Tabby, Alacritty, cmder, Hyper and Contour, with platform, config and multiplexing differences.
- [Best Terminals with Inline Image Support](https://www.trmn.sh/best/terminals-with-image-support): Terminals that show images inline: kitty, WezTerm and Rio compared by protocol support (kitty graphics, Sixel, iTerm2) and platform.

---

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