/contour

Modern C++ Terminal Emulator

Primary LanguageC++Apache License 2.0Apache-2.0

Contour - a modern & actually fast Terminal Emulator

CI Build codecov C++17 Discord Twitch Live Stream open collective badge

screenshot showcasing notcurses ncneofetch on KDE/Fedora

IMPORTANT: THIS PROJECT IS IN BETA STAGE & ACTIVE DEVELOPMENT

contour is a modern and actually fast virtual terminal emulator, for everyday use. It is aiming for power users with a modern feature mindset.

Features

  • ✅ Available on all 4 major platforms, Linux, OS/X, FreeBSD, Windows.
  • ✅ GPU-accelerated rendering.
  • ✅ Font ligatures support (such as in Fira Code).
  • ✅ Unicode: Emoji support (-: 🌈 💝 😛 👪 - including ZWJ, VS15, VS16 emoji :-)
  • ✅ Unicode: Grapheme cluster support
  • ✅ 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.
  • ✅ Blurred behind transparent background when using Windows 10 or KDE window manager 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 ? 2027 / RM ? 2027)
  • ✅ 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.
  • ✅ and much more ...

Requirements

  • operating system: A recent operating system (OS/X 12, Windows 10+, an up-to-date Linux, or FreeBSD)
  • 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.

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 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]

Installing from source

It's best installed from supported package managers, but if you want to build from source, it is recommended to execute the scripts/install-deps.sh script.

Prerequisites UNIX-like systems (Linux, FreeBSD, OS/X)

./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.

Prerequisites Windows 10 or newer

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.

.\scripts\install-deps.ps1

Compile

mkdir build
cmake -S . -B build
cmake --build build/

# Optionally, if you want to install from source
cmake --build build/ --target install

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.