Contour is a modern and fast terminal emulator designed to provide a seamless experience for power users with a focus on performance and advanced features. It supports multiple platforms, including Linux, macOS, Windows, FreeBSD, and OpenBSD, offering GPU-accelerated rendering and Unicode support for emojis, ligatures, and grapheme clusters.
Key Features:
Cross-platform availability with native builds for all major operating systems.
GPU-accelerated rendering for smooth performance.
Support for Unicode features, including emojis, ligatures, and grapheme clusters.
Modal input modes inspired by Vi-like workflows for improved text selection and navigation.
Truecolor support for vibrant terminal output.
Customizable profiles with options for color schemes, login shells, and behavior settings.
Audience & Benefit:
Ideal for developers, terminal enthusiasts, and power users who demand a fast, customizable, and feature-rich terminal experience. Contour enhances workflow efficiency by offering advanced customization, performance optimization, and modern terminal features in a single package.
Contour can be installed via winget, making it easy to set up on Windows systems.
README
Contour - a modern & actually fast Terminal Emulator
contour is a modern and actually fast, modal, virtual terminal emulator,
for everyday use. It is aiming for power users with a modern feature mindset.
Features
✅ Available on all major platforms, Linux, macOS, FreeBSD, OpenBSD, Windows.
✅ GPU-accelerated rendering.
✅ Font ligatures support (such as in Fira Code).
✅ Unicode: Emoji support (-: 🌈 💝 😛 👪 - including ZWJ, VS15, VS16 emoji :-)
✅ Unicode: Grapheme cluster support
✅ Terminal tabs
✅ Persistent sessions that survive the window (daemon mode) — reattach locally or over the network, and interoperate with tmux in both directions
✅ Bold and italic fonts
✅ High-DPI support.
✅ Vertical Line Markers (quickly jump to markers in your history!)
✅ Vi-like input modes for improved selection and copy'n'paste experience and Vi-like scrolloff feature.
✅ Blurred behind transparent background support for Windows 10 and above as well as the KDE and GNOME desktop environment on Linux.
✅ Blurrable Background image support.
✅ Runtime configuration reload
✅ 256-color and Truecolor support
✅ Key binding customization
✅ Color Schemes
✅ Profiles (grouped customization of: color scheme, login shell, and related behaviors)
Additional packages can be found on the release page including:
ubuntu package
AppImage
static build
MacOS bundle
Windows installer and zipped app
Installing via Flatpak
Install from Flathub
Click the following button to install Contour from the Flathub store.
Prerequisites
Make sure you have flatpak installed in your system (here is a tutorial on how to install it), and make sure that the version is >= 0.10 (check it using this command: flatpak --version)
Add the flathub repository using the following command: flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo.
operating system: A recent operating system (macOS, Windows 10+, an up-to-date Linux, FreeBSD or OpenBSD)
GPU: driver must support at least OpenGL 3.3 hardware accelerated or as software rasterizer.
CPU: x86-64 AMD or Intel with AES-NI instruction set or ARMv8 with crypto extensions.
Configuration
In order to configure Contour, it is necessary to modify the configuration file
contour.yml, which is initially generated in the $HOME/.config/contour
directory. Some features also require shell integration. These can be generated
via the CLI (see below), these currently exist for zsh, fish and tcsh.
Persistent sessions (daemon mode)
> Experimental. Daemon mode is new in 0.7.0 and still settling. It is built into every Contour
> and covered by the test suite, but its command-line flags and its wire protocol may change
> between releases.
Contour already gives you tabs and split panes inside one window. Daemon mode goes further: it
moves your sessions into a background process, so they survive the window that shows them. A long
build keeps going after you close the window, work done over SSH survives the link dropping, and
the same sessions can be reattached from another machine over an encrypted connection.
contour client # attaches to the daemon, starting one if none is running
Contour also speaks tmux's control-mode protocol in both directions: tmux-aware tooling — and the
stock tmux binary itself — can attach to a Contour daemon, and contour client --tmux mirrors a
running tmux server into a Contour window, windows as tabs and panes as splits.
Contour is best installed from supported package managers, but you can build
from source by following the instructions below.
UNIX-like systems (Linux, FreeBSD, OpenBSD, macOS)
Prerequisites
./scripts/install-deps.sh
This script might ask you for the administrator password if a package dependency
can be installed via the system package manager.
Compile
You can use cmake presets to compile contour. The full list of available presets can be seen using cmake --list-presets. To compile release build for linux clang-release or gcc-release, or appleclang-release on macOS accordingly.
cmake --preset clang-release
cmake --build --preset clang-release
# Optionally, if you want to install from source
cmake --build --preset clang-release --target install
Windows 10 or newer
Prerequisites
For Windows, you must have Windows 10, 2018 Fall Creators Update, and Visual Studio 2019, installed.
It will neither build nor run on any prior Windows OS, due to libterminal making use of ConPTY API.
Using External ConPTY Support on Windows 10
On Windows 10, the built-in ConPTY implementation has limitations with mouse input handling, particularly when using WSL2 with terminal applications like tmux. This is a known issue that affects several terminal emulators.
Contour supports using an external conpty.dll implementation which resolves these issues on Windows 10.
Put these files into your Contour bin directory (e.g. C:\Program Files\Contour Terminal Emulator 0.6\bin)
Start Contour. It will automatically detect and use the external ConPTY implementation.
Set up vcpkg, preferably somewhere high up in the folder hierarchy, and add the folder to your PATH.
cd C:\
git clone https://github.com/Microsoft/vcpkg.git
.\vcpkg\bootstrap-vcpkg.bat
Install Visual Studio Build Tools (make sure to select the CLI tools for
C++, which you might need to do in the separate components tab).
Install Qt6 (i.e. to C:\Qt)
Open the developer version of Powershell.
In the contour source folder execute .\scripts\install-deps.ps1. This step may take a very long time.
Compile
In the developer version of Powershell:
# change paths accordingly if you installed QT and vcpkg to somewhere else
cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake -DCMAKE_PREFIX_PATH=C:\Qt\6.5.0\msvc2019_64\lib\cmake
cmake --build build/
# Optionally, if you want to install from source
cmake --build build/ --target install
Contour - A modern C++ Terminal Emulator
-------------------------------------------
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.