A colour scheme is what every terminal already stores: sixteen ANSI colours, a foreground and a background. ConsoleMonster derives a whole theme from one, so widgets look like the terminal they run in, and keep looking like it in exports and recordings.
Each scheme comes in two forms:
- Faithful uses the published colours unchanged. It looks exactly like the scheme, and the checker says honestly where it falls short: statuses that look alike with colour blindness, or text below 4.5:1 contrast.
- Accessible is built from the same colours. It first picks the pass, warning and fail colours from the scheme's own sixteen that stay furthest apart, then adjusts lightness (never hue) where that is not enough. Every accessible variant below passes every check.
Choose one for every session:
Set-ConsoleTheme Dracula -Save # faithful
Set-ConsoleTheme Dracula -Accessible -Save # saved as 'Dracula · accessible'
Set-ConsoleTheme Solarized -Save # Solarized Dark or Light, whichever suits the terminal
Set-ConsoleTheme 'Catppuccin Latte' -Save # one variant, whatever the background
Test-ConsoleTheme -Detailed # every measurement of the active theme
Show-ConsoleSetting lists the schemes in their own group, each family with its variants and an accessible entry beside each, and redraws the preview on that scheme's background as you move through them. A family name (Solarized, Gruvbox, Catppuccin, Tokyo Night) picks the variant for your terminal's background (dark when it cannot tell); a variant name such as Gruvbox Light or Tokyo Night Dark always chooses that one. Dracula and Nord are dark only. Status words (Set-ConsoleSetting StatusMarkers Words -Save) work with any scheme.
Every figure below is the same program, the settings picker's preview, drawn on the scheme's own background. Under each window is the checker's verdict; open it for the full report.
Dracula
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Dracula: 7 problems
- Muted text is too faint: 3.0:1, needs 4.5:1
- Skip text is too faint: 3.0:1, needs 4.5:1
- Pending text is too faint: 3.0:1, needs 4.5:1
- Low text is too faint: 3.0:1, needs 4.5:1
- Gap text is too faint: 3.0:1, needs 4.5:1
- Pass and warning look alike with protanopia and deuteranopia (6.7, needs 25)
- Pass and fail look alike with deuteranopia (20.3, needs 25)
- 20 other checks pass
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Dracula · accessible: passes every check
- adjusted for contrast: Muted, Skip, Pending, Border, Low, Gap
Dracula's light counterpart is part of Dracula Pro, not the free scheme, so it has no light variant here.
Nord
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Nord: 4 problems
- Fail text is too faint: 3.1:1, needs 4.5:1
- Critical text is too faint: 3.1:1, needs 4.5:1
- Pass and warning look alike with protanopia and deuteranopia (12.9, needs 25)
- Pass and fail look alike with deuteranopia (18.8, needs 25)
- 23 other checks pass
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Nord · accessible: passes every check
- adjusted for contrast: Accent2, Pass, Fail, SurfaceAccent, Series3, Series6, Critical
Solarized
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Solarized Dark: 5 problems
- Fail text is too faint: 3.2:1, needs 4.5:1
- Critical text is too faint: 3.2:1, needs 4.5:1
- Pass and warning look alike with protanopia and deuteranopia (3.4, needs 25)
- Pass and fail look alike with deuteranopia (11.3, needs 25)
- Warning and fail look alike with deuteranopia (15.6, needs 25)
- 22 other checks pass
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Solarized Dark · accessible: passes every check
- adjusted for contrast: Accent, Accent2, Pass, Fail, Highlight, Surface, SurfaceAccent, Series1, Series3, Series6, Focus, Critical
In Solarized Dark, bright black is the background colour itself, so muted text uses the scheme's white instead of drawing invisibly.
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Solarized Light: 10 problems
- Text text is too faint: 4.1:1, needs 4.5:1
- Pass text is too faint: 3.0:1, needs 4.5:1
- Warn text is too faint: 3.0:1, needs 4.5:1
- Fail text is too faint: 4.3:1, needs 4.5:1
- Info text is too faint: 2.9:1, needs 4.5:1
- Running text is too faint: 2.9:1, needs 4.5:1
- Critical text is too faint: 4.3:1, needs 4.5:1
- Pass and warning look alike with protanopia and deuteranopia (3.4, needs 25)
- Pass and fail look alike with deuteranopia and protanopia (6.8, needs 25)
- Warning and fail look alike with deuteranopia and protanopia (10.2, needs 25)
- 15 other checks pass
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Solarized Light · accessible: passes every check
- adjusted for contrast: Text, Accent, Accent2, Pass, Fail, Warn, Info, Running, Title, Header, Highlight, Surface, SurfaceAccent, Series1, Series2, Series3, Series4, Series5, Series6, Focus, Strong, Critical
Gruvbox
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Gruvbox Dark: 10 problems
- Muted text is too faint: 4.0:1, needs 4.5:1
- Fail text is too faint: 4.3:1, needs 4.5:1
- Skip text is too faint: 4.0:1, needs 4.5:1
- Pending text is too faint: 4.0:1, needs 4.5:1
- Low text is too faint: 4.0:1, needs 4.5:1
- Critical text is too faint: 4.3:1, needs 4.5:1
- Gap text is too faint: 4.0:1, needs 4.5:1
- Pass and warning look alike with protanopia and deuteranopia (5.5, needs 25)
- Pass and fail look alike with deuteranopia (1.7, needs 25)
- Warning and fail look alike with deuteranopia (10.8, needs 25)
- 17 other checks pass
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Gruvbox Dark · accessible: passes every check
- adjusted for contrast: Muted, Accent, Accent2, Fail, Warn, Skip, Pending, Border, SurfaceAccent, Series1, Series3, Series6, Low, Critical, Gap
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Gruvbox Light: 12 problems
- Muted text is too faint: 3.2:1, needs 4.5:1
- Pass text is too faint: 4.3:1, needs 4.5:1
- Warn text is too faint: 3.3:1, needs 4.5:1
- Info text is too faint: 4.4:1, needs 4.5:1
- Skip text is too faint: 3.2:1, needs 4.5:1
- Running text is too faint: 4.4:1, needs 4.5:1
- Pending text is too faint: 3.2:1, needs 4.5:1
- Low text is too faint: 3.2:1, needs 4.5:1
- Gap text is too faint: 3.2:1, needs 4.5:1
- Pass and warning look alike with protanopia and deuteranopia (5.8, needs 25)
- Pass and fail look alike with deuteranopia (12.1, needs 25)
- Warning and fail look alike with deuteranopia (23.8, needs 25)
- 15 other checks pass
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Gruvbox Light · accessible: passes every check
- adjusted for contrast: Muted, Pass, Fail, Warn, Info, Skip, Running, Pending, Border, Series2, Series4, Series5, Low, Gap
Catppuccin
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Catppuccin Mocha: 2 problems
- Pass and warning look alike with protanopia and deuteranopia (4.5, needs 25)
- Pass and fail look alike with deuteranopia (20.8, needs 25)
- 25 other checks pass
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Catppuccin Mocha · accessible: passes every check
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Catppuccin Latte: 6 problems
- Pass text is too faint: 3.0:1, needs 4.5:1
- Warn text is too faint: 2.3:1, needs 4.5:1
- Info text is too faint: 3.3:1, needs 4.5:1
- Running text is too faint: 3.3:1, needs 4.5:1
- Pass and warning look alike with protanopia and deuteranopia (5.2, needs 25)
- Pass and fail look alike with deuteranopia (9.4, needs 25)
- 21 other checks pass
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Catppuccin Latte · accessible: passes every check
- adjusted for contrast: Accent, Accent2, Pass, Fail, Warn, Info, Running, Highlight, SurfaceAccent, Series1, Series2, Series3, Series4, Series5, Focus
Tokyo Night
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Tokyo Night Dark: 1 problem
- Pass and warning look alike with deuteranopia and protanopia (2.2, needs 25)
- 26 other checks pass
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Tokyo Night Dark · accessible: passes every check
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Tokyo Night Day: 14 problems
- Muted text is too faint: 3.6:1, needs 4.5:1
- Pass text is too faint: 4.0:1, needs 4.5:1
- Warn text is too faint: 3.7:1, needs 4.5:1
- Fail text is too faint: 3.0:1, needs 4.5:1
- Info text is too faint: 4.3:1, needs 4.5:1
- Skip text is too faint: 3.6:1, needs 4.5:1
- Running text is too faint: 4.3:1, needs 4.5:1
- Pending text is too faint: 3.6:1, needs 4.5:1
- Low text is too faint: 3.6:1, needs 4.5:1
- Critical text is too faint: 3.0:1, needs 4.5:1
- Gap text is too faint: 3.6:1, needs 4.5:1
- Pass and warning look alike with protanopia and deuteranopia (3.8, needs 25)
- Pass and fail look alike with deuteranopia (14.2, needs 25)
- Warning and fail look alike with deuteranopia (11.3, needs 25)
- 13 other checks pass
╭──────────────┬────────────┬────────┬──────────────────╮ │ Check │ State │ Size │ Changed │ ├──────────────┼────────────┼────────┼──────────────────┤ │ Backups │ ✓ passed │ 50 MB │ 2026-11-09 14:30 │ │ Certificates │ ▲ expiring │ 4 KB │ 2026-11-06 14:30 │ │ Replication │ ✗ failed │ 1.2 GB │ 2026-11-09 09:30 │ ╰──────────────┴────────────┴────────┴──────────────────╯ ✓ Build 1 m 12 s Copying ━━━━━━━━━╸───── 64% ▲ Tests 2 skipped web ▆▆▆▆▆▆▆▆▆▆ 42 ✗ Deploy timed out sql ▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆▆ 87 ⠋ Notify files ▆▆▆▆▆▆ 23 Error: Cannot reach sql01.contoso.test (port 1433)
Tokyo Night Day · accessible: passes every check
- adjusted for contrast: Muted, Accent, Pass, Fail, Warn, Info, Skip, Running, Pending, Border, Highlight, Surface, SurfaceAccent, Series1, Series2, Series4, Series5, Series6, Focus, Low, Critical, Gap
The program behind the figures
Each window runs this program with the scheme's theme. In C#, choose one by name, Terminal.Theme = Theme.FromName("Dracula · accessible");, or walk Theme.Schemes and derive either form with Theme.FromScheme(entry.Scheme, accessible).
// The settings picker's preview: every status, a table, a progress bar, a chart and an error line.
DateTime when = new DateTime(2026, 11, 9, 14, 30, 0);
Table table = new Table { CardsBelow = 0 }
.AddColumn("Check")
.AddColumn("State")
.AddColumn("Size", c =>
{
c.Presenter = CellPresenters.Bytes;
c.Alignment = HorizontalAlignment.Right;
})
.AddColumn("Changed", c =>
{
c.Presenter = CellPresenters.Date;
c.Priority = -1;
});
table.AddRow("Backups", TableCell.ForStatus(StatusKind.Pass, "passed"),
TableCell.FromValue(52_428_800L), TableCell.FromValue(when));
table.AddRow("Certificates", TableCell.ForStatus(StatusKind.Warn, "expiring"),
TableCell.FromValue(4_096L), TableCell.FromValue(when.AddDays(-3)));
table.AddRow("Replication", TableCell.ForStatus(StatusKind.Fail, "failed"),
TableCell.FromValue(1_288_490_189L), TableCell.FromValue(when.AddHours(-5)));
StatusList status = new StatusList()
.Add("Build", StatusKind.Pass, "1 m 12 s")
.Add("Tests", StatusKind.Warn, "2 skipped")
.Add("Deploy", StatusKind.Fail, "timed out")
.Add("Notify", StatusKind.Running);
BarChart chart = new BarChart().Add("web", 42).Add("sql", 87).Add("files", 23);
ProgressBar progress = new ProgressBar("Copying") { Value = 64, Total = 100 };
TextBlock error = TextBlock.FromMarkup(
"[fail]Error:[/] [muted]Cannot reach[/] [accent]sql01.contoso.test[/]"
+ " [muted](port 1433)[/]");
Terminal.Write(new Rows(table, new Columns(status, new Rows(progress, chart)), error) { Gap = 1 });Full program
using ConsoleMonster;
using ConsoleMonster.Layout;
using ConsoleMonster.Presenters;
using ConsoleMonster.Styling;
using ConsoleMonster.Widgets;
// The settings picker's preview: every status, a table, a progress bar, a chart and an error line.
DateTime when = new DateTime(2026, 11, 9, 14, 30, 0);
Table table = new Table { CardsBelow = 0 }
.AddColumn("Check")
.AddColumn("State")
.AddColumn("Size", c =>
{
c.Presenter = CellPresenters.Bytes;
c.Alignment = HorizontalAlignment.Right;
})
.AddColumn("Changed", c =>
{
c.Presenter = CellPresenters.Date;
c.Priority = -1;
});
table.AddRow("Backups", TableCell.ForStatus(StatusKind.Pass, "passed"),
TableCell.FromValue(52_428_800L), TableCell.FromValue(when));
table.AddRow("Certificates", TableCell.ForStatus(StatusKind.Warn, "expiring"),
TableCell.FromValue(4_096L), TableCell.FromValue(when.AddDays(-3)));
table.AddRow("Replication", TableCell.ForStatus(StatusKind.Fail, "failed"),
TableCell.FromValue(1_288_490_189L), TableCell.FromValue(when.AddHours(-5)));
StatusList status = new StatusList()
.Add("Build", StatusKind.Pass, "1 m 12 s")
.Add("Tests", StatusKind.Warn, "2 skipped")
.Add("Deploy", StatusKind.Fail, "timed out")
.Add("Notify", StatusKind.Running);
BarChart chart = new BarChart().Add("web", 42).Add("sql", 87).Add("files", 23);
ProgressBar progress = new ProgressBar("Copying") { Value = 64, Total = 100 };
TextBlock error = TextBlock.FromMarkup(
"[fail]Error:[/] [muted]Cannot reach[/] [accent]sql01.contoso.test[/]"
+ " [muted](port 1433)[/]");
Terminal.Write(new Rows(table, new Columns(status, new Rows(progress, chart)), error) { Gap = 1 });// The settings picker's preview: every status, a table, a progress bar, a chart and an error line.
DateTime when = new DateTime(2026, 11, 9, 14, 30, 0);
Table table = Ui.Table()
.CardsBelow(0)
.AddColumn("Check")
.AddColumn("State")
.AddColumn("Size", c =>
{
c.Presenter(CellPresenters.Bytes).Alignment(HorizontalAlignment.Right);
})
.AddColumn("Changed", c =>
{
c.Presenter(CellPresenters.Date).Priority(-1);
})
.AddRow("Backups", TableCell.ForStatus(StatusKind.Pass, "passed"),
TableCell.FromValue(52_428_800L), TableCell.FromValue(when))
.AddRow("Certificates", TableCell.ForStatus(StatusKind.Warn, "expiring"),
TableCell.FromValue(4_096L), TableCell.FromValue(when.AddDays(-3)))
.AddRow("Replication", TableCell.ForStatus(StatusKind.Fail, "failed"),
TableCell.FromValue(1_288_490_189L), TableCell.FromValue(when.AddHours(-5)));
StatusList status = Ui.StatusList()
.Add("Build", StatusKind.Pass, "1 m 12 s")
.Add("Tests", StatusKind.Warn, "2 skipped")
.Add("Deploy", StatusKind.Fail, "timed out")
.Add("Notify", StatusKind.Running);
BarChart chart = Ui.BarChart().Add("web", 42).Add("sql", 87).Add("files", 23);
ProgressBar progress = Ui.ProgressBar().Label("Copying").Value(64).Total(100);
TextBlock error = Ui.Markup("[fail]Error:[/] [muted]Cannot reach[/] [accent]sql01.contoso.test[/]"
+ " [muted](port 1433)[/]");
Ui.Rows().Gap(1).Content(rowsContent2 =>
{
rowsContent2.Add(table);
rowsContent2.Columns(columns => columns.Content(columnsContent =>
{
columnsContent.Add(status);
columnsContent.Rows(r => r.Content(rowsContent =>
{
rowsContent.Add(progress);
rowsContent.Add(chart);
}));
}));
rowsContent2.Add(error);
}).Show();
Full program
using ConsoleMonster;
using ConsoleMonster.Layout;
using ConsoleMonster.Presenters;
using ConsoleMonster.Styling;
using ConsoleMonster.Widgets;
// The settings picker's preview: every status, a table, a progress bar, a chart and an error line.
DateTime when = new DateTime(2026, 11, 9, 14, 30, 0);
Table table = Ui.Table()
.CardsBelow(0)
.AddColumn("Check")
.AddColumn("State")
.AddColumn("Size", c =>
{
c.Presenter(CellPresenters.Bytes).Alignment(HorizontalAlignment.Right);
})
.AddColumn("Changed", c =>
{
c.Presenter(CellPresenters.Date).Priority(-1);
})
.AddRow("Backups", TableCell.ForStatus(StatusKind.Pass, "passed"),
TableCell.FromValue(52_428_800L), TableCell.FromValue(when))
.AddRow("Certificates", TableCell.ForStatus(StatusKind.Warn, "expiring"),
TableCell.FromValue(4_096L), TableCell.FromValue(when.AddDays(-3)))
.AddRow("Replication", TableCell.ForStatus(StatusKind.Fail, "failed"),
TableCell.FromValue(1_288_490_189L), TableCell.FromValue(when.AddHours(-5)));
StatusList status = Ui.StatusList()
.Add("Build", StatusKind.Pass, "1 m 12 s")
.Add("Tests", StatusKind.Warn, "2 skipped")
.Add("Deploy", StatusKind.Fail, "timed out")
.Add("Notify", StatusKind.Running);
BarChart chart = Ui.BarChart().Add("web", 42).Add("sql", 87).Add("files", 23);
ProgressBar progress = Ui.ProgressBar().Label("Copying").Value(64).Total(100);
TextBlock error = Ui.Markup("[fail]Error:[/] [muted]Cannot reach[/] [accent]sql01.contoso.test[/]"
+ " [muted](port 1433)[/]");
Ui.Rows().Gap(1).Content(rowsContent2 =>
{
rowsContent2.Add(table);
rowsContent2.Columns(columns => columns.Content(columnsContent =>
{
columnsContent.Add(status);
columnsContent.Rows(r => r.Content(rowsContent =>
{
rowsContent.Add(progress);
rowsContent.Add(chart);
}));
}));
rowsContent2.Add(error);
}).Show();
Sources and licences
Every palette is read from the scheme's own repository, never from an aggregate collection, and is used unchanged in the faithful form.
| Scheme | Source | Licence |
|---|---|---|
| Dracula | dracula/windows-terminal | MIT |
| Nord | nordtheme/nord | MIT |
| Solarized Dark, Solarized Light | altercation/solarized | MIT |
| Gruvbox Dark, Gruvbox Light | morhetz/gruvbox | MIT |
| Catppuccin Mocha, Catppuccin Latte | catppuccin/windows-terminal | MIT |
| Tokyo Night Dark, Tokyo Night Day | folke/tokyonight.nvim | Apache-2.0 |
Next
- Themes: built-in themes, following your terminal and importing any other scheme with
Import-ConsoleTheme. - Check a theme: what
Test-ConsoleThememeasures and how to read its report. - Accessibility: status words, high contrast and the colour-blind safe themes.