README

NAME

Terminal::Tests - Terminal emulator, multiplexer, and font quality tests

SYNOPSIS

$ terminal-quick-test [--ruler]
# ... single-page test output ...

$ terminal-test
# ... multi-page survey-style test ...

DESCRIPTION

Terminal::Tests is a collection of quality and correctness tests for terminal emulators, terminal multiplexers, Unicode configurations, and monospace fonts.

The simple terminal-quick-test program displays a simple test pattern that should fit in a default 80x24 terminal window, and will catch some of the most common terminal configuration problems. For a more nuanced test, try the full terminal-test program, which shows numerous test patterns and describes what you should expect to see in each.

Quick Test Pattern

To display the quick test program, simply run terminal-quick-test; you can add the --ruler option if you'd like to also display a screen width ruler to help detect misalignment. Correct output should be no more than 79 columns on any line, so you've likely run into a terminal bug if the displayed test pattern is wider than that.

At the time of writing, I've not yet seen any terminals show a perfect test pattern; the best results so far get everything except the emoji row correct. For reference, here's what the pattern looks like on a default gnome-terminal in Ubuntu 22.04 LTS or Linux Mint 21.x (based on that same Ubuntu LTS release):

image izef_terminal_tests_dist_docs_images_quick_test_gnome_terminal_png not found

The rightmost block of emoji should have skin tones applied, rather than shown in fallback mode as a tone swatch next to a yellow emoji, causing the line to overflow. Windows Terminal in Windows 10 similarly gets most of the pattern correct, but again fails on the emoji row:

image izef_terminal_tests_dist_docs_images_quick_test_windows_terminal_utf8_png not found

Here it applies skin tones to the rightmost set, but still leaves extra room where the tone swatch would be, thus once again causing the line to be too long -- and this time also failing on the leftmost set of emoji faces, which should display in text outline mode as seen in the screenshot for gnome-terminal.

However, Windows Terminal will only do that well under Windows 10 if "beta" UTF-8 support is turned on (see separate [Windows 10](#Windows 10) section below). Without that, the test pattern will fall apart:

image izef_terminal_tests_dist_docs_images_quick_test_windows_terminal_default_png not found

Some failures are more subtle, affecting only one feature. Here's an example of the pattern as seen inside of GNU Screen in a gnome-terminal:

image izef_terminal_tests_dist_docs_images_quick_test_gnome_terminal_gnu_screen_png not found

The degradation here is that Gnu Screen supports 4-bit and 8-bit ANSI color, but not 24-bit ANSI color, so the red/green/blue bars are missing.

Finally, some problems are merely configuration or option issues. Here's xterm in its default configuration on my system, using the low-res (but at least Unicode-capable) bitmap "fixed" font, launched with just xterm:

image izef_terminal_tests_dist_docs_images_quick_test_xterm_fixed_unicode_png not found

Many of the symbols are nearly unreadable, and emoji aren't supported at all. Even worse, specifying a larger bitmap font size defaults to using the non-Unicode version of the font, here launched with xterm -fn 10x20:

image izef_terminal_tests_dist_docs_images_quick_test_xterm_fixed_latin1_png not found

Using a scalable font will work better, even at the default small size, but color emoji are still unsupported (only text outlines are shown). Here I've just told xterm to use the default system monospace scalable font using xterm -fa mono:

image izef_terminal_tests_dist_docs_images_quick_test_xterm_mono_png not found

Unsurprisingly the scalable font scales up better too (using xterm -fa mono -fs 12):

image izef_terminal_tests_dist_docs_images_quick_test_xterm_mono_12_png not found

Full Terminal Test

The terminal-test program includes a far more complete set of test patterns across a range of categories, including descriptions of what you should expect to see in each pattern, as well as common artifacts that you should ideally not see. You can rate the display of each pattern on a simple scale, and the program will summarize the results in text or JSON (with the --json option) after you have rated the last test pattern.

Terminal-Specific Tweaks

Windows 10

By default Windows Terminal under Windows 10 supports only UTF-16, an old Unicode encoding that has otherwise been replaced by the UTF-8 encoding. To fix this, you'll need to follow the instructions in the Enable UTF-8 in Windows Terminal gist, kindly provided by sapeurfaire.

AUTHOR

Geoffrey Broadwell [email protected]

COPYRIGHT AND LICENSE

Copyright Ā© 2022-2023 Geoffrey Broadwell

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.

Terminal::Tests v0.0.1

Terminal emulator, multiplexer, and font quality tests

Authors

  • Geoffrey Broadwell

License

Artistic-2.0

Dependencies

Hash::OrderedJSON::FastTerminal::ANSIColorText::MiscUtils::Layout

Test Dependencies

Provides

  • Terminal::Tests
  • Terminal::Tests::App::FullTest
  • Terminal::Tests::App::QuickTest

Documentation

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.