Modern C++ Terminal Emulator
IMPORTANT: THIS PROJECT IS IN ALPHA STAGE & ACTIVE DEVELOPMENT
contouris a modern terminal emulator, for everyday use. It is fully separating emulation from graphical representation for clear separation of concerns but also for special features to come before version 1.0 is released (headless terminal server with GUI & TUI frontends).
DECSM 2026/
DECRM 2026)
DECSM 2027/
DECRM 2027)
Usage: contour [options] Contour Terminal EmulatorOptions: -h, --help Displays this help. -v, --version Displays version information. -c, --config Path to configuration file to load at startup [~/.config/contour/contour.yml]. -p, --profile Terminal Profile to load.
word_delimiters: " /\\()\"'-.,:;<>[email protected]#$%^&*+=[]{}~?|│" default_profile: ubuntu_vm profiles: ubuntu_vm: shell: "ssh ubuntu-vm" terminal_size: columns: 130 lines: 30 environment: TERM: xterm-256color COLORTERM: truecolor font: size: 12 render_mode: lcd regular: "Fira Code" bold: "Fira Code:style=bold" italic: "Hack:style=italic" bold_italic: "Hack:style=bold italic" emoji: "emoji" tab_width: 8 history: limit: 8000 scroll_multiplier: 3 auto_scroll_on_update: true cursor: shape: block blinking: true background: opacity: 0.9 blur: false colors: google_darkcolor_schemes: google_dark: cursor: '#b0b030' selection: '#30c0c0' default: background: '#1d1f21' foreground: '#c5c8c6' normal: black: '#1d1f21' red: '#cc342b' green: '#198844' yellow: '#fba922' blue: '#3971ed' magenta: '#a36ac7' cyan: '#3971ed' white: '#c5c8c6' bright: black: '#969896' red: '#cc342b' green: '#198844' yellow: '#fba922' blue: '#3971ed' magenta: '#a36ac7' cyan: '#3971ed' white: '#ffffff'
input_mapping: - { mods: [Alt], key: Enter, action: ToggleFullscreen } - { mods: [Control, Alt], key: S, action: ScreenshotVT } - { mods: [Control, Shift], key: Equal, action: IncreaseFontSize } - { mods: [Control, Shift], key: Minus, action: DecreaseFontSize } - { mods: [Control, Shift], key: N, action: NewTerminal } - { mods: [Control], mouse: WheelUp, action: IncreaseFontSize } - { mods: [Control], mouse: WheelDown, action: DecreaseFontSize } - { mods: [Alt], mouse: WheelUp, action: IncreaseOpacity } - { mods: [Alt], mouse: WheelDown, action: DecreaseOpacity } - { mods: [Control], key: '0', action: ResetFontSize } - { mods: [Shift], mouse: WheelUp, action: ScrollPageUp } - { mods: [Shift], mouse: WheelDown, action: ScrollPageDown } - { mods: [], mouse: WheelUp, action: ScrollUp } - { mods: [], mouse: WheelDown, action: ScrollDown } - { mods: [Shift], key: UpArrow, action: ScrollOneUp } - { mods: [Shift], key: DownArrow, action: ScrollOneDown } - { mods: [Shift], key: PageUp, action: ScrollPageUp } - { mods: [Shift], key: PageDown, action: ScrollPageDown } - { mods: [Shift], key: Home, action: ScrollToTop } - { mods: [Shift], key: End, action: ScrollToBottom } - { mods: [Alt, Shift], key: 'k', action: ScrollMarkUp } - { mods: [Alt, Shift], key: 'j', action: ScrollMarkDown }
logging: file: "/path/to/contour.log" parse_errors: true invalid_output: true unsupported_output: true raw_input: false raw_output: false trace_input: false trace_output: false
This is tested on Ubuntu 19.04, but any recent Linux with latest C++17 compiler should do:
sudo apt install \ "g++-9" cmake libfreetype6-dev qtbase5-dev libqt5gui5 extra-cmake-modules \ libfontconfig1-dev libharfbuzz-dev
To enable blur-behind feature on transparent background, you'll need the following packages:
sudo apt install libkf5windowsystem-dev
And set pass
-DCONTOUR_BLUR_PLATFORM_KWIN=ONto cmake when configuring the project.
In case you want to improve performance slightly and run at at least Linux, you can add
-DLIBTERMINAL_EXECUTION_PAR=ONto the cmake configuration and make sure to have
libtbb-devinstalled beforehand.
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.
vcpkg install freetype fontconfig harfbuzz qt5-base
brew install freetype fontconfig harfbuzz boost qt5
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.