Produce a valid Termy config and a compatibility report. Never silently copy a Ghostty key into Termy merely because the names look similar.
Workflow
- Locate the Ghostty input. Prefer an explicit path. Otherwise check:
$XDG_CONFIG_HOME/ghostty/config.ghostty$XDG_CONFIG_HOME/ghostty/config~/.config/ghostty/config.ghostty~/.config/ghostty/config- macOS Application Support paths documented by Ghostty
- Run the bundled converter:
python3 scripts/convert_ghostty_to_termy.py SOURCE \
--output /tmp/termy-config.txt \
--report /tmp/termy-compatibility.json
- Read the generated config and report. Resolve unsupported or approximated entries only when the user wants manual equivalents.
- For any manual mapping, verify the target key and accepted value in
references/termy-llms-full.txt. Search it
with
rg -nrather than loading the entire 76 KB file. - Validate structurally by rerunning the converter with
--strict. If a Termy binary or config validation command is available, validate with it too. - Write to
~/.config/termy/config.txtonly when the user asks to install or replace their live config. Preserve an existing file unless replacement is explicit.
Conversion rules
Follow references/mapping-policy.md for exact and lossy mappings.
- Keep ordinary Termy keys and repeated
keybindlines before[colors]. - Emit
[colors]last because it is Termy's only section header. - Normalize Ghostty
RRGGBBcolors to Termy's required#RRGGBB. - Inline Ghostty
config-fileincludes using Ghostty's load order. - Preserve only behavior Termy supports. Put everything else in the report.
- Treat named Ghostty themes as unresolved unless their colors are made explicit. A matching theme slug does not prove the same theme exists in Termy.
- Treat Ghostty keybind prefixes, sequences, text/escape injection, global shortcuts, and parameterized actions as unsupported unless Termy documents an equivalent.
- Never invent Termy action names. Check the
# Actionssection in the bundled docs when adding a manual keybinding mapping.
Output contract
Return:
- the generated Termy config path or config text;
- counts of exact, approximated, unsupported, and warning entries;
- a short list of lossy or unsupported settings that matter to the user;
- whether validation was structural only or also performed by Termy itself.
Do not call a migration complete when the report still contains important unsupported behavior without telling the user.