contour-terminal / contour

Modern C++ Terminal Emulator
http://contour-terminal.org/
Apache License 2.0
2.46k stars 107 forks source link
console emoji grapheme-cluster hacktoberfest library linux sixel-graphics terminal terminal-emulators unicode unicode-support vte windows-terminal xterm

Contour - a modern & actually fast Terminal Emulator

CI Build codecov C++20 Discord Twitch Live Stream

open collective badge

screenshot showcasing notcurses ncneofetch on KDE/Fedora

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

Installation

contour is packaged and available for installation on multiple distributions.

sudo dnf install contour-terminal

Installing via Flatpak

Install from Flathub

Click the following button to install Contour from the Flathub store.

Get it on Flathub

Prerequisites

Requirements

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.

  1. 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
  1. 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).
  2. Install Qt6 (i.e. to C:\Qt)
  3. Open the developer version of Powershell.
  4. 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

Packaging status

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

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.