@sebastienrousseau/dotfiles 0.2.519 → 0.2.521

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/CHANGELOG.md +200 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/{LICENSE → LICENSE-MIT} +1 -1
  4. package/README.md +1172 -166
  5. package/install.sh +77 -11
  6. package/package.json +8 -8
  7. package/tools/README.md +49 -0
  8. package/tools/ci/install-chezmoi-verified.sh +68 -0
  9. package/docs/.vitepress/reports/localization-readability-audit.md +0 -73
  10. package/docs/AI.md +0 -179
  11. package/docs/CNAME +0 -1
  12. package/docs/CONFIG_STRATEGY.md +0 -124
  13. package/docs/COPYRIGHT +0 -7
  14. package/docs/GOVERNANCE.md +0 -98
  15. package/docs/MAINTAINERS.md +0 -41
  16. package/docs/NAMING_CONVENTIONS.md +0 -102
  17. package/docs/OPENCODE.md +0 -127
  18. package/docs/README.md +0 -84
  19. package/docs/STRUCTURE.md +0 -102
  20. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
  21. package/docs/adr/ADR-002-shell-performance.md +0 -130
  22. package/docs/adr/ADR-003-security-first.md +0 -158
  23. package/docs/adr/ADR-004-cli-architecture.md +0 -171
  24. package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
  25. package/docs/adr/ADR-006-shell-selection.md +0 -124
  26. package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
  27. package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
  28. package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
  29. package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
  30. package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
  31. package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
  32. package/docs/adr/README.md +0 -40
  33. package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
  34. package/docs/architecture/ARCHITECTURE.md +0 -117
  35. package/docs/architecture/INTEROP.md +0 -44
  36. package/docs/architecture/REPO_LAYOUT.md +0 -241
  37. package/docs/architecture/WALKTHROUGH.md +0 -86
  38. package/docs/architecture/fleet-deployment.md +0 -77
  39. package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
  40. package/docs/archive/LEGACY_ROADMAP.md +0 -6
  41. package/docs/archive/MILESTONE_v0.2.493.md +0 -47
  42. package/docs/archive/PLAN.md +0 -199
  43. package/docs/archive/REPO_AUDIT.md +0 -31
  44. package/docs/articles/.pages +0 -6
  45. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
  46. package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
  47. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
  48. package/docs/articles/index.md +0 -36
  49. package/docs/guides/INSTALL.md +0 -144
  50. package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
  51. package/docs/guides/THEMING.md +0 -230
  52. package/docs/guides/TROUBLESHOOTING.md +0 -176
  53. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
  54. package/docs/index.md +0 -132
  55. package/docs/interop/A2A.md +0 -39
  56. package/docs/interop/POWERSHELL.md +0 -102
  57. package/docs/manual/00-introduction.md +0 -89
  58. package/docs/manual/01-concepts/01-architecture.md +0 -138
  59. package/docs/manual/01-concepts/02-trust-model.md +0 -183
  60. package/docs/manual/01-concepts/03-theme-engine.md +0 -186
  61. package/docs/manual/01-concepts/04-fleet.md +0 -148
  62. package/docs/manual/01-concepts/05-self-healing.md +0 -204
  63. package/docs/manual/02-tutorials/01-first-install.md +0 -197
  64. package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
  65. package/docs/manual/02-tutorials/03-create-profile.md +0 -244
  66. package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
  67. package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
  68. package/docs/manual/03-reference/01-dot-cli.md +0 -450
  69. package/docs/manual/03-reference/02-config-files.md +0 -265
  70. package/docs/manual/03-reference/03-environment.md +0 -124
  71. package/docs/manual/03-reference/04-templates.md +0 -190
  72. package/docs/manual/03-reference/05-feature-flags.md +0 -187
  73. package/docs/manual/04-cookbook/01-recipes.md +0 -285
  74. package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
  75. package/docs/manual/04-cookbook/03-faq.md +0 -175
  76. package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
  77. package/docs/manual/05-appendices/B-security-checklist.md +0 -85
  78. package/docs/manual/05-appendices/C-glossary.md +0 -40
  79. package/docs/manual/05-appendices/D-bibliography.md +0 -58
  80. package/docs/manual/05-appendices/E-license.md +0 -38
  81. package/docs/manual/_toc.yml +0 -58
  82. package/docs/manual/command-index.md +0 -155
  83. package/docs/manual/concept-index.md +0 -168
  84. package/docs/manual/index.md +0 -66
  85. package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
  86. package/docs/operations/ATTESTATION.md +0 -44
  87. package/docs/operations/CI_CADENCE.md +0 -107
  88. package/docs/operations/CI_COMPOSITES.md +0 -156
  89. package/docs/operations/COMPLETIONS.md +0 -123
  90. package/docs/operations/COVERAGE.md +0 -204
  91. package/docs/operations/DRIFT.md +0 -107
  92. package/docs/operations/HARD_AUDIT_2026.md +0 -631
  93. package/docs/operations/MAINTENANCE.md +0 -63
  94. package/docs/operations/MANIFEST.md +0 -127
  95. package/docs/operations/MIGRATION.md +0 -109
  96. package/docs/operations/OPERATIONS.md +0 -188
  97. package/docs/operations/PERFORMANCE.md +0 -133
  98. package/docs/operations/REGISTRY.md +0 -90
  99. package/docs/operations/RELEASE_PIPELINE.md +0 -128
  100. package/docs/operations/RELIABILITY.md +0 -122
  101. package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
  102. package/docs/operations/ROADMAP.md +0 -10
  103. package/docs/operations/ROADMAP_2026.md +0 -7
  104. package/docs/operations/ROADMAP_V0_2_503.md +0 -10
  105. package/docs/operations/TESTING.md +0 -216
  106. package/docs/operations/TRACEABILITY.md +0 -43
  107. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
  108. package/docs/operations/VERSION_SYNC.md +0 -393
  109. package/docs/reference/ALIASES.md +0 -131
  110. package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
  111. package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
  112. package/docs/reference/FEATURES.md +0 -66
  113. package/docs/reference/FONTS.md +0 -112
  114. package/docs/reference/POWERSHELL_PARITY.md +0 -82
  115. package/docs/reference/PROFILES.md +0 -69
  116. package/docs/reference/SCREENSHOTS.md +0 -121
  117. package/docs/reference/SCRIPTS.md +0 -71
  118. package/docs/reference/SUPPORT_MATRIX.md +0 -80
  119. package/docs/reference/THEMES.md +0 -117
  120. package/docs/reference/TOOLS.md +0 -110
  121. package/docs/reference/UTILS.md +0 -242
  122. package/docs/registry.json +0 -6
  123. package/docs/schema/dot-env-v1.json +0 -110
  124. package/docs/schema/dot-registry-v1.json +0 -33
  125. package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
  126. package/docs/security/AUDIT_BYPASS.md +0 -103
  127. package/docs/security/AUTOMATION_SECRETS.md +0 -26
  128. package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
  129. package/docs/security/CI_PINNING.md +0 -129
  130. package/docs/security/COMMIT_SIGNING.md +0 -138
  131. package/docs/security/COMPLIANCE.md +0 -458
  132. package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
  133. package/docs/security/DISCLOSURE.md +0 -130
  134. package/docs/security/ENCRYPTION.md +0 -57
  135. package/docs/security/FMEA.md +0 -159
  136. package/docs/security/FUZZING.md +0 -114
  137. package/docs/security/HISTORY_FILTERING.md +0 -132
  138. package/docs/security/INCIDENT_RESPONSE.md +0 -579
  139. package/docs/security/INSTALL_VERIFICATION.md +0 -122
  140. package/docs/security/KEYS.md +0 -49
  141. package/docs/security/KEY_ROTATION.md +0 -303
  142. package/docs/security/MCP_POLICY.md +0 -78
  143. package/docs/security/POLICY_RELEASES.md +0 -37
  144. package/docs/security/README.md +0 -28
  145. package/docs/security/SCORECARD.md +0 -195
  146. package/docs/security/SECRETS.md +0 -158
  147. package/docs/security/SECURITY.md +0 -45
  148. package/docs/security/SECURITY_CHECKLIST.md +0 -55
  149. package/docs/security/SHELL_EXEMPTIONS.md +0 -145
  150. package/docs/security/SOUP_REGISTER.md +0 -36
  151. package/docs/security/THREAT_MODEL.md +0 -130
  152. package/docs/security/VERIFICATION_VALIDATION.md +0 -228
  153. package/docs/security/VERIFY_RELEASE.md +0 -201
  154. package/docs/security/security-pubkey.asc +0 -15
  155. package/docs/stylesheets/extra.css +0 -444
  156. package/docs/themes/README.md +0 -10
  157. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
  158. package/docs/themes/hero-shot.svg +0 -78
  159. package/scripts/README.md +0 -123
  160. package/scripts/ci/check-copyright-headers.sh +0 -8
  161. package/scripts/ci/check-shell-preamble.sh +0 -8
  162. package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
  163. package/scripts/demo/record.sh +0 -43
  164. package/scripts/diagnostics/a2a-conformance.sh +0 -163
  165. package/scripts/diagnostics/alias-governance.sh +0 -138
  166. package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
  167. package/scripts/diagnostics/aliases-manifest.sh +0 -77
  168. package/scripts/diagnostics/benchmark.sh +0 -408
  169. package/scripts/diagnostics/conflicts.sh +0 -73
  170. package/scripts/diagnostics/doctor-unified.sh +0 -39
  171. package/scripts/diagnostics/doctor.sh +0 -751
  172. package/scripts/diagnostics/drift-dashboard.sh +0 -202
  173. package/scripts/diagnostics/health.sh +0 -623
  174. package/scripts/diagnostics/history-analysis.sh +0 -86
  175. package/scripts/diagnostics/mcp-doctor.sh +0 -582
  176. package/scripts/diagnostics/perf.sh +0 -453
  177. package/scripts/diagnostics/scorecard.sh +0 -119
  178. package/scripts/diagnostics/secret-governance.sh +0 -65
  179. package/scripts/diagnostics/security-score.sh +0 -467
  180. package/scripts/diagnostics/smoke-test.sh +0 -88
  181. package/scripts/diagnostics/snapshot.sh +0 -90
  182. package/scripts/diagnostics/verify.sh +0 -108
  183. package/scripts/diagnostics/verify_state.sh +0 -73
  184. package/scripts/diagnostics/version-locks.sh +0 -94
  185. package/scripts/diagnostics/workstation-attestation.sh +0 -187
  186. package/scripts/dot/commands/agent.sh +0 -485
  187. package/scripts/dot/commands/agents.sh +0 -336
  188. package/scripts/dot/commands/ai.sh +0 -587
  189. package/scripts/dot/commands/aliases.sh +0 -277
  190. package/scripts/dot/commands/appearance.sh +0 -110
  191. package/scripts/dot/commands/completion.sh +0 -134
  192. package/scripts/dot/commands/core.sh +0 -217
  193. package/scripts/dot/commands/diagnostics.sh +0 -265
  194. package/scripts/dot/commands/env-emit.sh +0 -203
  195. package/scripts/dot/commands/fleet.sh +0 -688
  196. package/scripts/dot/commands/init.sh +0 -185
  197. package/scripts/dot/commands/lint.sh +0 -208
  198. package/scripts/dot/commands/manual.sh +0 -169
  199. package/scripts/dot/commands/meta.sh +0 -333
  200. package/scripts/dot/commands/patterns.sh +0 -55
  201. package/scripts/dot/commands/registry.sh +0 -419
  202. package/scripts/dot/commands/restore.sh +0 -232
  203. package/scripts/dot/commands/secrets.sh +0 -296
  204. package/scripts/dot/commands/security.sh +0 -102
  205. package/scripts/dot/commands/tools.sh +0 -556
  206. package/scripts/dot/data/alias-deprecations.tsv +0 -2
  207. package/scripts/dot/powershell/Dot.psm1 +0 -319
  208. package/scripts/fonts/install-nerd-fonts.sh +0 -75
  209. package/scripts/fonts/patch-fonts.sh +0 -36
  210. package/scripts/git-hooks/install.sh +0 -12
  211. package/scripts/git-hooks/pre-commit +0 -12
  212. package/scripts/git-hooks/pre-commit-audit.sh +0 -146
  213. package/scripts/git-hooks/pre-push +0 -105
  214. package/scripts/git-hooks/prepare-commit-msg +0 -29
  215. package/scripts/lib/secrets_provider.sh +0 -185
  216. package/scripts/ops/ai-setup.sh +0 -71
  217. package/scripts/ops/bundle.sh +0 -104
  218. package/scripts/ops/chaos.sh +0 -50
  219. package/scripts/ops/chezmoi-apply.sh +0 -333
  220. package/scripts/ops/chezmoi-diff.sh +0 -16
  221. package/scripts/ops/chezmoi-remove.sh +0 -46
  222. package/scripts/ops/chezmoi-update.sh +0 -63
  223. package/scripts/ops/heal-chezmoi.sh +0 -87
  224. package/scripts/ops/heal-system.sh +0 -129
  225. package/scripts/ops/heal-tools.sh +0 -297
  226. package/scripts/ops/heal.sh +0 -223
  227. package/scripts/ops/post-apply-repair.sh +0 -107
  228. package/scripts/ops/prewarm.sh +0 -128
  229. package/scripts/ops/release.sh +0 -262
  230. package/scripts/ops/rollback.sh +0 -604
  231. package/scripts/ops/setup.sh +0 -138
  232. package/scripts/ops/teleport.sh +0 -34
  233. package/scripts/qa/check-version-consistency.sh +0 -124
  234. package/scripts/qa/coverage-baseline.sh +0 -61
  235. package/scripts/qa/docs-coverage.sh +0 -112
  236. package/scripts/qa/examples-coverage.sh +0 -94
  237. package/scripts/qa/powershell-contract.ps1 +0 -95
  238. package/scripts/qa/reliability-audit.sh +0 -139
  239. package/scripts/qa/scorecard-snapshot.sh +0 -128
  240. package/scripts/qa/traceability-coverage.sh +0 -117
  241. package/scripts/qa/validate-examples.sh +0 -27
  242. package/scripts/qa/wsl-contract.sh +0 -12
  243. package/scripts/secrets/age-init.sh +0 -82
  244. package/scripts/secrets/create-secrets-file.sh +0 -46
  245. package/scripts/secrets/encrypt-ssh-key.sh +0 -44
  246. package/scripts/security/backup.sh +0 -58
  247. package/scripts/security/check-disclosure-key-expiry.sh +0 -111
  248. package/scripts/security/dns-doh.sh +0 -52
  249. package/scripts/security/encryption-check.sh +0 -55
  250. package/scripts/security/enforce-policies.sh +0 -335
  251. package/scripts/security/firewall.sh +0 -91
  252. package/scripts/security/lock-configs.sh +0 -67
  253. package/scripts/security/lock-screen.sh +0 -56
  254. package/scripts/security/manage-secrets.sh +0 -429
  255. package/scripts/security/ssh-cert.sh +0 -204
  256. package/scripts/security/telemetry-kill.sh +0 -51
  257. package/scripts/security/usb-safety.sh +0 -52
  258. package/scripts/theme/apply-gnome-theme.sh +0 -333
  259. package/scripts/theme/extract-heic-frames.sh +0 -115
  260. package/scripts/theme/extract-theme.py +0 -742
  261. package/scripts/theme/install-boot-logo.sh +0 -63
  262. package/scripts/theme/install-catppuccin-themes.sh +0 -371
  263. package/scripts/theme/install-cursors.sh +0 -26
  264. package/scripts/theme/install-file-icons.sh +0 -27
  265. package/scripts/theme/install-grub-theme.sh +0 -62
  266. package/scripts/theme/install-lock-icon.sh +0 -31
  267. package/scripts/theme/merge-wallpaper.sh +0 -146
  268. package/scripts/theme/rebuild-themes.sh +0 -544
  269. package/scripts/theme/switch.sh +0 -449
  270. package/scripts/theme/wallpaper-rotate.sh +0 -137
  271. package/scripts/theme/wallpaper-sync.sh +0 -690
  272. package/scripts/tools/cmatrix.sh +0 -22
  273. package/scripts/tools/detect-collisions.py +0 -103
  274. package/scripts/tools/emoji-picker.sh +0 -49
  275. package/scripts/tools/figlet-banner.sh +0 -19
  276. package/scripts/tools/log-rotate.sh +0 -31
  277. package/scripts/tools/lolcat-wrap.sh +0 -20
  278. package/scripts/tools/pipes.sh +0 -49
  279. package/scripts/tuning/linux.sh +0 -186
  280. package/scripts/tuning/macos.sh +0 -56
  281. package/scripts/uninstall.sh +0 -86
  282. package/scripts/version-sync.sh +0 -654
  283. package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
  284. package/templates/chezmoi-data/mac-m1.toml.example +0 -16
  285. package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
  286. package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
  287. package/templates/projects/go/.github/workflows/ci.yml +0 -31
  288. package/templates/projects/go/README.md +0 -7
  289. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
  290. package/templates/projects/go/go.mod +0 -3
  291. package/templates/projects/go/go.sum +0 -0
  292. package/templates/projects/molecule/README.md +0 -7
  293. package/templates/projects/molecule/converge.yml +0 -7
  294. package/templates/projects/molecule/molecule.yml +0 -16
  295. package/templates/projects/node/.github/workflows/ci.yml +0 -30
  296. package/templates/projects/node/README.md +0 -7
  297. package/templates/projects/node/package-lock.json +0 -12
  298. package/templates/projects/node/package.json +0 -10
  299. package/templates/projects/node/src/index.js +0 -3
  300. package/templates/projects/packer/README.md +0 -15
  301. package/templates/projects/packer/main.pkr.hcl +0 -15
  302. package/templates/projects/python/.github/workflows/ci.yml +0 -34
  303. package/templates/projects/python/README.md +0 -7
  304. package/templates/projects/python/pyproject.toml +0 -25
  305. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
  306. package/templates/projects/python/tests/test_basic.py +0 -3
@@ -1,112 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Font configuration
6
-
7
- How fonts are set up, rendered, and installed in these dotfiles.
8
-
9
- ## Recommended fonts
10
-
11
- ### Primary: JetBrains Mono Nerd Font
12
-
13
- The default font is JetBrains Mono with Nerd Font patches. It's designed for code readability, supports ligatures, includes Powerline/Nerd Font glyphs, and clearly distinguishes similar characters (`0`/`O`, `1`/`l`/`I`).
14
-
15
- ### Alternatives
16
-
17
- | Font | Style | Best for |
18
- |------|-------|----------|
19
- | Fira Code | Modern | Ligature fans |
20
- | Cascadia Code | Microsoft | VS Code users |
21
- | Hack | Classic | Traditional monospace look |
22
- | Source Code Pro | Adobe | Clean aesthetic |
23
- | Iosevka | Narrow | Small screens |
24
-
25
- ## Installation
26
-
27
- ### macOS (Homebrew)
28
-
29
- ```bash
30
- brew tap homebrew/cask-fonts
31
- brew install --cask font-jetbrains-mono-nerd-font
32
-
33
- # Or use the dot CLI
34
- dot fonts install
35
- ```
36
-
37
- ### Linux (manual)
38
-
39
- ```bash
40
- wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.4.0/JetBrainsMono.zip
41
- unzip JetBrainsMono.zip -d ~/.local/share/fonts/
42
- fc-cache -fv
43
- ```
44
-
45
- ### Patching your own fonts
46
-
47
- To patch a custom font with Nerd Font glyphs:
48
-
49
- ```bash
50
- ~/.dotfiles/scripts/fonts/patch-fonts.sh /path/to/font.ttf
51
- ```
52
-
53
- ## Terminal configuration
54
-
55
- ### Ghostty
56
-
57
- ```text
58
- font-family = JetBrains Mono Nerd Font
59
- font-size = 14
60
- ```
61
-
62
- ### WezTerm
63
-
64
- ```lua
65
- config.font = wezterm.font("JetBrains Mono Nerd Font")
66
- config.font_size = 14.0
67
- ```
68
-
69
- ### Alacritty
70
-
71
- ```yaml
72
- font:
73
- normal:
74
- family: JetBrains Mono Nerd Font
75
- size: 14.0
76
- ```
77
-
78
- ### Kitty
79
-
80
- ```text
81
- font_family JetBrains Mono Nerd Font
82
- font_size 14.0
83
- ```
84
-
85
- ## Font size recommendations
86
-
87
- | Display | Size |
88
- |---------|------|
89
- | 13" laptop | 12-13pt |
90
- | 15" laptop | 13-14pt |
91
- | 24" monitor | 14-15pt |
92
- | 27" 4K monitor | 15-16pt |
93
-
94
- ## Troubleshooting
95
-
96
- ### Fonts not displaying correctly
97
-
98
- 1. Verify the font is installed: `fc-list | grep JetBrains`
99
- 2. Restart your terminal
100
- 3. Double-check the terminal's font settings
101
-
102
- ### Nerd Font icons missing
103
-
104
- 1. Make sure you're using a Nerd Font variant (not the plain version)
105
- 2. Confirm the terminal supports the required Unicode range
106
- 3. Try a different Nerd Font if the issue persists
107
-
108
- ### Ligatures not working
109
-
110
- 1. Enable ligatures in your terminal's settings
111
- 2. Some terminals don't support ligatures (e.g., `Terminal.app`)
112
- 3. Ghostty, WezTerm, and Kitty all handle ligatures well
@@ -1,82 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- title: "PowerShell parity matrix"
4
- description: "What works on Windows-native PowerShell 7.4 LTS / 7.5+ vs the bash surface."
5
- ---
6
-
7
- # PowerShell parity matrix
8
-
9
- This document tracks what is supported on Windows-native PowerShell 7.4 LTS / 7.5+ compared to the bash/zsh surface that ships on macOS and Linux. The repo's positioning has shifted (per [ROADMAP_2026 §6.9](../operations/ROADMAP_2026.md)) to call PowerShell a first-class target rather than "best effort." This page is the contract.
10
-
11
- ## Support tiers
12
-
13
- | Tier | Meaning | Examples |
14
- |---|---|---|
15
- | **Full** | Native PowerShell path; tested in CI on `windows-latest`. | `dot version`, `dot help`, `dot agents check`. |
16
- | **WSL-bridged** | Runs under WSL2 bash with the same UX as Linux. | All `dot` subcommands, the test suite, the cold-start bench. |
17
- | **Bash-bridged** | The PowerShell dispatcher delegates to Git Bash or WSL bash and fails clearly when bash is unavailable. | `dot registry`, `dot fleet apply`, Unix-specific diagnostics. |
18
- | **N/A** | The command targets a Unix-only surface and is not exposed on PowerShell. | Wallpaper-driven theming via macOS `defaults`; Linux-only `lock-configs.sh`. |
19
-
20
- ## Command-by-command matrix
21
-
22
- | Command | Windows-native | WSL2 | macOS | Linux |
23
- |---|---|---|---|---|
24
- | `dot version` | **Full (native)** — `Get-DotVersion` cmdlet in `scripts/dot/powershell/Dot.psm1`; reads `.chezmoidata.toml` directly, no bash | Full | Full | Full |
25
- | `dot help` | **Full (native)** — `Invoke-DotHelp`; detailed Unix command help remains bash-bridged | Full | Full | Full |
26
- | `dot status` | **Full (native)** — structured clean/drifted result from chezmoi | Full | Full | Full |
27
- | `dot diff` / `apply` / `sync` / `update` | **Full (native)** — direct, exit-code-checked chezmoi operations | Full | Full | Full |
28
- | `dot add` / `remove` / `init` / `cd` | **Full (native)** — direct chezmoi operations and source-path lookup | Full | Full | Full |
29
- | `dot doctor` | **Full (native baseline)** — PowerShell, chezmoi, git, repo data, and module checks; Unix-only diagnostics are bash-bridged | Full | Full | Full |
30
- | `dot agents check` | **Full (native)** — `Test-DotAgentsSync` cmdlet; CI smoke test runs the cmdlet directly | Full | Full | Full |
31
- | `dot agents list` | **Full (native)** — structured harness/path/rendered records | Full | Full | Full |
32
- | `dot agents render` | Bash-bridged | Full | Full | Full |
33
- | `dot env list` | **Full (native)** — mise text or JSON inventory | Full | Full | Full |
34
- | `dot env emit` | Bash-bridged | Full | Full | Full |
35
- | `dot fleet status` | **Full (native)** — node, version, OS, architecture, and drift | Full | Full | Full |
36
- | `dot fleet drift` / `events` / `apply` / `namespace` | Bash-bridged | Full | Full | Full |
37
- | `dot registry list` / `search` / `info` / `install` | Bash-bridged; Unix path is verified, checksum-pinned, and preview-first | Full | Full | Full |
38
- | `dot agent` / `mode` / AI commands | Bash-bridged | Full | Full | Full |
39
- | `dot lint` | WSL-bridged (shellcheck/shfmt are Unix-native) | Full | Full | Full |
40
- | `dot perf` / `health` / `tools` | Bash-bridged | Full | Full | Full |
41
- | `dot theme` / `wallpaper` | N/A on native Windows | Limited | Full | Full (desktop-dependent) |
42
- | `dot security firewall` | Bash-bridged; no native Defender mutation | N/A | Full (pf) | Full (ufw/firewalld) |
43
- | `dot security lock-configs` | N/A (Windows ACL model differs; tracked) | N/A | Full (`chflags uchg`) | Full (`chattr +i`) |
44
- | Shell startup integration | Full (`Microsoft.PowerShell_profile.ps1` ships) | Full (zsh, bash, fish) | Full (zsh, bash, fish, nu) | Full (zsh, bash, fish, nu) |
45
-
46
- ## What CI verifies
47
-
48
- | Check | Platforms |
49
- |---|---|
50
- | `dot version` exits 0 | windows-latest, ubuntu-latest, macos-latest, macos-14 |
51
- | `dot help` exits 0 | windows-latest, ubuntu-latest, macos-latest, macos-14 |
52
- | `dot agents check` exits 0 | windows-latest (native), ubuntu-latest, macos-latest, macos-14 |
53
- | Native module import, agent-body sync, harness inventory, doctor baseline, and chezmoi diff | windows-latest |
54
- | Native dispatcher version, help, and agents check | windows-latest |
55
- | PowerShell ≥ 7.4 | windows-latest (smoke test at `tools/ci/windows-smoke-test.ps1`) |
56
- | PSScriptAnalyzer Error-level findings | windows-latest |
57
- | `chezmoi --version` exits 0 | windows-latest (via scoop), all Unix matrices |
58
- | `bash tools/ci/dot-cli-startup-bench.sh` median < 200ms | macos-latest |
59
- | `bash tools/ci/dot-cli-startup-bench.sh` median < 150ms | ubuntu-latest |
60
-
61
- ## Known parity gaps
62
-
63
- These are scoped in [`ROADMAP_2026 §C5`](../operations/ROADMAP_2026.md) but not in this PR's scope:
64
-
65
- 1. **Registry and fleet mutation.** Verified registry installation and multi-node fleet application still use the explicit bash bridge.
66
- 2. **Wallpaper-driven theming.** Native Windows wallpaper extraction and application are not implemented.
67
- 3. **Windows config locking.** There is no ACL/EFS equivalent of the Unix immutable-file operation.
68
- 4. **Authenticode signing.** Release provenance covers the archive, but `install.ps1` and `dot.ps1` are not Authenticode-signed for enterprise execution policies.
69
-
70
- ## Source-of-truth files
71
-
72
- - `.github/workflows/ci.yml` — `test-windows` job (pwsh + scoop + chezmoi + smoke)
73
- - `tools/ci/windows-smoke-test.ps1` — the actual gate
74
- - `bin/dot.ps1` and `scripts/dot/powershell/Dot.psm1` — native dispatcher and cmdlets
75
- - `defaults/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl` — deployed profile
76
- - `scripts/dot/lib/platform.sh` — the dot_path_to_unix/native bridge (H9 audit fix)
77
-
78
- ## Why this matters
79
-
80
- The 2026 trend brief flagged Windows-as-first-class as the highest-leverage move post-Codex-Windows-GA (launched 2026-03-04 with 500k waitlist → 2M WAU in 4 weeks). PowerShell 7.4 LTS retires 2026-11-10, so the gate sits at "7.4+" today and will tighten to "7.5+" in November. Documented here so the gate change is not a surprise.
81
-
82
- Generated 2026-05-16 alongside the round-2 hard audit. Maintained: when adding a `dot` subcommand, update this matrix in the same PR.
@@ -1,69 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Profiles and Machine Setup
6
-
7
- ## Profile System
8
-
9
- You can set up each machine differently using profiles and hardware presets.
10
-
11
- ### Setting Your Profile
12
-
13
- Edit `~/.config/chezmoi/chezmoi.toml`:
14
-
15
- ```toml
16
- [data]
17
- profile = "laptop" # laptop | minimal | server
18
- machine = "macbook-m3" # optional: machine identifier
19
- ```
20
-
21
- ### Available Profiles
22
-
23
- | Profile | Description | What's Included |
24
- |---------|-------------|-----------------|
25
- | `laptop` | Full desktop setup (default) | All tools, AI CLIs, themes, completions |
26
- | `minimal` | Fast, lightweight | Core shell, git, basic aliases only |
27
- | `server` | Headless server | Shell, git, monitoring tools, no desktop |
28
-
29
- ### Per-Machine Overrides
30
-
31
- Create a `~/.config/chezmoi/chezmoi.toml` file on each machine to override defaults:
32
-
33
- ```toml
34
- [data]
35
- profile = "laptop"
36
- machine = "work-macbook"
37
- default_shell = "zsh"
38
-
39
- [data.features]
40
- linux_desktop = false
41
- zellij = true
42
- ```
43
-
44
- ### Hardware Presets
45
-
46
- The `templates/chezmoi-data/` folder has ready-made configs for common hardware:
47
-
48
- - `mac-m1.toml.example` — Apple Silicon MacBook
49
- - `geekom-a9.toml.example` — AMD mini PC (Linux)
50
- - `surface-pro-7p.toml.example` — Microsoft Surface (Linux)
51
- - `mac-t2-linux.toml.example` — Intel Mac running Linux
52
-
53
- Copy the one that matches your hardware:
54
-
55
- ```bash
56
- cp templates/chezmoi-data/mac-m1.toml.example ~/.config/chezmoi/chezmoi.toml
57
- chezmoi apply
58
- ```
59
-
60
- ### Environment Variables
61
-
62
- You can change behavior for a single session without editing any files:
63
-
64
- | Variable | Default | Effect |
65
- |----------|---------|--------|
66
- | `DOTFILES_FAST=1` | 0 | Skip heavy layers (zinit, completions) |
67
- | `DOTFILES_ULTRA_FAST=1` | 0 | Bare minimum shell (aliases + prompt) |
68
- | `DOTFILES_AI=1` | 0 | Enable AI helper scripts |
69
- | `DOTFILES_PROFILE=custom` | laptop | Override profile for session |
@@ -1,121 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Screenshots Gallery
6
-
7
- Here's how the dotfiles look across different themes and configurations.
8
-
9
- ## Theme Gallery
10
-
11
- ### Catppuccin Mocha (default)
12
-
13
- The default theme. Catppuccin Mocha gives you a dark palette with warm, muted colors.
14
-
15
- ```text
16
- Terminal: Ghostty / WezTerm / Alacritty
17
- Font: JetBrains Mono Nerd Font
18
- Theme: Catppuccin Mocha
19
- ```
20
-
21
- Key colors:
22
-
23
- - Background: `#1e1e2e`
24
- - Foreground: `#cdd6f4`
25
- - Accent Blue: `#89b4fa`
26
- - Accent Red: `#f38ba8`
27
-
28
- ### Catppuccin Latte (light)
29
-
30
- A light theme option for daytime use.
31
-
32
- ```text
33
- Terminal: Ghostty / WezTerm / Alacritty
34
- Font: JetBrains Mono Nerd Font
35
- Theme: Catppuccin Latte
36
- ```
37
-
38
- Key colors:
39
-
40
- - Background: `#eff1f5`
41
- - Foreground: `#4c4f69`
42
- - Accent Blue: `#1e66f5`
43
- - Accent Red: `#d20f39`
44
-
45
- ## Terminal Configurations
46
-
47
- ### Ghostty
48
-
49
- Modern, native terminal with GPU acceleration.
50
-
51
- - Native macOS integration
52
- - Fast rendering
53
- - Ligature support
54
- - Custom key bindings
55
-
56
- ### WezTerm
57
-
58
- Cross-platform terminal with Lua configuration.
59
-
60
- - GPU acceleration
61
- - Multiple windows/tabs
62
- - Hyperlinks
63
- - Image protocol support
64
-
65
- ### Alacritty
66
-
67
- Minimal, fast terminal.
68
-
69
- - Fast rendering
70
- - Simple YAML config
71
- - Vi mode
72
- - Cross-platform
73
-
74
- ### Kitty
75
-
76
- Feature-rich terminal.
77
-
78
- - GPU rendering
79
- - Ligatures
80
- - Image support
81
- - Keyboard protocol
82
-
83
- ## Prompt (Starship)
84
-
85
- The Starship prompt displays:
86
-
87
- - Current directory
88
- - Git branch and status
89
- - Language versions (when relevant)
90
- - Command duration
91
- - Exit status
92
-
93
- ## Neovim
94
-
95
- The Neovim configuration includes:
96
-
97
- - Catppuccin theme
98
- - Treesitter syntax highlighting
99
- - LSP integration
100
- - Telescope fuzzy finder
101
- - File tree (`nvim-tree`)
102
-
103
- ## tmux
104
-
105
- The tmux status bar displays:
106
-
107
- - Session name
108
- - Current window
109
- - Host name
110
- - Date and time
111
-
112
- ## Adding Screenshots
113
-
114
- To contribute screenshots:
115
-
116
- 1. Take a screenshot of your terminal.
117
- 2. Save it as a PNG in `docs/themes/`.
118
- 3. Add a reference in this file.
119
- 4. Submit a PR.
120
-
121
- Recommended screenshot size: 1920x1080 or 2560x1440.
@@ -1,71 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Script Catalog
6
-
7
- Exhaustive catalog of user-facing executables installed from `dot_local/bin/`.
8
-
9
- ## Core and dotfiles workflows
10
-
11
- | Command | Description |
12
- |---------|-------------|
13
- | `dot` | Primary dotfiles command-line interface |
14
- | `dot-ai` | Legacy AI query wrapper for local dotfiles context |
15
- | `dot-bootstrap` | Deterministic bootstrap entrypoint for fresh machines |
16
- | `dot-launch-or-focus` | Launch or focus desktop applications and sessions |
17
- | `dot-load-benchmark` | Measure heavy shell layer readiness in a fresh shell |
18
- | `dot-load-benchmark-pty` | PTY-based readiness benchmark for shell prewarm flows |
19
- | `dot-theme-sync` | Synchronize managed theme state across tools |
20
- | `update` | Update the managed dotfiles environment |
21
- | `tour` | Interactive guided tour of the dotfiles environment |
22
-
23
- ## AI and git helpers
24
-
25
- | Command | Description |
26
- |---------|-------------|
27
- | `ai-update` | Update AI-related CLIs, runtimes, and supporting tools |
28
- | `ai_core` | Local AI runtime wrapper and provider fallback core |
29
- | `git-ai-commit` | Generate commit messages from staged changes with AI |
30
- | `git-ai-diff` | Review diffs and change sets with AI assistance |
31
- | `antigravity` | Safe wrapper for Antigravity updater execution |
32
-
33
- ## Clipboard, encoding, and data inspection
34
-
35
- | Command | Description |
36
- |---------|-------------|
37
- | `b64` | Base64 encode and decode utility |
38
- | `bm` | Directory bookmark manager |
39
- | `cb` | Cross-platform clipboard helper |
40
- | `dtags` | Inspect Docker image tags |
41
- | `epoch` | Convert between human time and Unix epoch values |
42
- | `extract` | Archive extraction helper |
43
- | `hash` | Compute hashes for strings or files |
44
- | `hashsum` | Cross-platform cryptographic hash calculator |
45
- | `hex` | Hex dump and transformation helper |
46
- | `jsonv` | JSON validator and formatter |
47
- | `jwt` | JWT decoder and payload inspector |
48
- | `regex` | Regular expression testing helper |
49
- | `uuid` | UUID generation utility |
50
- | `yamlv` | YAML validator |
51
-
52
- ## System, network, and session tools
53
-
54
- | Command | Description |
55
- |---------|-------------|
56
- | `gd` | Git diff workflow helper |
57
- | `gbd` | Git branch deletion workflow helper |
58
- | `gl` | Git log workflow helper |
59
- | `kill-port` | Terminate processes bound to a TCP or UDP port |
60
- | `lorem` | Lorem ipsum text generator |
61
- | `monitor` | System monitor and environment inspection helper |
62
- | `myip` | Show public and local IP addresses |
63
- | `notify` | Cross-platform desktop notification helper |
64
- | `open` | Cross-platform opener for files, URLs, and paths |
65
- | `pw` | Password and secret helper utility |
66
- | `rec-start` | Start shell session recording |
67
- | `rec-stop` | Stop shell session recording |
68
- | `start-niri` | Launch a Niri compositor session |
69
- | `tmux-sessionizer` | Fuzzy tmux session and project switcher |
70
- | `up` | Jump up directory levels quickly |
71
- | `win` | WSL bridge for launching Windows programs |
@@ -1,80 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Support Matrix
6
-
7
- Tested platform and tool combinations for the dotfiles distribution.
8
-
9
- ## Operating Systems
10
-
11
- | OS | Version | Architecture | Status | Notes |
12
- |----|---------|-------------|--------|-------|
13
- | macOS | 14+ (Sonoma) | aarch64 (Apple Silicon) | Supported | Primary dev platform |
14
- | macOS | 14+ (Sonoma) | x86_64 | Supported | CI tested |
15
- | Ubuntu | 22.04+ | x86_64 | Supported | CI tested |
16
- | Ubuntu | 22.04+ | aarch64 | Supported | Tested manually |
17
- | Debian | 12+ | x86_64 | Supported | Compatible with Ubuntu |
18
- | Fedora | 39+ | x86_64 | Community | Not CI tested |
19
- | Arch Linux | Rolling | x86_64 | Community | Not CI tested |
20
- | WSL2 | Ubuntu 22.04+ | x86_64 | Supported | Clipboard bridge included |
21
- | NixOS | 23.11+ | x86_64/aarch64 | Supported | Via Nix Flake |
22
-
23
- ## Shells
24
-
25
- | Shell | Min Version | Status | Parity Tier | Notes |
26
- |-------|-------------|--------|-------------|-------|
27
- | Zsh | 5.8+ | Supported | Tier 1 (Full) | Default shell, all features |
28
- | Bash | 5.0+ | Supported | Tier 1 (Full) | Shared logic core |
29
- | Fish | 4.0+ | Supported | Tier 1 (Core CLI) | Native `dot`, `dm`, `da`, `dmc`, `datt`, and cached alias bridge |
30
- | Nushell | 0.98+ | Supported | Tier 1 (Core CLI) | Native `d`, `dm`, `da`, `dmc`, `datt` aliases for core workflows |
31
- | PowerShell | 7.5+ | Supported | Tier 1 (Core CLI) | Managed profile, `dot` wrapper, modern listing helpers, and attestation aliases |
32
-
33
- ## Terminal Emulators
34
-
35
- | Terminal | Status | Notes |
36
- |----------|--------|-------|
37
- | Ghostty | Supported | Primary, custom config in `dot_config/ghostty/` |
38
- | iTerm2 | Supported | macOS only; auto-installed Dynamic Profile via `run_onchange_22-iterm2-profile.sh.tmpl` (pick "dotfiles" profile in iTerm2) |
39
- | Alacritty | Supported | Theme-driven, config in `dot_config/alacritty/` |
40
- | Kitty | Supported | Theme-driven, config in `dot_config/kitty/` |
41
- | WezTerm | Supported | Theme-driven, config in `dot_config/wezterm/` |
42
- | Foot | Supported | Linux/Wayland, gated by `features.foot`, config in `dot_config/foot/` |
43
- | Warp | Supported | Theme-driven, deploys to `~/.warp/themes/dotfiles.yaml`; pick "dotfiles" in Warp Settings → Appearance → Themes |
44
- | Windows Terminal | Supported | WSL2 profile |
45
- | tmux | Supported | Config in `dot_config/tmux/` |
46
-
47
- ## Key Tools
48
-
49
- | Tool | Min Version | Required | Notes |
50
- |------|-------------|----------|-------|
51
- | chezmoi | 2.40+ | Yes | Core dotfiles manager |
52
- | git | 2.35+ | Yes | Version control |
53
- | curl | 7.0+ | Yes | Bootstrap installer |
54
- | Neovim | 0.11.2+ | No | IDE config, lazy.nvim plugins |
55
- | Starship | 1.17+ | No | Cross-shell prompt |
56
- | mise | 2024.1+ | No | Tool version manager |
57
- | Nix | 2.18+ | No | Reproducible environments |
58
- | fzf | 0.48+ | No | Fuzzy finder |
59
- | zoxide | 0.9+ | No | Smart directory jumper |
60
- | atuin | 18.0+ | No | Shell history sync |
61
- | pueue | 3.0+ | No | Background task manager |
62
-
63
- ## CI Environments
64
-
65
- | Environment | Workflow | Platform | Status |
66
- |------------|----------|----------|--------|
67
- | GitHub Actions (Linux) | `ci.yml` | ubuntu-latest | Tested on every PR |
68
- | GitHub Actions (macOS) | `ci.yml` | macos-latest | Tested on every PR |
69
- | GitHub Actions (Enforced) | `ci-enforced.yml` | ubuntu-latest | Stricter checks |
70
- | Devcontainer | `devcontainer-prebuild.yml` | ubuntu-latest | Pre-built images |
71
-
72
- ## Known Limitations
73
-
74
- | Platform | Limitation | Workaround |
75
- |----------|-----------|------------|
76
- | WSL2 | No native clipboard | `clip.exe`/`powershell.exe` bridge aliases |
77
- | NixOS | System packages conflict | Use Nix Flake exclusively |
78
- | Fish < 4.0 | No keyboard protocol | Upgrade to Fish 4.x |
79
- | Nushell | Complex aliases skipped | Core `dot` workflow remains first-class |
80
- | macOS Intel | Homebrew path differs | Template handles `/usr/local` vs `/opt/homebrew` |
@@ -1,117 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Themes
6
-
7
- Themes are auto-generated from wallpapers. K-Means clustering in CIELAB color space extracts dominant colors. Every theme is WCAG AAA compliant.
8
-
9
- There is no fixed theme catalog. The available themes depend on which wallpapers are present on your system. Run `dot theme list` to see what's discovered.
10
-
11
- ## Source of truth
12
-
13
- Wallpapers — not `themes.toml` — are the source of truth. The system discovers wallpapers from two locations:
14
-
15
- 1. **System wallpapers** — platform-native (macOS `/System/Library/Desktop Pictures/`, Linux `/usr/share/backgrounds/`)
16
- 2. **Custom wallpapers** — `~/Pictures/Wallpapers/` (custom overrides system on name collision)
17
-
18
- `extract-theme.py` runs K-Means++ in CIELAB on each wallpaper, generates a 16-color terminal palette plus UI/app mappings, and enforces WCAG AAA contrast. `rebuild-themes.sh` orchestrates discovery → parallel extraction → assembly into `.chezmoidata/themes.toml` (cached in `~/.cache/dotfiles/themes/`, regenerated only when wallpapers change).
19
-
20
- `.chezmoidata/themes.toml` is a **generated artifact**. Do not edit it directly.
21
-
22
- ## Quick Start
23
-
24
- ```bash
25
- dot theme # Interactive picker (paired wallpaper themes only)
26
- dot theme tahoe-dark # Switch directly
27
- dot theme toggle # Swap dark↔light within current family
28
- dot theme rebuild # Regenerate from current wallpapers
29
- dot theme list # Show paired themes with System/Custom source
30
- ```
31
-
32
- ## Runtime Apply Behavior
33
-
34
- `dot theme` writes the selected theme to `.chezmoidata.toml`, regenerates target configs through chezmoi, then attempts live reloads for running applications.
35
-
36
- - **macOS**:
37
- - Applies system Light/Dark appearance via `osascript` (`System Events`)
38
- - Applies the wallpaper's derived accent color via `defaults write -g AppleAccentColor` and `AppleHighlightColor`
39
- - Forces UI refresh via `killall cfprefsd SystemUIServer Dock "System Settings"`
40
- - Sets desktop wallpaper across all displays via `osascript`
41
- - **Linux**:
42
- - Applies desktop color scheme through `gsettings`
43
- - Sets `picture-uri` and `picture-uri-dark` separately
44
- - Auto-converts HEIC → PNG via `magick`/`heif-convert`/`convert`
45
- - DMS (Dank Material Shell) integration when present
46
-
47
- ## Theme Naming
48
-
49
- Themes follow the pattern `<wallpaper-name>-<dark|light>`. The wallpaper filename (lowercased, hyphenated) becomes the theme family.
50
-
51
- Examples (depend on what's present on your system):
52
-
53
- | Wallpaper file | Generated themes |
54
- |:---|:---|
55
- | `~/Pictures/Wallpapers/tahoe.heic` (dynamic HEIC, 2 frames) | `tahoe-dark`, `tahoe-light` |
56
- | `/System/Library/Desktop Pictures/Sonoma.heic` | `sonoma-dark`, `sonoma-light` |
57
- | `/System/Library/Desktop Pictures/.thumbnails/Monterey Dark.heic` + `Monterey Light.heic` | `monterey-dark`, `monterey-light` |
58
-
59
- Only paired themes (with both dark and light variants) appear in `dot theme` and `dot theme list`.
60
-
61
- ## Custom Wallpapers — Dynamic HEIC
62
-
63
- Custom wallpapers in `~/Pictures/Wallpapers/` ship as Apple-compatible dynamic HEIC files: a single `.heic` containing both light and dark images, tagged with `apple_desktop:apr` XMP metadata. macOS auto-switches the displayed image based on appearance mode.
64
-
65
- To merge separate dark + light pairs into a single dynamic HEIC:
66
-
67
- ```bash
68
- bash scripts/theme/merge-wallpaper.sh # merge all pairs in ~/Pictures/Wallpapers/
69
- bash scripts/theme/merge-wallpaper.sh tahoe # merge a specific family
70
- bash scripts/theme/merge-wallpaper.sh --dry-run # preview only
71
- ```
72
-
73
- ## Generated Theme Schema
74
-
75
- Each theme block in the generated `themes.toml` follows this schema:
76
-
77
- ```toml
78
- [themes.example-dark]
79
- mode = "dark" # "dark" or "light"
80
- family = "example" # groups dark/light variants
81
- macos_accent = 4 # derived from accent hue (0-6, -1=Graphite)
82
- wallpaper = "/path/to/wallpaper.heic"
83
- source = "custom" # "custom" or "system"
84
-
85
- [themes.example-dark.term]
86
- bg, fg, cursor, cursor_text, sel_bg, sel_fg
87
- c0 .. c15 # 16 ANSI colors
88
-
89
- [themes.example-dark.ui]
90
- accent, accent_text # white text always 7:1 against accent
91
- error, warning, success, info
92
- panel, border # contrast-bound (1.03-2.0 for panel, 1.08-3.5 for border)
93
-
94
- [themes.example-dark.app]
95
- nvim, nvim_style, lualine
96
- gtk_theme, gtk_icon, gnome_shell, gnome_gtk
97
- vscode, vscode_dark, vscode_light
98
- cat_wallpaper
99
- starship_palette
100
- ```
101
-
102
- ## Adding a Theme
103
-
104
- To add a new theme, add a wallpaper — there are no manual TOML edits.
105
-
106
- 1. Drop a wallpaper into `~/Pictures/Wallpapers/`
107
- 2. (Optional) Use `merge-wallpaper.sh` to combine separate dark/light files into a single dynamic HEIC
108
- 3. Run `dot theme rebuild` to regenerate `themes.toml` (parallel K-Means extraction, ~1-4s per wallpaper)
109
- 4. Run `dot theme <name>` to test
110
- 5. Verify with `chezmoi diff` before applying
111
-
112
- For best results, wallpapers should be 6016×6016 dynamic HEIC with ~1.6× brightness ratio between dark and light variants (golden ratio). Lower-resolution images are auto-resized; non-paired wallpapers are skipped from the picker.
113
-
114
- ## See Also
115
-
116
- - [Theming Guide](../guides/THEMING.md) — full pipeline documentation
117
- - [Utilities](UTILS.md) — `dot theme` command reference