docsreference
Commands
Every ttheme command, with its arguments, actions and options. This page is
made from the same source as ttheme help all, so the two never disagree.
ttheme help <command> prints one of them in your terminal, and
ttheme <command> --help does the same without running it. A bare ttheme
opens Preview and Browse.
This tab
use
ttheme use <palette>Use a palette in this tab — a unique prefix works: ttheme use ho
pin
ttheme pin [dir|ssh:<host>]Pin a palette to a directory or an ssh host — the pin covers everything below it, or its whole repository; cd or ssh in repaints, leaving restores
guide: Pin to a folder or ssh host
unpin
ttheme unpin [dir|ssh:<host>]Drop a pin — this directory's, every one below it, the one above that covers it, or an ssh host's
guide: Pin to a folder or ssh host
pins
ttheme pinsMap every pin as a file tree — the pinned directories in their palettes' colors, every ssh host, and the pin that covers this one
guide: Pin to a folder or ssh host
New tabs
default
ttheme default <palette>Make a palette the one new tabs open with
on
ttheme onUse the default palette in new tabs again
off
ttheme offTake the palette and picture off every tab — the terminal's own colors until ttheme on
config
ttheme configEdit settings in $EDITOR — a new mode reaches every open tab, the rest apply in new tabs
auto
ttheme autoShow every palette in the mode the system is in — following it as it changes, where a wired Ghostty, iTerm2, kitty or WezTerm reports it
guide: Light, dark and auto
light
ttheme lightShow every palette in its light mode — every open tab repaints, and new tabs open in it
guide: Light, dark and auto
dark
ttheme darkShow every palette in its dark mode — every open tab repaints, and new tabs open in it
guide: Light, dark and auto
Palettes
add
ttheme add [--in <marketplace>] <palette...>Install palettes — from your marketplaces, from a share link (ttheme add https://ttheme.dev/builder/tt4:…), or from a palette file, which joins your local marketplace: ttheme add ~/Downloads/kisara.toml
--in <marketplace>- The local marketplace a palette file goes into — when you have more than one
guide: Share a link
update
ttheme update [marketplace...]Update ttheme and refresh your marketplaces — official palettes come with ttheme; an installed palette from another marketplace keeps its colors until ctrl+r on it in Browse takes its update
guide: Add and update palettes
marketplace
ttheme marketplace [--owner <handle>] <action> [source]Add or drop a marketplace — Browse also finds them on GitHub and switches their auto-update; init makes one of your own
add <source>- Add a marketplace — a repository (alice/ttheme-pastel, #v1 pins a tag or branch), a folder, or official; asks whether it updates on its own
remove <marketplace>- Drop one by its name (alice@pastel) — the palettes you installed from it keep working
init [name]- Make a marketplace of your own — <you>@<name>, in ~/.config/ttheme/marketplace/<name> or a folder you give
check [dir]- Check a marketplace's folder before you push it — ttheme-marketplace.toml, every palette, the renames and the contrast checks; nothing is written
--owner <handle>- init: your GitHub handle, when gh is not logged in and there is no terminal to ask in
guide: Add and update palettes
Your own
new
ttheme new [--from <palette>] [--in <marketplace>] <name>Make a palette of your own in the palette editor — <you>@<marketplace>/<name>, from blank, installed at once
--from <palette>- Start from this palette's colors instead of blank
--in <marketplace>- The local marketplace to put it in — when you have more than one
guide: Your own palette
edit
ttheme edit [palette]Change a palette in the palette editor — your own in its file, any other as your tuning over its marketplace's colors, which R and s in the editor put back; with none named, asks to edit the one this tab shows
guide: Tune a palette
check
ttheme check [--fix] [palette]Check a palette against the contrast checks — where one fails, suggest colors that pass; with none named, asks to check the one this tab shows
--fix- Write the suggested colors into your palette
guide: Tune a palette
palette
ttheme palette [--json] [--preview] [--crop x,y,w,h] [--quant <n>] [--anchors <file>] [--catalog <name>] [--native <title>] [--lead <palette>] [--in <marketplace>] [--dry-run] <action> [arg]Make a character's palette from colors measured on its official art — the steps the ttheme-palette agent skill takes, each printing JSON with --json
measure <file|url>- Count a picture's flat colors, or a box's with --crop — --preview writes a copy at most 800 px on its long side and reads the box in its pixels
consensus <tag>- Read which colors danbooru's posts of a character tag name — the eyes, an item, or none — to pick the parts that carry the identity
make [palette]- Turn an anchors file into palettes — ranks base schemes, harmonizes, fixes the ANSI roles and runs the contrast checks, then writes them into your local marketplace and installs them
--json- Print the result as JSON on stdout
--preview- measure: write a preview at most 800 px on its long side; --crop is then in its pixels
--crop x,y,w,h- measure: the box to count
--quant <n>- measure: group near-duplicate colors — a JPEG's, an antialiased edge's — into n levels a channel
--anchors <file>- make: the anchors file
--catalog <name>- make: the catalog folder the palettes go in
--native <title>- make: a new catalog's official title
--lead <palette>- make: the palette that stands for a new catalog
--in <marketplace>- make: your local marketplace to write into, or its folder
--dry-run- make: show the result and write nothing
Anchors file (--anchors), one entry per palette:
{
"bocchi": {
"slots": { "cursor": ["hair", "#ffb7c8"], "ansi4": ["eyes", "#7b96c8"], "ansi9": ["jacket", "#f39cbf"] },
"booru": "gotoh_hitori",
"native_names": ["後藤ひとり"],
"source": "https://…"
}
}
slots three colors in the order the character reads, the first the seed — background, foreground,
cursor, selection or ansi0–ansi15 — each ["<part>", "#rrggbb"] as measured
booru the danbooru tag ttheme find searches (optional)
native_names the names preview's search matches; left out, ttheme's name data fills them in (optional)
source where the colors were measured (optional)
With --json each action prints one object on stdout, its status done, unchanged or error;
an error lists each field it refuses in problems, as { path, problem }.
0- Done
1- Failed
2- Nothing changed — what it would write is already there
3- Invalid input — the message names the field and what it takes
4- A network request failed — try again
guide: Your own palette
share
ttheme share [--tone <tuned|original>] [palette]Share palettes as a link or a GitHub marketplace — asks which and which palettes, then prints the link and its QR code; ttheme add <link> installs a link's palettes, pictures included, and ttheme marketplace add <owner>/<repo> adds the marketplace, which gh creates and sharing it again updates; a palette named, or a link into a pipe, shares that palette, or the one this tab shows, as a link without asking
--tone <tuned|original>- Share the palettes you tuned as you tuned them, or as they were — asked when you omit this
guide: Share a link
Setup
init
ttheme init [--yes]Install the shell layer and wire your terminals
-y, --yes- Accept every default without prompting
guide: Install
uninstall
ttheme uninstall [--yes]Remove ttheme — its block comes out of every terminal config and what it wrote is deleted
-y, --yes- Remove without asking
Support
info
ttheme infoPrint what a bug report needs — version, OS, shell, terminal and the settings you changed
guide: Install