Saving a theme stopped sticking: the choice was captured only by the fish `kitten` wrapper, so `kitty +kitten themes`, a keybinding or any non-fish shell wrote <appearance>-theme.auto.conf directly and the next regeneration overwrote it from theme-modes. The dark slot had already lost a pick that way -- dark-theme.auto.conf held #0d0f31 while canonical dark said #2b2c2e. Move the capture into apply-theme-mode.sh, which every path runs. It records a cksum of each generated file after the repair step; on the next run a file whose checksum differs was written by something else, so it becomes canonical for that appearance. With no state recorded yet nothing is adopted, so a first run cannot mistake a pinned mode's duplicated files for real choices. The fish wrapper keeps only its useful part: re-apply the mode and reload so the change shows at once. theme-modes/dark.conf is the recovered #0d0f31 (1984). Covered by a new case in tests/test_theme_mode.sh that writes the theme file with no shell involved.
72 lines
2.0 KiB
Plaintext
72 lines
2.0 KiB
Plaintext
{{- if ne .chezmoi.os "darwin" }}
|
|
Library
|
|
.terminfo
|
|
.1password
|
|
.config/karabiner
|
|
# macOS-only: the ping wrapper drives /sbin/ping6 and dscacheutil, and ping4
|
|
# is a symlink to /sbin/ping. Linux ping picks a family itself and takes -4.
|
|
.local/bin/ping
|
|
.local/bin/ping4
|
|
{{- end }}
|
|
{{- if eq .chezmoi.os "darwin" }}
|
|
# Linux-only: macOS ping rejects -4, so there ping4 is ~/.local/bin/ping4.
|
|
.config/fish/functions/ping4.fish
|
|
{{- end }}
|
|
.config/karabiner/automatic_backups
|
|
.config/scripts/__pycache__
|
|
|
|
# pi: keep config, never commit secrets/sessions
|
|
.pi/agent/auth.json
|
|
.pi/agent/sessions
|
|
|
|
# agent CLIs: configs are tracked file by file, but never credentials, session
|
|
# logs or local state. Belt and braces in case a directory is ever added whole.
|
|
.claude/.credentials.json
|
|
.claude/projects
|
|
.claude/history.jsonl
|
|
.claude/file-history
|
|
.claude/telemetry
|
|
.claude/session-env
|
|
.claude/shell-snapshots
|
|
.codex/secrets.env
|
|
.codex/auth.json
|
|
.codex/accounts
|
|
.codex/*.bak
|
|
.codex/*.bak-*
|
|
.codex/*.bak.*
|
|
.codex/sessions
|
|
.codex/archived_sessions
|
|
.codex/logs*
|
|
.codex/*.sqlite*
|
|
.grok/auth.json*
|
|
.grok/projects
|
|
.grok/sessions
|
|
.kimi/credentials
|
|
.kimi/sessions
|
|
.kimi-code/oauth
|
|
.kimi-code/sessions
|
|
.reasonix/.env
|
|
.reasonix/sessions
|
|
.reasonix/projects
|
|
# config.json is local state: a generated dashboard token, its port and UI
|
|
# flags. The portable config is config.toml, which names keys via api_key_env.
|
|
.reasonix/config.json
|
|
.reasonix/*.bak
|
|
.config/opencode/secrets
|
|
.config/opencode/*.bak
|
|
.config/opencode/*.bak.*
|
|
.config/opencode/*backup*
|
|
.config/opencode/node_modules
|
|
.config/opencode/bun.lock
|
|
.config/opencode/package-lock.json
|
|
|
|
# kitty: the light/dark mode is per-machine, and the *-theme.auto.conf files
|
|
# are generated from it plus .config/kitty/themes. Tracking them would make
|
|
# every machine flag the others' mode. run_after_kitty-theme-mode.sh
|
|
# regenerates them after apply.
|
|
.config/kitty/theme-mode
|
|
.config/kitty/.theme-generated
|
|
.config/kitty/dark-theme.auto.conf
|
|
.config/kitty/light-theme.auto.conf
|
|
.config/kitty/no-preference-theme.auto.conf
|