Convert Ghostty configuration to Termy
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.jsonRead 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.