Releases
0.5.2 (unreleased)
- Expose current profile's name through env var
CONTOUR_PROFILE
(#1637) - Add terminal tabs (#90)
- Add
SaveScreenshot
andCopyScreenshot
action (#210) - Protect user from accidentally pasting too large input (#1198)
- Add binding to exit normal mode with
Esc
(#1604) - Add config option to switch into insert mode after yank (#1604)
- Improves window size/resize handling on HiDPI monitor settings (#1628)
- Improves macOS key handling for Option+Left|Right keys to jump between words in the shell
- Fixes cropping of underscore character for some fonts (#1603)
0.5.1 (2024-09-30)
- Fixes vi-mode motions like
viW
,yiW
,oiW
as well asB
andW
- Fixes rendered backend loading from config
- Fixes mouse wheel scrolling on High-DPI screens feeling too slow
- Enable support for Unicode version 16.0.0 (#1606)
- Port to C++20's
std::format()
(#1598) - Drop support for Ubuntu 23.10 and older. In order to have less burdain of maintencne, we only support the latest LTS of Ubuntu, which currently is 24.04 (#1607)
0.5.0 (2024-09-18)
- macOS package is now Apple Silicon native
- Add CoreText font fallback implementation for macOS (#1533)
- Add Ubuntu-24.04 in github actions (#1460)
- Add 'early_exit_threshold' config option (#1460)
- Add AppImage package with Qt6 support (#586)
- Add ability to customize the indicator statusline through configuration (#687)
- Add generation of config file from internal state (#1282)
- Add SGRSAVE and SGRRESTORE VT sequences to save and restore SGR state (They intentionally conflict with XTPUSHSGR and XTPOPSGR)
- Add extended word selection feature (#1023)
- Add some more missing vi input motions, such as
y$
,o$
, and many others as initiated byy
ando
(#1441) - Add CPM fallback for the dependencies
- Add static build
- Add shell integration for bash shell.
- Add better bell sound (#1378)
- Add config entry to configure behaviour on exit from search mode
- Add config entry to configure font fallback (#225)
- Add handling of different input commands (#629)
- Add key bindings disabled indicator for status line (#783)
- Add support for highlighting matches of the currently selected text area (beyond double click)
- When switching to normal mode screen will stay in same position (#808)
- Add customizable per-input-mode default text/background coloring for indicator statusline (#1528)
- Add option PasteSelection to paste text as a shell input (#1549)
- Add case-insensitive smart search (#1410)
- Add OpenBSD support
- Add new CLI command:
contour info config
to list missing entries from config file (#1125). - Add xdg-terminal-exec support (#1570).
- Add predefined color palettes (monokai, gruvbox-light/dark, solarized-light/dark, papercolor-light/dark, one-light, one-dark) (#1285).
- Update of contour.desktop file (#1423)
- Changed configuration entry values for
font_locator
down tonative
andmock
only (#1538). - Do not export the
TERM
environment variable on Windows OS (when using ConPTY). - Fixes line corruption after resize (#883)
- Fixes resize of trivial line (#916)
- Fixes copying of wrapped line
- Fixes deletion of spaces on resize
- Fixes forwarding of input while in normal mode (#1468)
- Fixes OSC-8 link id collision (#1499)
- Fixed overlap of glyphs for long codepoints (#1349)
- Fixed too verbose info during ssh session login (#1447)
- Fixes corruption of sixel image on high resolution (#1049)
- Fixes bad wording of OS/X to macOS (#1462)
- Fixes key bindings and search prompt collision (#1472)
- Fixes
CSI 8 ; (COLS) ; (ROWS) t
to resize the terminal with respect to High-DPI - Fixes screen sampling with multiple monitors (#940)
- Fixes bell sound in spawned window in same process (#1515)
- Fixes status line crush (#1511)
- Fixes application window icon on (KDE) Wayland
- Fixes missing keymapping for numpad (#1325)
- Improves handling of constant bell sound spawning
- Fixes yW (yank WORD) not working properly in normal mode (#1448)
- Fixes key mapping Shift+Tab (#1578)
0.4.3 (2024-02-04)
- Fixes dead lock bug on mouse selection.
0.4.2 (2024-02-03)
- Fixes Windows alt/control key modifiers (#1408).
- Fixes Windows built accidentally not including builtin-SSH support (#1427).
- Fixes some text run segmentation problems, e.g., not making use of some programming ligatures (#395).
- Fixes mouse scroll wheel events going into the wrong direction if
Alt
modifier was pressed at the same time (#394). - Fixes
scripts/install-deps.sh
for openSuSE (Tumbleweed) to install the correct dependencies. - Fixes missing dependencies for release .deb packages (#1397).
- Fixes legacy keyboard input protocol not reporting non-Alt modifier (#1411).
- Fixes thread safety issue on mouse move event handling (#1444).
- Digitally sign MacOS release binaries using a valid Apple ID.
- Add support for authenticating to SSH servers with a private key without a password and without requesting for one - also allow password retry (#1425).
- Default history limit is now 1000 lines rather than 0 lines.
0.4.1 (2023-12-31)
- Fixes fast scrolling when using trackpad (#1360)
- Fixes variable fonts loading
- Fixes Command modifier for input mappings, such as Command+C or Command+V on on MacOS (#1379).
- Fixes CSIu encoding of shift modifier produced characters (#1373).
- Fixes screen destruction on sibling cells when overwriting wide characters, such as Emoji, Kanji, etc.
- Changes VT sequence
DECSCUSR
(CSI ? 0 SP q
andCSI ? SP q
) to reset to user-configured cursor style (#1377). - Remove
contour-latest
terminfo file. Please usecontour
terminfo instead. - Adds
Command
as modifier to input mappings on MacOS to work along withMeta
for convenience reasons (#1379). - Adds config option
profiles.*.margins
to allow customizing the horizontal / vertical margins (#1384). - Adds config option for colorscheme
default.bright_foreground
anddefault.dimmed_foreground
to configure bright and dimmed default foreground text respectively (#1383).
0.4.0 (2023-12-19)
- Fixes GUI terminating on idle input in some conditions.
- Fixes search term rendering highlighting for search terms containing whitespaces (#966).
- Fixes rendering in cases of glyphs with inverted orientation (#1115).
- Fixes Emoji rendering being too small on macOS (#1215)
- Fixes config option
show_title_bar
(#1153) - Fixes VT sequence DECSTBM and DECSLRM defaulting parameters (#1164).
- Fixes VT sequence DECFRA (#1189).
- Fixes VT sequence DECSCPP and DECCOLM (#1205).
- Fixes VT sequence DECALN to properly reset margins when statusline is shown
- Fixes VT sequence ED (CSI J) when statusline is shown.
- Fixes VT sequence SM ?1003 (Any Event mouse tracking) not reporting mouse move events.
- Fixes VT sequence XTWINOPS (
CSI 22 t
andCSI 23 t
) to not assert and terminate the terminal but default to missing paramter0
instead (#1369). - Fixes VT sequences CUU/CUD/CUF/CUB to better respect margins (#1201)
- Fixes printing over 2nd cell of a wide character should delete wide character (#1268)
- Fixes URI re-encoding of local files in
OSC 8
(#1199) - Fixes LCD subpixel rendering for overly wide US-ASCII glyphs (#1022)
- Fixes alive process when GUI is closed
- Fixes vi mode
f
action freeze on last line - Fixes AltGr handling on Windows (#150)
- Fixes rarely happening bad access to GPU texture atlas (#1309)
- Fixes terminal session not being terminated when the process terminated, but the PTY handle was still open (e.g. by other processes).
- Fixes setting window class (
app_id
) on Wayland (#1336) - Fixes screen margins not being shared across primary and alt screen, as it should be.
- Do not clear search term when entering search editor again.
- Clear search term when switch to insert vi mode (#1135)
- Delete dpi_scale entry in configuration (#1137)
- Removes the ability to inline colorschemes within a configuration profile. Colorschemes must now always be referenced by their name.
- Moves the vi-like cursor with the viewport when scrolling up/down.
- Adds normal mode motion
Ctrl+e
andCtrl+y
to vertically move the viewport. - Adds the ability to chose a color scheme based on the operating systems's dark/light mode setting. This will change live whenever the OS's dark/light mode setting changes as well (#604).
- Adds VT sequence DECSSCLS (change scroll speed) and properly handle DECSCLM (enable slow scrolling mode) (#1204)
- Adds VT sequence parameter ?996 to DSR to request a report of current color scheme dark/light mode hint.
- Adds VT sequence
SM ?2031
andRM ?2031
to enable/disable unsolicited DSR for color scheme updates by the user or OS. - Adds support the extended
CSIu
keyboard protocol to better report key modifiers. - Adds extended keyboard protocol support (CSI u) to better report key modifiers.
- Adds support vor horizontal mouse scrolling event reporting sequences.
- Adds percentage value to Indicator Statusline to indicate scroll offset in scrollback buffer.
- Adds inheritance of profiles in configuration file based on default profile (#1063).
- Adds config option
profiles.*.bell
to adjust BEL behavior (#1348) and fixes (#1162) and (#1163). - Adds config option
profiles.*.frozen_dec_modes
to permanently enable/disable certain DEC modes. - Adds config option
profiles.*.option_as_meta
to allow remapping Option key to Alt on MacOS. - Adds config option
profiles.*.ssh
to allow connecting to an SSH server directly from Contour. - Adds capital
A
andI
keys to switch from normal mode back to insert mode, too. - Adds size indicator window on resize (#1203).
- Adds config entry
profile.*.size_indicator_on_resize
to control size indicator on resize and makes resize indicator small. - Adds OpenSelection action, and honor case in the configuration bindings
- Adds open resource (URL, local file) feature also to vi mode.
- Adds configurable window alerts on terminal bells.
0.3.12 (2023-05-29)
- Fixes terminfo
tsl
to how todays apps are using it (e.g. zsh) to simply set the window title. - Fixes selecting a single character not working easily (#1066).
- Fixes cycling between different selection modes (by speed-clicking) not properly working.
- Fixes tcsh shell integration not working (#1074).
- Fixes
[count]w
ignoring the[count]
parameter in modal mode. - Fixes statusline being misplaced after resize when being in alt screen (#1091).
- Fixes hyperlinks with IDs (#1088)
- Fixes hyperlink highlight when screen has been scrolled (#1084)
- Fixes cursor shape changes when entering vi-like normal mode or visual mode.
- Improves mouse selection to be more natural extending into new grid cells.
- Modal mode: Improves how
[m
jumps from the current prompt to the next prompt above it. - Adds
profiles.*.permissions.display_host_writable_statusline
to allow the user to intervene inDECSSDT 2
VT sequence to show the host writable statusline. - Adds config entry
input_method_editor
colorscheme key to allow customization of the IME (input method editor) region (#1058). - Adds
gui.shader
log option for the output of shader configuration procedure (#715). - Adds config entry
profiles.*.status_line.position
to change statusline position to be either bottom (default) or top. - Adds config entry
profiles.*.status_line.sync_to_window_title
to synchronize the window title with the host writable statusline (if it was denied to be shown). - Linux: Adds support for writing to utmp/wtmp.
- Extends
ViNormalMode
to toggle between insert and normal mode rather than just entering normal mode. - Modal mode: Adds Return key to also move the cursor down (like vim).
- Model mode: Adds text object
im
andam
to select the range between two line marks. - Model mode: Adds handling of
Home
andEnd
keys (#1098).
0.3.11 (2023-03-01)
- Fixes normal mode motion
J
andK
that got accidentally unimplemented and make it also available to visual mode. - Fixes use of config
bypass_mouse_protocol_modifier
that was ignored. - Fixes abnormal termination on incomplete foreground/background color-pair specification.
- Fixes
SendChars
input acion to actually send the chars as-is to the standard input of the connected application. - Fixes mouse selection to only be initiated if actually meant to, i.e. in alt screen mode only if bypass-modifier was pressed (#1017).
- Fixes mouse selection within scrolloff setting to not cause the viewport to jump anymore (#1019).
- Fixes rendering sixel image when status line is active (#1050).
- Adds normal mode motion
[[
,]]
,[]
,][
mimmicking exactly what vim does. - Adds normal mode motion
[m
and]m
to jump line marks up/down. - Adds normal mode motion
mm
to toggle the line mark at the current active cursor position. - Adds normal mode motion
t{char}
,T{char}
,f{char}
,F{char}
,;
,,
to move cursor in line till before/after or to given{char}
. - Adds config entry
vi_mode_highlight
to color palette to highlight current cursor's line when not in insert mode (aka. in Vi-mode). - Adds shell integration for fish shell.
- Adds shell integration for tcsh shell.
- Improve performance of parsing UTF-8 text on ARM64 platfroms through the use SIMD instructions.
- Contour can now run on platforms not supporting hardware crypto extension for ARM64 nor AES-NI for x86-64. Hardware acceleration support can be configured to be included at compile time.
- Fixes scroll up when infinte history limit is set
0.3.10 (2023-01-22)
- Fixes
initial_working_directory
setting being ignored (#946). - Fixes background image being accidentally inverted (Bug introduced in 0.3.3.204).
- Fixes crash in some corner cases of too small fonts (#949).
- Fixes linefeed not inheriting graphics attributes when scrolling up to create a new line (#945).
- Fixes normal mode's motion
[count]|
that was off by one. - Fixes switching to normal mode sometimes placing the vi cursor wrong.
- Fixes vi-like normal mode's word motions
w
,e
, andb
to better emulate vim's behaviour. - Fixes copying text to clipboard stripping TAB-character generated spaces (#982).
- Fixes
BEL
's audio feedback not working on some platform by streamlineing the behaviour with a custom bell sound. - Adds new config option
word_highlight_current
andword_highlight_other
to better distinguish between double-click initiated word highlights and actual searches / selections. - Adds trace mode to single-step through each VT sequence. New actions:
TraceEnter
,TraceLeave
,TraceStep
,TraceBreakAtEmptyQueue
and new mode flagTrace
. - Adds implementation for
SO
andSI
control codes. - Adds ability to explicitly disable a font feature by prefixing the feature with a
-
, such as-calt
, explicitly enabling via+
prefix was added as well. - Adds terminal capability
hs
andes
to improve status-line feature detection via terminfo. - Adds normal mode motion:
B
,B
,E
. - Adds support for mouse in normal mode for selection and normal-mode's cursor placement.
- Changes terminfo entries
tsl
,fsl
anddsl
to make use of the host-writable statusline. - Improvements to text objects in vi-like normal mode (
i)
,a)
,i>
,a>
,i]
,a]
,i}
,a}
). - Improvements to vi-like normal mode: yank-motions (
yw
,y$
, etc). - Improvements to vi-like normal mode: support nested matching pairs, such as
{
,(
etc in text objects. - Improvements to vi-like normal mode: Add
%
motion to jump to matching symbol pairs. - Improvements to vi-like normal mode: Add
M
motion to jump to middle screen line (same column). - Improvements to vi-like normal mode: Add
P
to paste the clipboard with newlines stripped. - Improvements to vi-like normal mode: Add
SP
andBS
to move left/right.
0.3.9 (2022-12-24)
- Fixes statusline clock to show the correct local time.
- Fixes running within OpenGL/ES context.
- Fixes failing startup due to
background_image.path
pointing to a non-existing file (#928). - Fixes terminfo entries
Se
, and adds missing entriesRmol
,Sync
(#936). - Fixes rendering glitches (reverting PR #918 until a better solution has been found).
- Fixes loading TTC (TrueType Collection) font files not honor which face to load within the collection (#939).
- Adds config entry
mouse.hide_while_typing
to specify mouse behavior while typing whether hide it or not. - Adds config entry
indicator_statusline_inactive
colorscheme key to colorize the status line differently when the terminal is currently not in focus.
0.3.8 (2022-12-18)
- Fixes restoring the cursor visibility after leaving alternate screen when application wasn't restoring mode switches in reverse order.
- Fixes country flags rendering due to misleading grapheme cluster segmentation in corner cases.
- Fixes mouse reporting in primary screen when viewport has been scrolled into the scrollback area.
- Fixes VT sequence
DECSTR
(soft reset) to not move the cursor to home position. - Fixes cursor movements for the vi-like cursor (normal mode).
- Fixes Alt+Backspace on macOS.
- Fixes default config entry
profiles.*.draw_bold_text_with_bright_colors
(it was renamed fromprofiles.*.bold_is_bright
). Please rename this in your existing configuration if not done yet. - Fixes sometimes rendering two cursors when statusline is shown.
- Fixes normal mode's page top (S-H)/ page bottom (S-L) cursor movements to respect scroll offset.
- Fixes VT sequences
RIS
and actionClearHistoryAndReset
when statusline is shown. - Fixes cursor going beyond the terminal screnn in vim mode, move right motion (#917).
- Fixes selection while statusline is shown. (#910)
- Improves hard-reset (
RIS
) to restore initial statusline state. - Improves
$
motion in vi-like normal mode to point to the last non-empty grid cell in the current line instead of the right page margin. - Vi Mode search can handle line wrapping and searchText larger than line length (#869) (#870).
- Adds ability to highlight same words on double click via
profile.*.highlight_word_and_matches_on_double_click
. - Adds color scheme key
indicator_statusline.foreground
andindicator_statusline.background
to customize indicator statusline colors. - Adds clock to indicator status line.
- Adds current viewport position in scrollback buffer to indicator status line.
- Adds optional parameter
strip
to PasteClipboard configuration action to allow stripping newlines and normalizing whitespaces. - EXPERIMENTAL: Adds VT extension to enable passive mouse tracking via
CSI ? 2029 h
/CSI ? 2029 l
. Passive mouse tracking enables the application to get notified on mouse events while still allowing mouse selection. - EXPERIMENTAL: Adds VT extension to enable text selection tracking via
CSI ? 2030 h
/CSI ? 2030 l
.
0.3.7 (2022-11-01)
- Fixes display of non-insert mode (vi-like) cursor on monochrome lines.
- Fixes cursor movements on wide characters for the vi-like cursor.
- Fixes TERM value resolving in Flatpak environment when not escaping the sandbox.
0.3.6 (2022-10-30)
- Fixes ground-state infinite loop in corner case + refactor and tiny optimization.
- Fixes assertion in optimized bulk text processing.
- Fixes rare displacement of characters following a wide character (e.g. Emoji) in some cases.
- Fixes IME (input method editor) background rendering for wide characters (e.g. Kanji).
- Fixes
escape_sandbox
config option that wasn't set totrue
by default as documented. - Improve throughput performance for scroll-up when custom vertical margins are in effect.
- Improve rendering performance slightly for so called trivial lines.
- Adds menu entry to Dolphin file manager to open Contour at current working directory.
0.3.5 (2022-10-21)
- Fixes a problem with oversized glyphs being wrongly cut off (#821).
- Fixes Sixel handling of non-standard aspect ratio (#827).
- Fixes Sixel mode, when updating the color palette with a new color, that color must also be used for subsequent paints.
- Fixes vertical cursor movement for Sixel graphics with only newlines (#822).
- Fixes Sixel rendering for images with aspect ratios other than 1:1.
- Fixes Sixel rendering for images that show below but should be rendered above text (#831).
- Fixes cursor highlight in VI mode
- Removes
images.sixel_cursor_conformance
config option. - Adds VT sequence DECSCA, DECSEL, DECSED and DECSERA to support protected grid areas during erase operations (#29, #30, #31).
- Improve Input Method (IME) handling, visualizing preedit-text.
- Improve throughput performance of arbitrary complex Unicode.
- Update Unicode data to version 15.0.0 (release). See Announcing The Unicode® Standard, Version 15.0.0.
0.3.4 (2022-09-13)
- Fixes selection magically deselecting when indicator status line was shown and the top page line was selected.
- Fixes interpretation of VT sequence DECSDM to disable Sixel auto-scrolling, if enabled.
- Fixes visibility of the cursor in some situation when blending too much into the background color.
- Fixes dim/faint coloring to not affect background and default text coloring when feint SGR attribute is set (#786).
- Fixes SGR 9 (crossed out) and 53 (overline) to both look like underline.
- Fixes size of drawn sixel image if no size is given beforehand (#809).
- Fixes glyph rendering for some unexpectly oversized glyphs (#423).
- Adds
line#24
to terminfo file for backwards compatibility. - Adds configuration key
live_config
to determine whether or not to reload running terminal instances on every config file change. - Adds DEC-mode 2027 for enabling/discovering Unicode support as per draft specification (Terminal Unicode Core).
- Adds
CreateDebugDump
action to dump terminal state for debugging purposes. - [Flatpak] Adds configuration key
profiles.*.escape_sandbox
to decide whether or not to escape the sandbox. - [Packaging] Adding AppImage files to Github release page and CI artifacts and bump Ubuntu packages using Ubuntu 22.04 LTS
- [Linux] Changes context menu icon for "Run in Contour" action to be the Contour logo.
- Improve startup-time by not pre-rasterizing all printable US-ASCII codepoints at once.
0.3.3.204 (2022-08-30)
- Fixes a screen buffer manipulation bug that may happen on non-stylyzed but interactive command prompts (#787).
- Fixes viewport misalignment when in scrollback area white new lines are being added to the main page area.
- Fixes logging file toggle.
- Adds VT sequence
CSI 5m
(blink) andCSI 6m
(rapid blink). - Adds vim-like
scrolloff
feature to normal mode cursor movements to ensure a line padding when scrolling up/down. - Adds vim-like incremental search functionality with realtime highlighting and cycling through the matches.
- Adds ability to initiate search via configuration action
SearchReverse
in input mappings. - Adds ability to cancel highlighted search terms via configuration action
NoSearchHighlight
in input mappings. - Adds input mapping mode
Search
to conditionally enable input mapping when a search term is present. - Adds support for HSL colorspace in Sixel images.
- Adds configuration key
colorscheme.*.search_highlight
for coloring search matches. - Adds configuration key
colorscheme.*.search_highlight_focused
for coloring the active search match, containing the cursor. - Adds alpha value to
colorscheme.*.vi_mode_highlight
color configuration. - Adds VT sequence for ANSI mode NLM (NewLine Mode).
- Always show indicator status line when ANSI mode KAM is enabled (which can be toggled via action
ToggleInputProtection
). - Always show indicator status line when in non-insert mode.
- [Linux] Changes the .desktop file name and icon file name to conform to the flatpak recommendations.
- [Linux] Provide an AppStream XML file.
- [Linux] Drop KDE/KWin dependency on the binary by implementing enabling blur-behind background manually.
- [Linux] Adds support for blur-behind window on GNOME shell.
- [Flatpak] Also pass stdout-fastpipe (
3
) to shell. - [Flatpak] Do not set controlling terminal in order to allow TTY abilities like Ctrl+C. This seems to be a known bug in flatpak.
- [Flatpak] Exposes TERMINFO environment variable pointing to a valid path containing the contour terminfo file.
- Changes behavior of PTY (and shell process) creation until only when a PTY is required by the terminal emulator during instanciation, possibly avoiding problems with xdotool running too early.
- Internal: Y-axis inverted to match GUI coordinate systems where (0, 0) is top left rather than bottom left.
0.3.2.202 (2022-07-07)
- Fixes writing to a non-empty line sometimes destroying the contents of that line (#702).
- Fixes underline decoration for wide character cells.
- Fixes SGR 8 (Conceal/Hidden) attribute doesn't work as expected (#699).
- Fixes Synchronized Updates (
SM/RM ? 2026
) sometimes lagging behind in rendering. - Fixes SGR and text breakage when altering charsets via
ESC ( 0
VT sequence (#661). - Fixes SEGV when closing the terminal via GUI close button.
- Fixes scrolling in alt-screen.
- Fixes VT sequence for setting indexed color from palette.
- Fixes some config false positives error messages.
- Fixes command line arguments parser handling of
--
for switching to verbatim mode (#670). - Fixes rendering of U+E0B2 in pixel-perfect box drawing mode (#707).
- Fixes rendering of cursor sometimes being almost invisible when foreground and background colors are similar/equal (#691).
- Fixes line based selection sometimes not selecting the full line when wrapped over multiple lines.
- Fixes warning message on terminal's console output when enabling blurred background images.
- Fixes Win32 command output: Attaches to parent console if present, so typing
contour help
in a terminal actually shows something. - Changes
XTSMGRAPHICS
to match implementation of xterm exactly when querying sixel image limits, to be capped at terminal viewport dimensions (#656). - Changes CLI syntax for
contour parser-table
tocontour generate parser-table
. - Implements UTF-8 encoded mouse transport (
CSI ? 1005 h
) - Modal mode: Improved vi-like input modes.
- Modal mode: Fixed the text cursor not being visible during selection.
- Modal mode: Don't leak but actually support cursor keys up/down/left/right/page-up/page-down.
- Modal mode: Added
vip
,vap
(andyip
/yap
) motions. - Modal mode: Adds
^
motion. - Modal mode: When being in normal mode, pressing
a
also puts you back to insert mode. - Modal mode: Properly show cursor if it was hidden in insert mode and restore visibility & shape when going back to insert mode.
- Modal mode: Shift+K and Shift+J don't just move the cursor up/down but also move the terminal's viewport respectively (inspired by tmux).
- Modal mode: Shift+H and Shift+L to move cursor to the current viewport's page top/bottom (inspired by tmux).
- Modal mode: and more...
- Adds new config option
profile.*.vi_mode_highlight_timeout
andcolorscheme.*.vi_mode_highlight
and adds cell highlighting on yank (#669). - Adds support for running on ARMv8 platform with crypto extensions (#611).
- Adds back support OpenGL ES (3.1).
- Adds E3 capability, so
clear
now defaults to clearing screen and scrollback (#693). - Adds specialized PTY implementation for Linux operating system utilizing OS-specific kernel APIs.
- Adds basic support for Indicator status line and their VT sequences
DECSASD
andDECSSDT
, andDECRQSS
has been adapted (#687). - Adds configuration option
profiles.*.status_line.display
to be eithernone
orindicator
to reflect the initial state of the status line (more customizability of the Indicator status-line will come in future releases). - Adds new action
ToggleInputProtection
to protect terminal application against accidental input (#697). - Adds configuration options
logging.enabled
as well aslogging.file
. - Adds VT sequences
XTPUSHCOLORS
,XTPOPCOLORS
,XTREPORTCOLORS
(#714). - Adds CLI syntax
contour info vt
to print list of supported VT sequences (#730). - Adds VT sequence
DECPS
(#237). - Adds new config option
colorscheme.selection.foreground_alpha
andcolorscheme.selection.background_alpha
to enable somewhat more eye-candy visual looks on text selection. - Extends config option
colorscheme.selection.foreground
andcolorscheme.selection.background
to also acceptCellForeground
andCellBackground
as value.
0.3.1.200 (2022-05-01)
- Adds Vi-like input modes for improved selection and copy'n'paste experience.
- Adds contour executable to search path for spawned shell process on macOS and Windows.
- Adds customizability to dim colors (#664).
- Adds the profile configuration option:
draw_bold_text_with_bright_colors
. - Fixes
CSI K
accidentally removing line flags, e.g. line marks (#658). - Fixes wrong-spacing rendering bug on some lines.
- Fixes assertion on font resize when a (Sixel) image is currently being rendered (#642).
- Fixes assertion on too quick shell terminations (#647).
- Fixes fallback shell execution on UNIX-like systems when the reuqested shell cannot be spawned (#647).
- Fixes selection being wrongly rendered when viewport is scrolled (#641).
- Fixes full-line selection not properly injecting linefeeds between the lines.
- Changes behaviour of full-line selection to include a trailing linefeed for the last line (#641).
- Changes behaviour of bold text to by rendered using normal colors by default (was forced to bright before, and is now configurable via
draw_bold_text_with_bright_colors
).
0.3.0.198 (2022-04-18)
TLDR; Many thanks to all for the great support and feedback. This release marks a huge milestone for me especially with regards to VT backend performance(!), improved rendering architecture, and a more complete list of pixel perfect box drawings.
- Fixes installation from
.deb
(missing terminfo dependency) - Fixes PTY write race condition.
- Fixes VT sequence
DECFI
. - Fixes VT sequence
ICH
(#559). - Fixes VT sequence
OSC 4
's response. - Fixes VT sequence
OESC 4
to also support setting color via#RRGGBB
. - Fixes VT sequence extension: capture buffer (#493).
- Fixes
DECRC
with respect toDECSTBM
enabled andDECOM
being inverted interpreted. - Fixes
XTGETTCAP
(#582). - Fixes
SU
in combination withDECLRM
(#593). - Fixes an assertion in text renderer.
- Fixes wrongly advertising DEC locator mode (it is not supported).
- Improved VT backend performance (#342).
- Improved text selection behaviour.
- Improved detection of runtime DPI changes for KDE (Plasma) desktop environment.
- Improves Window manipulation VT sequence for saving/restoring window title (
CSI 22 ; Ps t
,CSI 23 ; Ps t
) - Adds pixel-perfect box-drawing for U+EE00 .. U+EE05 for progress bar glyphs as first introduced by Fira Code (#521).
- Adds pixel-perfect box-drawing for U+E0B0, U+E0B2, U+E0BA (Triangle Powerline glyphs).
- Adds preliminary implementation of
DA3
VT sequence. - Adds new configuration option
mouse_block_selection_modifier
. - Adds new configuration option
profiles.*.copy_last_mark_range_offset
(default0
) to adjust where to start looking upwards for theCopyPreviousMarkRange
action. This is useful for multi-line prompts. - Adds new configuration option
platform_plugin
. - Adds new configuration option
renderer.backend
for explicitly setting renderer to one of:OpenGL
,software
,default
. - Adds new configuration option
renderer.tile_hashtable_slots
to configure texture atlas hashtable capacity. - Adds new configuration option
renderer.tile_cache_count
to configure texture atlas cache capacity. - Adds new configuration option
renderer.tile_direct_mapping
to enable/disalbe texture atlas direct mapping. - Adds new colorscheme setting
background_image.path
andbackground_image.opacity
to optionally render a terminal background image. - Adds stdout-fastpipe support on new shell file descriptor
3
and exposing availability via environment variableSTDOUT_FASTPIPE
(with value3
). When writing to this file descriptor rather than to stdout (file descriptor1
), the full performance of Contour can be explored. - Adds new configuration option
pty_buffer_size
for tweaking the new size in bytes for the PTY buffer objects. - Adds
mock
font locator (mostly interesting for advanced use for CI testing). - Adds VT sequence
SM ? 8452 h
/RM ? 8452 l
for enabling/disabling sixel cursor placement conformance (xterm extension). - Adds SGR-Pixels support, VT sequence
SM ? 1016 h
/RM ? 1016 l
(#574). - Adds VT sequence DECCARA, Change Attributes in Rectangular Area, with the extension that it applies to all SGR attributes. (#15).
0.2.3.183 (2022-01-09)
Important: It is recommended to also use the latest contour
termcap file if you are already using one
from a previous release.
- Fixes Sixel image rendering when scrolling is needed and ANSI cursor is not on left margin.
- Fixes Qt-related CLI options that that were largely ignored.
- Fixes crash caused by VT sequence PM and SOS (#513).
- Fixes parsing VT sequence RGB color parsing for cell decoratioins (e.g. underline).
- Fixes double-underline to not look like a very thick line on small font sizes.
- Applies antialiasing to curly underline.
- Changes
contour
exit code to reflect the shell's exit code of the last closed window. - Improves text cursor rendering and extends cursor configuration accordingly (#526).
- Improves visual appearance of dotted underline SGR.
- Adds CLI option
terminal early-exit-threshold SECS
(defaulting to 6) to only report and wait if the process did exit below this threshold seconds. - Adds CLI option
terminal dump-state-at-exit
to auto-dump internal state at exit. - Adds support for CoreText for matching font descriptions and font fallback (#479).
- Adds support for font feature settings. This is currently only implemented for
openshaper
, not yet fordwrite
(#520). - Adds pixel-perfect box-drawing for U+E0B4, U+E0B6, U+E0BC, U+E0BE (some Powerline extended codepoints).
0.2.2.175 (2021-11-19)
- Fixes input mapping containing
Control
modifier. - Fixes input mapping mode
Select
being ignored. - Fixes Modifier+Enter input mapping not being catched.
- Fixes slant detection for DirectWrite.
- Changes
DECCOLM
to only switch back to 80 when it was 132 before. - Adds new config option
spawn_new_process
to define new terminal window behavior. - Adds action
CancelSelection
to allow actively canceling selection via input mappings. - Adds key bindings to default configuration to allow simply pressing Ctrl+C/Ctrl+V (without Shift modifier) when an active selection is present.
- Adds process current working directory on macOS.
- Adds
contour license
CLI command to show project license but also an overview of all dependencies. - Adds a proper CLI to
bench-headless
. Building the headless benchmark tool is not shipped by default.
0.2.1.174 (2021-11-14)
- Reverts change from 0.2.0: "Changes behaviour when receiving
U+FE0E
(VS15) to not enforce the width of 1 but leave it as is (usually 2). This seems to match what the web browser is doing, too." - Adds support for loading terminal color schemes from an exernal file, such as
~/.config/contour/colorschemes/onedark.yml
for the schemeonedark
(file file format is simply a sub-tree of how colors can be specified inline). - Adds some more tmux-extension entries to the terminfo database that are supported by contour (
Ss
,Se
,Cs
,Smol
,Smulx
,Setulc
). - Adds
Sync
capability entry to terminfo file. - Adds many more pixel-perfect graphical characters:
23A1
..23A6
,2580
..2590
,2594
..259F
,1FB00
..1FB3B
,1FB3C
..1FBAF
,1FBF0
..1FBF9
. - Adds support for building with embedded FreeType and HarfBuzz (experimental, disabled by default).
- Adds a shell early-exit-guard to not instantly close the terminal window but print a message instead and wait for any key press in order to close.
- Adds missing config option
read_buffer_size
to defaultcontour.yml
. - Adds new config option
reflow_on_resize
to mandate whether or not text reflow is enabled on primary screen. If this option is false, it cannot be enabled programmatically either. - Adds new config option
on_mouse_select
to decide what action to pick when text has been selected (copy to clipboard or copy to selection-clipboard, or do nothing) - Unicode data updated to version 14.0 (release). See Announcing The Unicode® Standard, Version 14.0.
- Do not force OpenGL ES on Linux anymore.
- Changes default (Sixel) image size limits to the primary screen's pixel dimensions (#408).
- Changes font locator engine default on Windows to DirectWrite (#452).
- Changes tcap-query feature from experimental to always enabled (not configurable anymore).
- Automatically detect if
contour
orcontour-latest
terminfo entries are present use that as default. - Fixes VT sequences that cause a cursor restore to sometimes crash.
- Fixes terminfo installation path on macOS and tries to auto-set
TERMINFO_DIRS
to it on startup (#443). - Fixes terminfo entry
pairs
. - Fixes SGR 24 to remove any kind of underline (#451).
- Fixes font fallback for
open_shaper
where in rare cases the text was not rendered at all. - Fixes CPU load going up on mouse move inside terminal window (#407).
- Fixes terminfo entries accidentally double-escaping
\E
to\\E
(#399). - Fixes RGB color parsing via ':2::Pr:Pg:Pb' syntax and also adapt setrgbf & setrgbb accordingly.
- Fixes SEGV with overflowing (Sixel) images (#409).
- Fixes XTSMGRAPHICS for invalid SetValue actions and setting Sixel image size limits (#422).
- Fixes internal pixel width/height tracking in VT screen, which did affect sizes of rendered Sixel images (#408).
- Fixes configuring a custom shell on macOS (#425).
- Fixes off-by-one bug in builtin box drawing (#424).
- Fixes assertion in text renderer with regards to colored glyphs.
- Fixes Sixel background select to support transparency (#450).
- Fixes session resuming on KDE desktop envionment which is respawing all Contour instances upon re-login but failed due to invalid command line parameters (#461).
- Fixes Meta+Key keyboard inputs being ignored.
- Changes DECSDM such that it works like a real VT340; also xterm, as of version 369, changed that recently (#287).
- Adds context menu support for KDE.
0.2.0.173 (2021-08-17)
- Improved performance (optimized render loop, optimized grapheme cluster segmentation algorithm)
- Improves selection to better automatically deselect on selected area corruption.
- Fixes
ioctl(..., TIOCGWINSZ, ...)
pixel values that were only set during resize but not initially. - Fixes mouse in VIM+Vimspector to also change the document position when moving the mouse.
- Fixes SGR decorations to use designated underline thickness and underline position.
- Fixes font glyph render in some corner cases where the rendered glyph did result in rectangle garbage on the screen.
- Fixes copying the selection containing trailing whitespaces.
- Fixes hard-reset with regards to default tab width.
- Fixes VT sequence
DECRQPSR
forDECTABSR
. - Fixes keyboard keys for
F1
..F4
when pressed with and without modifiers. - Fixes OSC 8 hyperlink rendering when scrolled.
- Fixes SGR 1 (bold) wrongly applied on indexed background colors.
- Fixes text shaping sometimes showing missing glyphs instead of the actual glyphs (by changing the last-resort font fallback mechanism to chape each cluster individually with its own font fallback).
- Preserve active profile when reloading config, and forces redraw after config reload.
- Changes config entry
profile.*.font_size
toprofile.*.font.size
. - Changes config entries
scrollbar.*
toprofile.*.scrollbar.*
. - Changes behavior of live configuration reload, which is not default anymore and must be explicitly enabled via CLI parameter
--live-config
. - Changes behaviour when receiving
U+FE0E
(VS15) to not enforce the width of 1 but leave it as is (usually 2). This seems to match what the web browser is doing, too. - Changes the CLI command line interface syntax.
- Removes
tab_width
configuration. Tab width cannot be configured anymore but remaints by default at 8. - Adds basic automatically created archive for Arch Linux to the CI build artifacts page and release page.
- Adds support for bypassing the mouse protocol via Shift-click (configurable via
bypass_mouse_protocol_modifier
) - Adds improved debug logging. via CLI flag
-d
(--enable-debug
) to accept a comma seperated list of tags to enable logging for. Appending a*
at the end of a debug tag will enable all debug tags that match prefix its prefix. The list of available debuglog tags can be found via CLI flag-D
(--list-debug-tags
). - Adds support for different font render modes:
lcd
,light
,gray
,monochrome
inprofiles.NAME.font.render_mode
(default:lcd
). - Adds support for different text render engines:
OpenShaper
,DirectWrite
andCoreText
for upcoming native platform support on Windows (and later macOS). - Adds support for different font location engines:
fontconfig
(others will follow). - Adds experimental text reflow.
- Adds OpenFileManager action to configuration.
- Adds terminal identification environment variables
TERMINAL_NAME
,TERMINAL_VERSION_TRIPLE
andTERMINAL_VERSION_STRING
. - Adds config option
mode
to input modifiers for additionally filtering based on modes (alt screen, app cursor/keypad, text selection modes, ...). - Adds config option
profile.*.terminal_id: STR
to set the terminal identification to one of VT100, VT220, VT340, etc. - Adds config option
profile.*.maximized: BOOL
to indicate maximized state during profile activation. - Adds config option
profile.*.fullscreen: BOOL
to indicate fullscreen state during profile activation. - Adds config option
profile.*.font.strict_spacing: BOOL
to indicate that only monospace fonts may be used. - Adds config option
profile.*.font.TYPE.weight: WEIGHT
andprofile.*.fonts.TYPE.slant: SLANT
options (optional) along withprofile.*.fonts.TYPE.family: STRING
. - Adds config option
profile.*.font.TYPE.weight: WEIGHT
andprofile.*.fonts.TYPE.slant: SLANT
options (optional) along withprofile.*.fonts.TYPE.family: STRING
. - Adds config option
profile.*.font.dpi_scale: FLOAT
to apply some additional DPI scaling on fonts. - Adds config option
profile.*.font.builtin_box_drawing: BOOL
to use pixel-perfect builtin box drawing instead of font provided box drawing characters. - Adds config option
profile.*.refresh_rate: FLOAT
to configure how often the terminal screen will be rendered at most when currently under heavy screen changes. A value of"auto"
will use the currently connected monitor's refresh rate. - Adds configuration's action
ToggleAllKeyMaps
to enable/disable intercepting and interpreting keybinds. The one that did toggle it will not be disabled. - Adds configuration's action
ClearHistoryAndReset
to clear the history, and resetting the terminal. - Adds VT sequence for enabling/disabling debug logging.
CSI ? 46 h
andCSI ? 46 l
and CLI option-d
. - Adds VT sequence for querying/setting current font
OSC 50 ; ? ST
andOSC 50 ; Font ST
(andOSC 60 Ps Ps Ps Ps Ps ST
for a more fine grained font query/setting control). - Adds VT sequence
CSI 18 t
andCSI 19 t
for getting screen character size. Responds withCSI 8 ; $columns ; $rows t
andCSI 9 ; $columns ; $rows t
respectively. - Adds VT sequence to capture the current screen buffer
CSI > LineMode ; StartLine ; LineCount t
giving the respone back on stdin viaOSC 314 ; $screen_buffer ST
, and feature detection viaDA1
number314
. - Adds VT sequence
DECSNLS
for setting number of lines to display. - Adds VT sequence
CSI Ps b
(REP
) for repeating the last graphical characterPs
times. - Adds VT sequence
OSC 4 ; INDEX ; COLOR ST
for setting or querying color palette (if COLOR is?
instead of a color spec). - Adds VT sequence
OSC 104 ; INDEX ST
for resetting color palette entry or complete palette (if no (index is given). - Adds VT sequence
DECCRA
to copy a rectangular area. - Adds VT sequence
DECERA
to erase a rectangular area. - Adds VT sequence
DECFRA
to fill a rectangular area. - Adds VT sequence
CSI > q
(XTVERSION) to query terminal identification (name and version). Response comes asDCS >| Contour ContourVersion ST
. - Adds VT sequence
DECRQM
to request ANSI/DEC modes states (set / unset / not recognized). - Adds new CLI command:
contour capture ...
to capture the screen buffer. - Adds new CLI command:
contour set profile to NAME
to change the profile on the fly. - Adds new CLI command:
contour generate terminfo output OUTPUT_FILE
to create a Contour terminfo file. - Adds new CLI command:
contour generate config output OUTPUT_FILE
to create a new default config. - Adds new CLI command:
contour generate integration shell SHELL output OUTPUT_FILE
to create the shell integreation file for the given shell (only zsh supported for now). Also adds a pre-generated shell integration file for Linux (and macOS) to/usr/share/contour/shell-integration.zsh
. - Unicode data updated to version 14.0 beta.
- Adds support for building with Qt 6 (disabled by default).
- Adds support for building with mimalloc (experimental, disabled by default).
0.1.1 (2020-12-31)
- Fixes race condition when displaying image animations (e.g. gifs via sixel).
- Fixes
NewTerminal
action to also inherit the active configuration file. - Fixes restoring cursor position in
RM ?1049
. - Fixes
DECSTR
resetting saved-cursor state and active cursor-position. - Fixes selecting text not being pushed into the selection-clipboard.
- Adds VT sequence
OSC 7
(set current working directory). - Adds VT sequence
DCS $ p $Name ST
to change config profile name to$Name
.
0.1.0 (2020-12-24)
- Available on all 3 major platforms, Linux, macOS, Windows.
- Emoji support (-: 🌈 💝 😛 👪 :-)
- Font ligatures support (such as in Fira Code).
- Bold and italic fonts
- GPU-accelerated rendering.
- Vertical Line Markers (quickly jump to markers in your history!)
- Blurred behind transparent background when using Windows 10 or KDE window manager on Linux.
- Runtime configuration reload
- 256-color and Truecolor support
- Key binding customization
- Color Schemes
- Profiles (grouped customization of: color scheme, login shell, and related behaviours)
- Clickable hyperlinks via OSC 8
- Sixel inline images