You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: AGENTS.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -192,7 +192,7 @@ Automatic mode delegates the default user layer to `ghostty_config_load_default_
192
192
`GhosttyConfigSource` is the matching raw-text seam forfeatures whose values the C API cannot expose or whose user-stated value matters. It concatenates readable default root filesin Ghostty order (XDG `config`, XDG `config.ghostty`, Application Support `config`, Application Support `config.ghostty`), followed by the custom files in Settings order. Recursive `config-file` includes are loaded by libghostty at runtime but remain outside those raw-text scans.
193
193
194
194
- **`macterm-defaults.conf`** — first-launch tasteful defaults; anything in the user's config overrides them.
195
-
- **`macterm-overrides.conf`** — keys Macterm must lock: `background-opacity = 0` / `background-blur = 0` (so `WindowAppearance` composites translucency itself without double-tinting), plus `env = GHOSTTY_BIN_DIR=<bundle>/Contents/Resources/ssh-bridge` and a `shell-integration-features` line forcing `no-path`. The shell-integration `ssh` wrapper execs `"$GHOSTTY_BIN_DIR/ghostty" +ssh`, and that dir holds Macterm's own `ghostty` shim (`scripts/ghostty-shim.sh`, installed by the "Bundle macterm CLI" post-build step), which relays to `macterm ssh` — so `ssh-env`/`ssh-terminfo` work with **no Ghostty.app installed** and are never forced off (only if the shim is missing from the bundle — a broken build — are they, so the wrapper falls through to plain `ssh` instead of dying on a bad exec). The shim lives in its own dir, NOT `Resources/bin` or `Contents/MacOS`, because both land on pane PATHs (`EnvironmentSetup` prepends bin; libghostty unconditionally appends the exe dir) and a `ghostty` that only answers `+ssh` must never be reachable by name — which is also why `no-path` is always forced (that feature's only effect is putting `GHOSTTY_BIN_DIR` on PATH). The features key can't be written bare — libghostty re-parses it from defaults on every occurrence, wiping the user's own flags — so `ShellIntegrationFeatures.overrideValue` re-emits the user's effective value with our `no-*` flags appended (#75). Because the override depends on the user's config content, `loadConfig` calls `regenerate()` before every load.
195
+
- **`macterm-overrides.conf`** — keys Macterm must lock: `background-default-transparent = true` (fork patch 0004 — the renderer never paints the *default* background, so `WindowAppearance` composites translucency itself without double-tinting; the same renderer mechanism ghostty's macOS glass styles use, exposed as a config key), `background-opacity = <Preferences.windowOpacity>` (the REAL opacity, not a pinned 0 — that's what lets the user's own `background-opacity-cells` flag work as ghostty documents it, making TUI-painted cell backgrounds translucent at the window opacity; under the old `background-opacity = 0` pin that flag multiplied every painted cell to invisible. `Preferences.windowOpacity` keeps it current via a debounced regenerate+reload — the instant window resync stays on the cheap no-reload path), `background-blur = 0` (Macterm calls the CGS blur SPI itself), plus `env = GHOSTTY_BIN_DIR=<bundle>/Contents/Resources/ssh-bridge` and a `shell-integration-features` line forcing `no-path`. The shell-integration `ssh` wrapper execs `"$GHOSTTY_BIN_DIR/ghostty" +ssh`, and that dir holds Macterm's own `ghostty` shim (`scripts/ghostty-shim.sh`, installed by the "Bundle macterm CLI" post-build step), which relays to `macterm ssh` — so `ssh-env`/`ssh-terminfo` work with **no Ghostty.app installed** and are never forced off (only if the shim is missing from the bundle — a broken build — are they, so the wrapper falls through to plain `ssh` instead of dying on a bad exec). The shim lives in its own dir, NOT `Resources/bin` or `Contents/MacOS`, because both land on pane PATHs (`EnvironmentSetup` prepends bin; libghostty unconditionally appends the exe dir) and a `ghostty` that only answers `+ssh` must never be reachable by name — which is also why `no-path` is always forced (that feature's only effect is putting `GHOSTTY_BIN_DIR` on PATH). The features key can't be written bare — libghostty re-parses it from defaults on every occurrence, wiping the user's own flags — so `ShellIntegrationFeatures.overrideValue` re-emits the user's effective value with our `no-*` flags appended (#75). Because the override depends on the user's config content, `loadConfig` calls `regenerate()` before every load.
196
196
197
197
Macterm-specific UI state (window opacity/blur, quick terminal, hotkeys, auto-tile) lives in `Preferences` and never touches the ghostty config pipeline.
0 commit comments