Appearance (code font)

DevCentr uses a dedicated monospace face for the integrated terminal and other code panels. UI chrome stays on the normal UI font.

Choices

Face Role

Cascadia Mono

Default. No ligatures — better for tables, grids, and judging column alignment (Nu table output, logs, diffs).

JetBrains Mono

Supported alternate. Good coding face; ligatures optional at the OS/editor level, but DevCentr asks for the Mono family name as installed.

Fira Code

Ligature-first coding mono. Not the terminal default; available when you want ligatures in editor workflows outside table-heavy panels.

Iosevka

Parametric high-density mono. Supported alternate for users who prefer Iosevka’s width/spacing model.

GitHub Monaspace (Neon)

GitHub Next superfamily; Appearance stores Monaspace Neon as the primary cut. Install may register Argon, Radon, Krypton, or Xenon — any Monaspace variant counts as installed.

Do not default to Cascadia Code (ligatures) for DevCentr terminals. Mono is the recommendation.

In the app

  1. Open Appearance in the top bar.

  2. Pick one of the five monospace faces above.

  3. Preview the face in the editable sample below the radios; type to judge legibility (0O, 1lI, short D snippet).

  4. Toggle Show ligature demo line to show or hide != === → |> under the main preview. dlangui does not enable OpenType ligatures — the toggle is preview-only; terminal and editor ligatures follow OS/editor settings. Persisted as codeFontLigatures in ui-settings.json.

  5. If the face is missing, Appearance warns you and offers Install selected font when scriptbook is on PATH (runs the matching examples/fonts/install-*.cmk playbook against equivalence-rules-cli). Preview and install status refresh when the Scriptbook process finishes — no need to close the dialog.

  6. Optionally set repository terminal shell preference (auto prefers Nushell when nu is on PATH) and Env refresh: inject and run.

  7. Save. Stored in ~/.dev-center/ui-settings.json as codeFontFace, codeFontLigatures, terminalShell, and envRefreshAutoRun.

New terminal command blocks pick up the face immediately. Reopen panels that were already open if they still show the old face. The Auto-run checkbox on the terminal env chrome also persists envRefreshAutoRun.

Fallbacks if the chosen face is missing: the other recommended monos, then Consolas, then Courier New.

Install (Scriptbook)

Do not paste a host-specific winget line into this spec. PlayTime binds cli.install from equivalence-rules-cli.

Face Playbook in dev-centr/scriptbook

Cascadia Mono

examples/fonts/install-cascadia-mono.cmk (tool id cascadia-mono)

JetBrains Mono

examples/fonts/install-jetbrains-mono.cmk (tool id jetbrains-mono)

Fira Code

examples/fonts/install-fira-code.cmk (tool id fira-code)

Iosevka

examples/fonts/install-iosevka.cmk (tool id iosevka)

GitHub Monaspace

examples/fonts/install-monaspace.cmk (tool id monaspace)

JetBrains Mono Nerd Font (glyph layer) has a playbook in the same folder but is not an Appearance radio — Nerd Fonts patches are a separate layer.

Today: Appearance Install selected font when scriptbook is on PATH — spawns scriptbook run … --catalog …/equivalence-rules-cli/catalog/tools.sdl with a platform --format (choco on Windows, brew on macOS, nix when available). Playbook and catalog resolve from the code hive or cached equivalence-rules-cli under ~/.dev-center. Button disabled with tooltip when scriptbook or paths are missing. After install completes, Appearance re-enumerates OS fonts and refreshes preview/status in place.

Preview

The Appearance dialog includes an editable monospace preview wearing the selected face:

  • Pangram line plus a short D sample (from team-docs font-lock). Typing updates immediately; radio changes re-apply the face.

  • Optional ligature demo line (!= === → |>) controlled by Show ligature demo line. Cascadia Mono stays ligature-off by family choice; Fira Code and Monaspace are ligature-capable cuts but the preview still renders separate glyphs unless the host stack enables features elsewhere.

  • If the face is not installed, a warning appears. Do not treat Consolas fallback as a preview of JetBrains Mono.

What this dialog is not

Appearance picks fonts for this app’s terminal and code panels. That is a settings dialog, not a font manager for the operating system or for web projects.

Thing Status Why not in Appearance

Full font manager app (Suitcase-style)

Later, separate

A manager for thousands of faces on the OS is a different product. We will extract a lockfile/library when we need project-wide font pins.

Fontsource npm UI

Later, different screen

Fontsource is for web projects (self-host woff2 in the repo). Appearance installs OS fonts for DevCentr.

Nerd Font as a radio next to JetBrains Mono

Later, separate toggle

Nerd Fonts patches an existing mono and adds icons; it is not a new typeface.

Proprietary / Google Sans / Netflix Sans picker

Never in DevCentr chrome

Licensed commercial faces. Documented as examples. We do not ship or scrape the files.

Real ligatures in the preview widget

Blocked on toolkit

dlangui EditBox does not apply OpenType ligatures. The checkbox only shows or hides a demo line.

Roadmap (resume order): optional Nerd Font toggle; project Fontsource lock as its own library (DevCentr first client); clearer Install UX when Scriptbook is missing; more Windows winget catalog methods. Never: scraper hubs, vendoring commissioned fonts, a Suitcase clone branded as DevCentr.

Outside DevCentr

Strong recommendation for editors and terminal hosts used with Dev-Centr workflows:

  • Prefer Cascadia Mono (or JetBrains Mono) in Windows Terminal / Cursor / VS Code for terminal and editor monospace.

  • See Recommended Tools.