Awesome
Contour - a modern & actually fast Terminal Emulator
<img alt="open collective badge" src="https://opencollective.com/contour-terminal-emulator/tiers/backer/badge.svg?label=backer&color=brightgreen" />
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
- ✅ 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 behaviours)
- ✅ Synchronized rendering (via
SM ? 2026
/RM ? 2026
) - ✅ Text reflow (configurable via
SM ? 2028
/RM ? 2028
) - ✅ Clickable hyperlinks via OSC 8
- ✅ Clipboard setting via OSC 52
- ✅ Sixel inline images
- ✅ Terminal page buffer capture VT extension to quickly extract contents.
- ✅ Builtin Fira Code inspired progress bar support.
- ✅ Read-only mode, protecting against accidental user-input to the running application, such as <kbd>Ctrl</kbd>+<kbd>C</kbd>.
- ✅ VT320 Host-programmable and Indicator status line support.
- ✅ and much more ...
Installation
contour
is packaged and available for installation on multiple distributions.
Fedora
use official package
sudo dnf install contour-terminal
Arch
use AUR package
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
. - Proceed with one of the following options:
Requirements
- operating system: A recent operating system (macOS 12, 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.
Installing from source
Contour is best installed from supported package managers, but you can build
from source by following the instructions below. You can use Qt 5 or Qt 6,
by default contour will be compiled with Qt 6, to change Qt version use
QTVER=5 ./scripts/install-deps.sh
to fetch dependencies and cmake flag
-D CONTOUR_QT_VERSION=5
.
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 insalled 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 or MacOs use linux-release
or macos-release
accordingly. FreeBSD and OpenBSD users can use linux-release
or configure cmake manually.
cmake --preset linux-release
cmake --build --preset linux-release
# Optionally, if you want to install from source
cmake --build --preset linux-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.
- 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
Distribution Packages
CLI - Command Line Interface
Usage:
contour [terminal] [config FILE] [profile NAME] [debug TAGS] [live-config] [dump-state-at-exit PATH]
[early-exit-threshold UINT] [working-directory DIRECTORY] [class WM_CLASS]
[platform PLATFORM[:OPTIONS]] [session SESSION_ID] [PROGRAM ARGS...]
contour font-locator [config FILE] [profile NAME] [debug TAGS]
contour info vt
contour help
contour version
contour license
contour parser-table
contour list-debug-tags
contour generate terminfo to FILE
contour generate config to FILE
contour generate integration shell SHELL to FILE
contour capture [logical] [words] [timeout SECONDS] [lines COUNT] to FILE
contour set profile [to NAME]
References
- VT510: VT510 Manual, see Chapter 5.
- ECMA-35: Character Code Structure and Extension Techniques
- ECMA-43: 8-bit Coded Character Set Structure and Rules
- ECMA-48: Control Functions for Coded Character Sets
- ISO/IEC 8613-6: Character content architectures
- xterm: xterm control sequences
- console_codes Linux console codes
- Summary of ANSI standards for ASCII terminals
- Text Terminal HOWTO (Chapter 7.2, PTY)
- ANSI escape code in Wikipedia
License
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.