Boxes or question marks in the waveforms

A bus's outline uses six characters from Unicode 13's "legacy computing" block, so its segments close in a point. Few fonts have them; Iosevka does, and some terminals draw them themselves. If yours shows boxes, use the box glyph set, which draws the same thing with box drawing only:

unicode   โ”€๐Ÿฎฆโ”€โ”€โ”€โ”€๐Ÿฎฆโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€๐Ÿฎฆโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€     box   โ”€โ”ฌโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
          โ”€๐Ÿฎงโ”€โ”€โ”€โ”€๐Ÿฎงโ”€โ”€ 0x2 โ”€โ”€๐Ÿฎงโ”€โ”€ 0x3 โ”€           โ”€โ”ดโ”€โ”€โ”€โ”€โ”ดโ”€โ”€ 0x2 โ”€โ”€โ”ดโ”€โ”€ 0x3 โ”€
           ๐Ÿฎฃโ”€โ”€โ”€โ”€๐Ÿฎฆโ”€โ”€โ”€โ”€๐Ÿฎข    ๐Ÿฎฃโ”€โ”€โ”€โ”€๐Ÿฎข               โ”Œโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”
           ๐Ÿฎก #0 ๐Ÿฎง #1 ๐Ÿฎ     ๐Ÿฎก #2 ๐Ÿฎ                โ”” #0 โ”ด #1 โ”˜    โ”” #2 โ”˜
# ~/.config/wtf/config.toml
glyphs = "box"

The first time wtf starts without a config file, it shows a sample in each set and asks which one your terminal draws cleanly, so you rarely need to set this by hand. --glyphs box tries a set for one run.

If even the box lines don't join up, the font lacks box drawing too: use ascii, which also suits logs, and pasting a snapshot into an issue.

Icons show as boxes

The nerd set puts an icon before names and in menus, from a Nerd Font 3.4 or newer. Set the terminal's font to one, or pick unicode, which draws everything but the icons. A Nerd Font older than 3.4 lacks a few of them.

The colours look wrong

Washed out, or the wrong shades

wtf draws in 24-bit colour when the terminal says it can (COLORTERM=truecolor, or a terminal it knows by TERM: kitty, WezTerm, Alacritty, foot, Ghostty), and in the nearest of 256 colours otherwise. Over ssh COLORTERM is often lost: set it again on the remote side.

Dark on dark, or light on light

Pick the other theme: theme = "light" or "dark". dark keeps your terminal's background and text; light paints its own.

One colour bothers you

Change it alone under [colors], as cursor = "#e5c07b" or a 256-colour index (panel = 235). A wrong key is said on the status line, with the keys allowed.

No colour at all

NO_COLOR is set. wtf then marks the cursor and the selected row by reversing them, and draws marks with a glyph.

Clicks with Shift or Cmd do nothing

The terminal decides which clicks reach wtf. Most keep Shift + click for selecting text, and macOS terminals send no Cmd: use Ctrl + click instead, or V to select rows from the keyboard. kitty (terminal_select_modifiers) and WezTerm (bypass_mouse_reporting_modifiers) can pass Shift on.

A big trace is slow to open

Prefer FST

A VCD has no index, so wtf reads it whole when it opens it, and its memory grows with the file: about 13.5 GB for a 10 GB VCD. An FST opens by its hierarchy alone and reads a signal's values when you add it. Most simulators write FST directly (Verilator --trace-fst, Icarus -fst), and GTKWave's vcd2fst converts.

Add what you look at

Memory grows with the signals shown, not the hierarchy: start from a few, or from a decode, which reads only its interface's signals.

Dump less

A window of simulated time around the failure keeps every file small.

How fast wtf is on 10 GB traces, and what is still being made faster, is measured in bench/RESULTS.md.

Still stuck

Open an issue with what you ran and what you saw. wtf <trace> --snapshot 120x30 --glyphs ascii prints the screen as text, ready to paste.