ThemeTUI@piex-dev/theme-dark-terminal

theme-dark-terminal — Paint Pi Like a Real Terminal

TL;DR

Want Pi to look like a serious hacker terminal instead of a generic gray-blue panel: install Dark Terminal, toggle /settings, zero behavior change.

Overview

The default theme aims for "generic readable", but doesn't fit everyone: diffs in low light need higher contrast, some prefer the classic terminal (black bg, neon green, pure-red warnings). @piex-dev/theme-dark-terminal does no TypeScript logic — it only provides a JSON under Pi's official theme schema, mapping the whole UI token set to a high-contrast "dark terminal" palette. Sourced from opencode-themes/dark-terminal color roles.

How it works

Pi themes are data, not plugin code: a theme package mounts "pi": { "themes": ["./theme.json"] }; Pi scans themes/*.json on startup, validating name + colors. Zero runtime, zero hooks: switching a theme never changes agent behavior. Tokens layer vars (palette atoms) → colors (semantic tokens pointing to vars) — change one green and accent/success/diff-added all shift together.

RoleColorUsed for
Accent#00ff00 greenaccent, success, diff added
Structure#00aaff blueborder, links, keyword
Error#ff0000 rederror, string, high thinking
Warning#ffff00 yellowwarning, function
Background#050505page & panel

No gradients, no muted tones: CRT-style readable impact.

Usage

Install

bash
pi install npm:@piex-dev/theme-dark-terminal
# then /settings → theme: dark-terminal

Source: themes/dark-terminal

Configuration

Use an absolute path for global install, otherwise /reload resolves the relative path against the settings file location and the theme may "disappear". Project-level pi install -l ./themes/dark-terminal is safer. npm install goes through the package path, easier than hand-writing relative paths.

Switch

/settings → theme pick dark-terminal, /reload to apply.

Implementation

Pure JSON: package.json + theme.json. Fills all required Pi theme schema color tokens (dozens): general (accent/border/success/error/warning/muted/text), messages, tools (pending/success/error/diff add-remove), Markdown (headings/lists/links/quote), Syntax (keyword/string/function/type), Thinking gradient (off→max, top tier neon pink #ff0088, a Pi-side addition). The theme package deliberately does not: register tools/commands, read files or touch the network, depend on Node APIs — smallest risk surface, also an example of "extension distribution mechanism".

Design notes

ProjectMechanismpiex choice
opencode-themes dark-terminal51-token high-contrast dark terminal palette; bg:#050505, green/blue/red accentAdopted: color roles & semantic mapping. Adapted to Pi's extra tokens (thinking gradient #ff0088 Pi-side addition)
pi theme schemavarscolors two-layer; pi.themes JSON distribution; zero-code hot reloadFully followed: static JSON only, no TS, no hooks

Core trade-off: no code, no behavior change, no host-terminal binding; just translate the opencode-themes palette to Pi token names.

Changelog

Roadmap

DirectionPlan
Only one high-contrast dark variantvariants: dark-terminal-soft (desaturated), colorblind-safe branch
Color-tweaking by eyetoken reference table + local/optional CI visual regression
Layering with terminal emulator themesdocument recommended outer config, don't try to control the host terminal
Tracking pi schema evolutionversion notes track schema; missing-key fallback strategy documented
Theme assets still manualbuild a role-mapping table to generate multiple piex theme packages; settings deeplinks

Version history

VersionDateChanges
0.1.12026-07-19Initial release: high-contrast dark terminal palette (black bg #050505 + neon green/blue/cyan/red/yellow); vars→colors two-layer token mapping; fills all required Pi theme schema color tokens (general/message/tool/diff/markdown/syntax/thinking gradient); zero-code zero-hook pure JSON; thinking top tier neon pink #ff0088 (Pi-side addition)