@sebastienrousseau/dotfiles 0.2.520 → 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 (323) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/LICENSE-MIT +21 -0
  4. package/README.md +43 -37
  5. package/install.sh +76 -10
  6. package/package.json +7 -7
  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/ARCHITECTURE.md +0 -117
  12. package/docs/CNAME +0 -1
  13. package/docs/CONFIG_STRATEGY.md +0 -124
  14. package/docs/COPYRIGHT +0 -7
  15. package/docs/ECOSYSTEM.md +0 -220
  16. package/docs/GOLD-STANDARD-AUDIT.md +0 -352
  17. package/docs/GOVERNANCE.md +0 -98
  18. package/docs/MAINTAINERS.md +0 -41
  19. package/docs/MINIMUM-TOOLCHAIN.md +0 -100
  20. package/docs/NAMING_CONVENTIONS.md +0 -102
  21. package/docs/OPENCODE.md +0 -127
  22. package/docs/README.md +0 -84
  23. package/docs/STRUCTURE.md +0 -102
  24. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
  25. package/docs/adr/ADR-002-shell-performance.md +0 -130
  26. package/docs/adr/ADR-003-security-first.md +0 -158
  27. package/docs/adr/ADR-004-cli-architecture.md +0 -171
  28. package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
  29. package/docs/adr/ADR-006-shell-selection.md +0 -124
  30. package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
  31. package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
  32. package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
  33. package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
  34. package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
  35. package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
  36. package/docs/adr/README.md +0 -40
  37. package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
  38. package/docs/architecture/ARCHITECTURE.md +0 -20
  39. package/docs/architecture/INTEROP.md +0 -44
  40. package/docs/architecture/REPO_LAYOUT.md +0 -241
  41. package/docs/architecture/WALKTHROUGH.md +0 -86
  42. package/docs/architecture/fleet-deployment.md +0 -77
  43. package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
  44. package/docs/archive/LEGACY_ROADMAP.md +0 -6
  45. package/docs/archive/MILESTONE_v0.2.493.md +0 -47
  46. package/docs/archive/PLAN.md +0 -199
  47. package/docs/archive/REPO_AUDIT.md +0 -31
  48. package/docs/articles/.pages +0 -6
  49. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
  50. package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
  51. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
  52. package/docs/articles/index.md +0 -36
  53. package/docs/guides/INSTALL.md +0 -144
  54. package/docs/guides/MACOS_ICLOUD_SYMLINKS.md +0 -121
  55. package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
  56. package/docs/guides/THEMING.md +0 -230
  57. package/docs/guides/TROUBLESHOOTING.md +0 -176
  58. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
  59. package/docs/index.md +0 -132
  60. package/docs/interop/A2A.md +0 -39
  61. package/docs/interop/POWERSHELL.md +0 -102
  62. package/docs/manual/00-introduction.md +0 -89
  63. package/docs/manual/01-concepts/01-architecture.md +0 -138
  64. package/docs/manual/01-concepts/02-trust-model.md +0 -183
  65. package/docs/manual/01-concepts/03-theme-engine.md +0 -186
  66. package/docs/manual/01-concepts/04-fleet.md +0 -148
  67. package/docs/manual/01-concepts/05-self-healing.md +0 -204
  68. package/docs/manual/02-tutorials/01-first-install.md +0 -197
  69. package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
  70. package/docs/manual/02-tutorials/03-create-profile.md +0 -244
  71. package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
  72. package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
  73. package/docs/manual/03-reference/01-dot-cli.md +0 -475
  74. package/docs/manual/03-reference/02-config-files.md +0 -265
  75. package/docs/manual/03-reference/03-environment.md +0 -124
  76. package/docs/manual/03-reference/04-templates.md +0 -190
  77. package/docs/manual/03-reference/05-feature-flags.md +0 -187
  78. package/docs/manual/04-cookbook/01-recipes.md +0 -285
  79. package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
  80. package/docs/manual/04-cookbook/03-faq.md +0 -175
  81. package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
  82. package/docs/manual/05-appendices/B-security-checklist.md +0 -85
  83. package/docs/manual/05-appendices/C-glossary.md +0 -40
  84. package/docs/manual/05-appendices/D-bibliography.md +0 -58
  85. package/docs/manual/05-appendices/E-license.md +0 -38
  86. package/docs/manual/_toc.yml +0 -58
  87. package/docs/manual/command-index.md +0 -175
  88. package/docs/manual/concept-index.md +0 -170
  89. package/docs/manual/index.md +0 -66
  90. package/docs/migration/README.md +0 -81
  91. package/docs/migration/from-bare-git-repo.md +0 -156
  92. package/docs/migration/from-gnu-stow.md +0 -165
  93. package/docs/migration/from-plain-chezmoi.md +0 -148
  94. package/docs/migration/from-yadm.md +0 -187
  95. package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
  96. package/docs/operations/ATTESTATION.md +0 -44
  97. package/docs/operations/CI_CADENCE.md +0 -107
  98. package/docs/operations/CI_COMPOSITES.md +0 -156
  99. package/docs/operations/COMPLETIONS.md +0 -123
  100. package/docs/operations/COVERAGE.md +0 -204
  101. package/docs/operations/DRIFT.md +0 -107
  102. package/docs/operations/HARD_AUDIT_2026.md +0 -631
  103. package/docs/operations/MAINTENANCE.md +0 -63
  104. package/docs/operations/MANIFEST.md +0 -127
  105. package/docs/operations/MIGRATION.md +0 -109
  106. package/docs/operations/OPERATIONS.md +0 -188
  107. package/docs/operations/PERFORMANCE.md +0 -133
  108. package/docs/operations/PERFORMANCE_BUDGETS.md +0 -196
  109. package/docs/operations/REGISTRY.md +0 -90
  110. package/docs/operations/RELEASE_PIPELINE.md +0 -128
  111. package/docs/operations/RELIABILITY.md +0 -122
  112. package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
  113. package/docs/operations/ROADMAP.md +0 -10
  114. package/docs/operations/ROADMAP_2026.md +0 -7
  115. package/docs/operations/ROADMAP_V0_2_503.md +0 -10
  116. package/docs/operations/TESTING.md +0 -216
  117. package/docs/operations/TRACEABILITY.md +0 -44
  118. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
  119. package/docs/operations/VERSION_SYNC.md +0 -393
  120. package/docs/packaging.md +0 -222
  121. package/docs/reference/ALIASES.md +0 -131
  122. package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
  123. package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
  124. package/docs/reference/FEATURE-MATRIX.md +0 -646
  125. package/docs/reference/FEATURES.md +0 -66
  126. package/docs/reference/FONTS.md +0 -112
  127. package/docs/reference/POWERSHELL_PARITY.md +0 -82
  128. package/docs/reference/PROFILES.md +0 -69
  129. package/docs/reference/SCREENSHOTS.md +0 -121
  130. package/docs/reference/SCRIPTS.md +0 -71
  131. package/docs/reference/SUPPORT_MATRIX.md +0 -80
  132. package/docs/reference/THEMES.md +0 -117
  133. package/docs/reference/TOOLS.md +0 -110
  134. package/docs/reference/UTILS.md +0 -243
  135. package/docs/registry.json +0 -6
  136. package/docs/schema/dot-env-v1.json +0 -110
  137. package/docs/schema/dot-registry-v1.json +0 -33
  138. package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
  139. package/docs/security/AUDIT_BYPASS.md +0 -103
  140. package/docs/security/AUTOMATION_SECRETS.md +0 -26
  141. package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
  142. package/docs/security/CI_PINNING.md +0 -129
  143. package/docs/security/COMMIT_SIGNING.md +0 -138
  144. package/docs/security/COMPLIANCE.md +0 -458
  145. package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
  146. package/docs/security/DISCLOSURE.md +0 -130
  147. package/docs/security/ENCRYPTION.md +0 -57
  148. package/docs/security/FMEA.md +0 -159
  149. package/docs/security/FUZZING.md +0 -209
  150. package/docs/security/HISTORY_FILTERING.md +0 -132
  151. package/docs/security/INCIDENT_RESPONSE.md +0 -579
  152. package/docs/security/INSTALL_VERIFICATION.md +0 -122
  153. package/docs/security/KEYS.md +0 -49
  154. package/docs/security/KEY_ROTATION.md +0 -303
  155. package/docs/security/MCP_POLICY.md +0 -78
  156. package/docs/security/POLICY_RELEASES.md +0 -37
  157. package/docs/security/README.md +0 -28
  158. package/docs/security/SCORECARD.md +0 -195
  159. package/docs/security/SECRETS.md +0 -158
  160. package/docs/security/SECURITY.md +0 -45
  161. package/docs/security/SECURITY_CHECKLIST.md +0 -55
  162. package/docs/security/SHELL_EXEMPTIONS.md +0 -145
  163. package/docs/security/SOUP_REGISTER.md +0 -36
  164. package/docs/security/THREAT_MODEL.md +0 -130
  165. package/docs/security/VERIFICATION_VALIDATION.md +0 -228
  166. package/docs/security/VERIFY_RELEASE.md +0 -201
  167. package/docs/security/security-pubkey.asc +0 -15
  168. package/docs/stylesheets/extra.css +0 -444
  169. package/docs/themes/README.md +0 -10
  170. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
  171. package/docs/themes/hero-shot.svg +0 -78
  172. package/scripts/README.md +0 -123
  173. package/scripts/ci/check-copyright-headers.sh +0 -8
  174. package/scripts/ci/check-shell-preamble.sh +0 -8
  175. package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
  176. package/scripts/demo/record.sh +0 -43
  177. package/scripts/diagnostics/a2a-conformance.sh +0 -163
  178. package/scripts/diagnostics/alias-governance.sh +0 -165
  179. package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
  180. package/scripts/diagnostics/aliases-manifest.sh +0 -77
  181. package/scripts/diagnostics/attest-verify.sh +0 -147
  182. package/scripts/diagnostics/benchmark.sh +0 -408
  183. package/scripts/diagnostics/conflicts.sh +0 -73
  184. package/scripts/diagnostics/doctor-unified.sh +0 -43
  185. package/scripts/diagnostics/doctor.sh +0 -797
  186. package/scripts/diagnostics/drift-dashboard.sh +0 -203
  187. package/scripts/diagnostics/health.sh +0 -656
  188. package/scripts/diagnostics/history-analysis.sh +0 -86
  189. package/scripts/diagnostics/mcp-doctor.sh +0 -582
  190. package/scripts/diagnostics/perf.sh +0 -453
  191. package/scripts/diagnostics/scorecard.sh +0 -120
  192. package/scripts/diagnostics/secret-governance.sh +0 -65
  193. package/scripts/diagnostics/security-score.sh +0 -467
  194. package/scripts/diagnostics/smoke-test.sh +0 -88
  195. package/scripts/diagnostics/snapshot.sh +0 -90
  196. package/scripts/diagnostics/verify.sh +0 -108
  197. package/scripts/diagnostics/verify_state.sh +0 -73
  198. package/scripts/diagnostics/version-locks.sh +0 -94
  199. package/scripts/diagnostics/workstation-attestation.sh +0 -212
  200. package/scripts/dot/commands/agent.sh +0 -535
  201. package/scripts/dot/commands/agents.sh +0 -352
  202. package/scripts/dot/commands/ai.sh +0 -600
  203. package/scripts/dot/commands/aliases.sh +0 -277
  204. package/scripts/dot/commands/appearance.sh +0 -110
  205. package/scripts/dot/commands/completion.sh +0 -171
  206. package/scripts/dot/commands/core.sh +0 -217
  207. package/scripts/dot/commands/diagnostics.sh +0 -265
  208. package/scripts/dot/commands/env-emit.sh +0 -203
  209. package/scripts/dot/commands/fleet.sh +0 -711
  210. package/scripts/dot/commands/init.sh +0 -185
  211. package/scripts/dot/commands/lint.sh +0 -208
  212. package/scripts/dot/commands/manual.sh +0 -169
  213. package/scripts/dot/commands/meta.sh +0 -438
  214. package/scripts/dot/commands/patterns.sh +0 -55
  215. package/scripts/dot/commands/registry.sh +0 -455
  216. package/scripts/dot/commands/restore.sh +0 -232
  217. package/scripts/dot/commands/secrets.sh +0 -296
  218. package/scripts/dot/commands/security.sh +0 -102
  219. package/scripts/dot/commands/tools.sh +0 -570
  220. package/scripts/dot/data/alias-deprecations.tsv +0 -2
  221. package/scripts/dot/powershell/Dot.psm1 +0 -319
  222. package/scripts/fonts/install-nerd-fonts.sh +0 -75
  223. package/scripts/fonts/patch-fonts.sh +0 -36
  224. package/scripts/git-hooks/install.sh +0 -12
  225. package/scripts/git-hooks/pre-commit +0 -12
  226. package/scripts/git-hooks/pre-commit-audit.sh +0 -146
  227. package/scripts/git-hooks/pre-push +0 -105
  228. package/scripts/git-hooks/prepare-commit-msg +0 -29
  229. package/scripts/lib/secrets_provider.sh +0 -200
  230. package/scripts/nvim/headless-upgrade.lua +0 -81
  231. package/scripts/ops/ai-setup.sh +0 -71
  232. package/scripts/ops/bundle.sh +0 -104
  233. package/scripts/ops/chaos.sh +0 -50
  234. package/scripts/ops/chezmoi-apply.sh +0 -333
  235. package/scripts/ops/chezmoi-diff.sh +0 -16
  236. package/scripts/ops/chezmoi-remove.sh +0 -46
  237. package/scripts/ops/chezmoi-update.sh +0 -67
  238. package/scripts/ops/heal-chezmoi.sh +0 -87
  239. package/scripts/ops/heal-system.sh +0 -129
  240. package/scripts/ops/heal-tools.sh +0 -297
  241. package/scripts/ops/heal.sh +0 -223
  242. package/scripts/ops/post-apply-repair.sh +0 -107
  243. package/scripts/ops/prewarm.sh +0 -128
  244. package/scripts/ops/release.sh +0 -262
  245. package/scripts/ops/rollback.sh +0 -613
  246. package/scripts/ops/setup.sh +0 -138
  247. package/scripts/ops/teleport.sh +0 -34
  248. package/scripts/qa/check-feature-matrix.sh +0 -296
  249. package/scripts/qa/check-version-consistency.sh +0 -12
  250. package/scripts/qa/coverage-baseline.sh +0 -61
  251. package/scripts/qa/docs-coverage.sh +0 -118
  252. package/scripts/qa/examples-coverage.sh +0 -94
  253. package/scripts/qa/powershell-contract.ps1 +0 -95
  254. package/scripts/qa/reliability-audit.sh +0 -139
  255. package/scripts/qa/scorecard-snapshot.sh +0 -128
  256. package/scripts/qa/traceability-coverage.sh +0 -124
  257. package/scripts/qa/validate-examples.sh +0 -90
  258. package/scripts/qa/wsl-contract.sh +0 -12
  259. package/scripts/secrets/age-init.sh +0 -82
  260. package/scripts/secrets/create-secrets-file.sh +0 -46
  261. package/scripts/secrets/encrypt-ssh-key.sh +0 -44
  262. package/scripts/security/backup.sh +0 -58
  263. package/scripts/security/check-disclosure-key-expiry.sh +0 -111
  264. package/scripts/security/dns-doh.sh +0 -52
  265. package/scripts/security/encryption-check.sh +0 -55
  266. package/scripts/security/enforce-policies.sh +0 -552
  267. package/scripts/security/firewall.sh +0 -91
  268. package/scripts/security/lock-configs.sh +0 -67
  269. package/scripts/security/lock-screen.sh +0 -56
  270. package/scripts/security/manage-secrets.sh +0 -429
  271. package/scripts/security/ssh-cert.sh +0 -204
  272. package/scripts/security/telemetry-kill.sh +0 -51
  273. package/scripts/security/usb-safety.sh +0 -52
  274. package/scripts/theme/apply-gnome-theme.sh +0 -333
  275. package/scripts/theme/extract-heic-frames.sh +0 -115
  276. package/scripts/theme/extract-theme.py +0 -1020
  277. package/scripts/theme/install-boot-logo.sh +0 -63
  278. package/scripts/theme/install-catppuccin-themes.sh +0 -371
  279. package/scripts/theme/install-cursors.sh +0 -26
  280. package/scripts/theme/install-file-icons.sh +0 -27
  281. package/scripts/theme/install-grub-theme.sh +0 -62
  282. package/scripts/theme/install-lock-icon.sh +0 -31
  283. package/scripts/theme/merge-wallpaper.sh +0 -146
  284. package/scripts/theme/rebuild-themes.sh +0 -603
  285. package/scripts/theme/switch.sh +0 -476
  286. package/scripts/theme/wallpaper-rotate.sh +0 -137
  287. package/scripts/theme/wallpaper-sync.sh +0 -690
  288. package/scripts/tools/cmatrix.sh +0 -22
  289. package/scripts/tools/detect-collisions.py +0 -103
  290. package/scripts/tools/emoji-picker.sh +0 -49
  291. package/scripts/tools/figlet-banner.sh +0 -19
  292. package/scripts/tools/log-rotate.sh +0 -31
  293. package/scripts/tools/lolcat-wrap.sh +0 -20
  294. package/scripts/tools/pipes.sh +0 -49
  295. package/scripts/tuning/linux.sh +0 -186
  296. package/scripts/tuning/macos.sh +0 -56
  297. package/scripts/uninstall.sh +0 -86
  298. package/scripts/verify-release-versions +0 -156
  299. package/scripts/version-sync.sh +0 -714
  300. package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
  301. package/templates/chezmoi-data/mac-m1.toml.example +0 -16
  302. package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
  303. package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
  304. package/templates/projects/go/.github/workflows/ci.yml +0 -31
  305. package/templates/projects/go/README.md +0 -7
  306. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
  307. package/templates/projects/go/go.mod +0 -3
  308. package/templates/projects/go/go.sum +0 -0
  309. package/templates/projects/molecule/README.md +0 -7
  310. package/templates/projects/molecule/converge.yml +0 -7
  311. package/templates/projects/molecule/molecule.yml +0 -16
  312. package/templates/projects/node/.github/workflows/ci.yml +0 -30
  313. package/templates/projects/node/README.md +0 -7
  314. package/templates/projects/node/package-lock.json +0 -12
  315. package/templates/projects/node/package.json +0 -10
  316. package/templates/projects/node/src/index.js +0 -3
  317. package/templates/projects/packer/README.md +0 -15
  318. package/templates/projects/packer/main.pkr.hcl +0 -15
  319. package/templates/projects/python/.github/workflows/ci.yml +0 -34
  320. package/templates/projects/python/README.md +0 -7
  321. package/templates/projects/python/pyproject.toml +0 -25
  322. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
  323. package/templates/projects/python/tests/test_basic.py +0 -3
@@ -1,63 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- set -euo pipefail
5
-
6
- logo_path="${DOTFILES_BOOT_LOGO:-$HOME/.config/dotfiles/boot/logo.png}"
7
- APPLY=0
8
-
9
- for arg in "$@"; do
10
- case "$arg" in
11
- --apply) APPLY=1 ;;
12
- esac
13
- done
14
-
15
- if [[ "$(uname -s)" != "Linux" ]]; then
16
- echo "Boot logo customization is Linux-only." >&2
17
- exit 0
18
- fi
19
-
20
- if [[ ! -f "$logo_path" ]]; then
21
- echo "Boot logo not found: $logo_path" >&2
22
- echo "Place a PNG at that path or set DOTFILES_BOOT_LOGO." >&2
23
- exit 1
24
- fi
25
-
26
- if [[ $APPLY -ne 1 ]]; then
27
- echo "Dry run. Use --apply to install the boot logo." >&2
28
- exit 0
29
- fi
30
-
31
- if [[ $EUID -ne 0 ]]; then
32
- echo "Please run with sudo for boot logo install." >&2
33
- exit 1
34
- fi
35
-
36
- if command -v plymouth-set-default-theme >/dev/null; then
37
- theme_dir="/usr/share/plymouth/themes/dotfiles"
38
- mkdir -p "$theme_dir"
39
- cp "$logo_path" "$theme_dir/logo.png"
40
- cat >"$theme_dir/dotfiles.plymouth" <<PLY
41
- [Plymouth Theme]
42
- Name=Dotfiles
43
- Description=Dotfiles boot splash
44
- ModuleName=script
45
-
46
- [script]
47
- ImageDir=$theme_dir
48
- ScriptFile=$theme_dir/dotfiles.script
49
- PLY
50
-
51
- cat >"$theme_dir/dotfiles.script" <<'SCRIPT'
52
- # Simple Plymouth script
53
- image = Image("logo.png");
54
- image.SetPosition(Window.GetX() + Window.GetWidth()/2 - image.GetWidth()/2,
55
- Window.GetY() + Window.GetHeight()/2 - image.GetHeight()/2);
56
- SCRIPT
57
-
58
- plymouth-set-default-theme -R dotfiles
59
- echo "Boot logo installed via Plymouth."
60
- else
61
- echo "Plymouth not found. Install plymouth to apply boot logo." >&2
62
- exit 1
63
- fi
@@ -1,371 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- ## Catppuccin Theme Installer — Install Catppuccin themes for GNOME.
5
- ##
6
- ## Downloads and installs GTK themes, icon themes, cursor themes,
7
- ## GNOME Shell themes, and wallpapers from Catppuccin repositories.
8
- ##
9
- ## # Requirements
10
- ## - git: For cloning theme repositories
11
- ## - curl: For downloading assets
12
- ## - gnome-tweaks (optional): For applying themes
13
- ## - gnome-extensions (optional): For shell themes
14
- ##
15
- ## # Usage
16
- ## install-catppuccin-themes.sh # Install all components
17
- ## install-catppuccin-themes.sh gtk # GTK themes only
18
- ## install-catppuccin-themes.sh icons # Icon themes only
19
- ## install-catppuccin-themes.sh cursors # Cursor themes only
20
- ## install-catppuccin-themes.sh shell # GNOME Shell themes only
21
- ## install-catppuccin-themes.sh wallpapers # Wallpapers only
22
- ## install-catppuccin-themes.sh refresh # Refresh theme cache
23
- ##
24
- ## # Platform Notes
25
- ## - Linux/GNOME: Full support
26
- ## - Other DEs: GTK themes may work, shell themes require GNOME
27
-
28
- set -euo pipefail
29
-
30
- THEME_DIR="$HOME/.themes"
31
- ICON_DIR="$HOME/.icons"
32
- TEMP_DIR="$(umask 077 && mktemp -d)"
33
-
34
- # Colors for output (respect NO_COLOR: https://no-color.org)
35
- if [[ -z "${NO_COLOR:-}" ]] && [[ -t 1 ]]; then
36
- RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m'
37
- BLUE='\033[0;34m' NC='\033[0m'
38
- else
39
- RED='' GREEN='' YELLOW='' BLUE='' NC=''
40
- fi
41
-
42
- log() {
43
- printf '%b\n' "${BLUE}[INFO]${NC} $1"
44
- }
45
-
46
- warn() {
47
- printf '%b\n' "${YELLOW}[WARN]${NC} $1"
48
- }
49
-
50
- error() {
51
- printf '%b\n' "${RED}[ERROR]${NC} $1"
52
- }
53
-
54
- success() {
55
- printf '%b\n' "${GREEN}[SUCCESS]${NC} $1"
56
- }
57
-
58
- # Create directories
59
- mkdir -p "$THEME_DIR" "$ICON_DIR"
60
- trap 'rm -rf "$TEMP_DIR"' EXIT
61
-
62
- # Check if git is available
63
- if ! command -v git &>/dev/null; then
64
- error "git is required but not installed."
65
- exit 1
66
- fi
67
-
68
- # Function to install GTK themes
69
- install_gtk_themes() {
70
- log "Installing Catppuccin GTK themes..."
71
-
72
- cd "$TEMP_DIR" || return 1
73
-
74
- if [ ! -d "catppuccin-gtk" ]; then
75
- git clone https://github.com/catppuccin/gtk.git catppuccin-gtk
76
- else
77
- git -C catppuccin-gtk pull
78
- fi
79
-
80
- cd catppuccin-gtk || return 1
81
-
82
- # Install all variants
83
- for variant in Latte Frappe Macchiato Mocha; do
84
- for accent in Blue Lavender; do # Blue as primary, Lavender as alternative
85
- theme_name="Catppuccin-$variant-Standard-$accent"
86
- if [ "$variant" = "Latte" ]; then
87
- theme_name="$theme_name-Light"
88
- else
89
- theme_name="$theme_name-Dark"
90
- fi
91
-
92
- log "Installing $theme_name..."
93
- if [ -d "themes/$theme_name" ]; then
94
- cp -r "themes/$theme_name" "$THEME_DIR/"
95
- success "Installed $theme_name"
96
- else
97
- warn "Theme $theme_name not found in repository"
98
- fi
99
- done
100
- done
101
- }
102
-
103
- # Function to install Papirus icon theme
104
- install_papirus_icons() {
105
- log "Installing Papirus icon themes..."
106
-
107
- cd "$TEMP_DIR" || return 1
108
-
109
- if [ ! -d "papirus-icon-theme" ]; then
110
- git clone https://github.com/PapirusDevelopmentTeam/papirus-icon-theme.git
111
- else
112
- git -C papirus-icon-theme pull
113
- fi
114
-
115
- cd papirus-icon-theme || return 1
116
-
117
- # Install Papirus variants
118
- for variant in Papirus Papirus-Dark Papirus-Light; do
119
- if [ -d "$variant" ]; then
120
- log "Installing $variant icons..."
121
- cp -r "$variant" "$ICON_DIR/"
122
- success "Installed $variant"
123
- fi
124
- done
125
- }
126
-
127
- # Function to install Catppuccin cursors
128
- install_catppuccin_cursors() {
129
- log "Installing Catppuccin cursor themes..."
130
-
131
- cd "$TEMP_DIR" || return 1
132
-
133
- if [ ! -d "catppuccin-cursors" ]; then
134
- git clone https://github.com/catppuccin/cursors.git catppuccin-cursors
135
- else
136
- git -C catppuccin-cursors pull
137
- fi
138
-
139
- cd catppuccin-cursors || return 1
140
-
141
- # Install cursor themes for each variant
142
- for variant in Catppuccin-Latte-* Catppuccin-Frappe-* Catppuccin-Macchiato-* Catppuccin-Mocha-*; do
143
- if [ -d "cursors/$variant" ]; then
144
- log "Installing cursor theme $variant..."
145
- cp -r "cursors/$variant" "$ICON_DIR/"
146
- success "Installed cursor theme $variant"
147
- fi
148
- done
149
- }
150
-
151
- # Function to install GNOME Shell themes
152
- install_shell_themes() {
153
- log "Installing GNOME Shell themes..."
154
-
155
- # Check if user-themes extension is available
156
- if command -v gnome-extensions &>/dev/null; then
157
- if ! gnome-extensions list | grep -q "user-theme"; then
158
- warn "User Themes extension not found. Install it from GNOME Extensions."
159
- warn "Run: gnome-extensions install user-theme@gnome-shell-extensions.gcampax.github.com"
160
- fi
161
- fi
162
-
163
- cd "$TEMP_DIR" || return 1
164
-
165
- if [ ! -d "catppuccin-gnome-shell" ]; then
166
- git clone https://github.com/catppuccin/gnome.git catppuccin-gnome-shell
167
- else
168
- git -C catppuccin-gnome-shell pull
169
- fi
170
-
171
- cd catppuccin-gnome-shell || return 1
172
-
173
- # Install shell themes (use explicit names for portability)
174
- for variant in Latte Frappe Macchiato Mocha; do
175
- theme_name="Catppuccin-${variant}"
176
- if [ -d "themes/$theme_name" ]; then
177
- log "Installing GNOME Shell theme $theme_name..."
178
- cp -r "themes/$theme_name" "$THEME_DIR/"
179
- success "Installed GNOME Shell theme $theme_name"
180
- fi
181
- done
182
- }
183
-
184
- # Function to install wallpapers
185
- install_wallpapers() {
186
- log "Installing Catppuccin wallpapers..."
187
-
188
- local wallpaper_dir="/usr/share/backgrounds/catppuccin"
189
- local user_wallpaper_dir="$HOME/.local/share/backgrounds/catppuccin"
190
-
191
- # Try system directory first, fallback to user directory
192
- if [ -w "/usr/share/backgrounds" ] || sudo -n true 2>/dev/null; then
193
- sudo mkdir -p "$wallpaper_dir" 2>/dev/null || {
194
- warn "Cannot create system wallpaper directory, using user directory"
195
- wallpaper_dir="$user_wallpaper_dir"
196
- mkdir -p "$wallpaper_dir"
197
- }
198
- else
199
- wallpaper_dir="$user_wallpaper_dir"
200
- mkdir -p "$wallpaper_dir"
201
- fi
202
-
203
- cd "$TEMP_DIR" || return 1
204
-
205
- if [ ! -d "catppuccin-wallpapers" ]; then
206
- git clone https://github.com/catppuccin/wallpapers.git catppuccin-wallpapers
207
- else
208
- git -C catppuccin-wallpapers pull
209
- fi
210
-
211
- cd catppuccin-wallpapers || return 1
212
-
213
- # Copy wallpapers
214
- for variant in latte frappe macchiato mocha; do
215
- for image in os/*.png misc/*.png; do
216
- if [[ "$image" == *"$variant"* ]]; then
217
- log "Installing wallpaper: $(basename "$image")"
218
- if [ -w "$wallpaper_dir" ]; then
219
- cp "$image" "$wallpaper_dir/cat_$variant.png"
220
- else
221
- sudo cp "$image" "$wallpaper_dir/cat_$variant.png"
222
- fi
223
- fi
224
- done
225
- done
226
-
227
- success "Installed Catppuccin wallpapers to $wallpaper_dir"
228
- }
229
-
230
- # Function to apply GTK theme refresh
231
- refresh_gtk() {
232
- log "Refreshing GTK theme cache..."
233
-
234
- # Update GTK icon cache
235
- if command -v gtk-update-icon-cache &>/dev/null; then
236
- for theme_dir in "$ICON_DIR"/*; do
237
- if [ -d "$theme_dir" ] && [ -f "$theme_dir/index.theme" ]; then
238
- gtk-update-icon-cache -f "$theme_dir" 2>/dev/null || true
239
- fi
240
- done
241
- fi
242
-
243
- # Reload GNOME Shell (if running)
244
- if [ "$XDG_CURRENT_DESKTOP" = "GNOME" ] && command -v gnome-shell &>/dev/null; then
245
- log "Reloading GNOME Shell..."
246
- # Alt+F2, r, Enter - but we'll use dbus for safety
247
- if command -v busctl &>/dev/null; then
248
- busctl --user call org.gnome.Shell /org/gnome/Shell org.gnome.Shell Eval s 'Meta.restart("Themes updated")' 2>/dev/null || true
249
- fi
250
- fi
251
-
252
- success "GTK theme cache refreshed"
253
- }
254
-
255
- # Function to provide installation summary
256
- show_summary() {
257
- echo ""
258
- echo "=== Installation Summary ==="
259
- echo ""
260
- echo "Installed themes are now available in:"
261
- echo " GTK Themes: $THEME_DIR"
262
- echo " Icon Themes: $ICON_DIR"
263
- echo " Wallpapers: $wallpaper_dir"
264
- echo ""
265
- echo "To apply themes:"
266
- echo " 1. Use GNOME Tweaks or Extensions app"
267
- echo " 2. Or use the dot theme switcher:"
268
- echo " dot theme set catppuccin-mocha"
269
- echo " dot theme set catppuccin-latte"
270
- echo ""
271
- echo "Available Catppuccin themes:"
272
- echo " - catppuccin-latte (light)"
273
- echo " - catppuccin-frappe (dark - muted)"
274
- echo " - catppuccin-macchiato (dark - balanced)"
275
- echo " - catppuccin-mocha (dark - rich)"
276
- echo ""
277
- }
278
-
279
- # Function to check dependencies
280
- check_dependencies() {
281
- local missing_deps=()
282
-
283
- # Check required commands
284
- for cmd in git curl; do
285
- if ! command -v "$cmd" &>/dev/null; then
286
- missing_deps+=("$cmd")
287
- fi
288
- done
289
-
290
- # Check optional commands
291
- for cmd in gnome-tweaks gnome-extensions; do
292
- if ! command -v "$cmd" &>/dev/null; then
293
- warn "Optional dependency missing: $cmd"
294
- fi
295
- done
296
-
297
- if [ ${#missing_deps[@]} -gt 0 ]; then
298
- error "Missing required dependencies: ${missing_deps[*]}"
299
- echo "Please install them and run this script again."
300
- exit 1
301
- fi
302
- }
303
-
304
- # Main execution
305
- main() {
306
- echo "=== Catppuccin GNOME Theme Installer ==="
307
- echo ""
308
-
309
- check_dependencies
310
-
311
- log "Starting Catppuccin theme installation..."
312
-
313
- install_gtk_themes
314
- install_papirus_icons
315
- install_catppuccin_cursors
316
- install_shell_themes
317
- install_wallpapers
318
- refresh_gtk
319
-
320
- show_summary
321
-
322
- success "Catppuccin theme installation completed!"
323
-
324
- # Cleanup
325
- log "Cleaning up temporary files..."
326
- rm -rf "$TEMP_DIR"
327
- }
328
-
329
- # Handle script arguments
330
- case "${1:-install}" in
331
- install | "")
332
- main
333
- ;;
334
- gtk)
335
- install_gtk_themes
336
- refresh_gtk
337
- ;;
338
- icons)
339
- install_papirus_icons
340
- refresh_gtk
341
- ;;
342
- cursors)
343
- install_catppuccin_cursors
344
- ;;
345
- shell)
346
- install_shell_themes
347
- ;;
348
- wallpapers)
349
- install_wallpapers
350
- ;;
351
- refresh)
352
- refresh_gtk
353
- ;;
354
- help)
355
- echo "Usage: $0 [install|gtk|icons|cursors|shell|wallpapers|refresh|help]"
356
- echo ""
357
- echo " install Install all Catppuccin theme components (default)"
358
- echo " gtk Install only GTK themes"
359
- echo " icons Install only icon themes"
360
- echo " cursors Install only cursor themes"
361
- echo " shell Install only GNOME Shell themes"
362
- echo " wallpapers Install only wallpapers"
363
- echo " refresh Refresh theme cache"
364
- echo " help Show this help message"
365
- ;;
366
- *)
367
- error "Unknown option: $1"
368
- echo "Use '$0 help' for usage information."
369
- exit 1
370
- ;;
371
- esac
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- set -euo pipefail
5
-
6
- THEME="${DOTFILES_CURSOR_THEME:-Bibata-Modern-Ice}"
7
- SIZE="${DOTFILES_CURSOR_SIZE:-24}"
8
-
9
- case "$(uname -s)" in
10
- Darwin)
11
- echo "Cursor theming is not supported via script on macOS." >&2
12
- exit 0
13
- ;;
14
- Linux)
15
- if command -v gsettings >/dev/null; then
16
- gsettings set org.gnome.desktop.interface cursor-theme "$THEME" || true
17
- gsettings set org.gnome.desktop.interface cursor-size "$SIZE" || true
18
- echo "Set GNOME cursor theme to $THEME ($SIZE)."
19
- else
20
- echo "gsettings not found. Set cursor theme in your DE settings." >&2
21
- fi
22
- ;;
23
- *)
24
- echo "Unsupported OS for cursor theming." >&2
25
- ;;
26
- esac
@@ -1,27 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- set -euo pipefail
5
-
6
- THEME="${DOTFILES_ICON_THEME:-Papirus}"
7
-
8
- case "$(uname -s)" in
9
- Darwin)
10
- if command -v fileicon >/dev/null; then
11
- echo "Use: fileicon set <path> <icon.icns> to apply custom icons."
12
- else
13
- echo "fileicon not found. Install it via brew (brew install fileicon)." >&2
14
- fi
15
- ;;
16
- Linux)
17
- if command -v gsettings >/dev/null; then
18
- gsettings set org.gnome.desktop.interface icon-theme "$THEME" || true
19
- echo "Set GNOME icon theme to $THEME."
20
- else
21
- echo "gsettings not found. Set icon theme in your DE settings." >&2
22
- fi
23
- ;;
24
- *)
25
- echo "Unsupported OS for icon theming." >&2
26
- ;;
27
- esac
@@ -1,62 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- set -euo pipefail
5
-
6
- # Cross-platform sed in-place (BSD vs GNU)
7
- sed_in_place() {
8
- if sed --version >/dev/null 2>&1; then
9
- sed -i "$@" # GNU
10
- else
11
- sed -i '' "$@" # BSD (macOS)
12
- fi
13
- }
14
-
15
- THEME_SRC="${DOTFILES_GRUB_THEME_DIR:-$HOME/.config/dotfiles/grub/theme}"
16
- THEME_NAME="${DOTFILES_GRUB_THEME_NAME:-dotfiles}"
17
- APPLY=0
18
-
19
- for arg in "$@"; do
20
- case "$arg" in
21
- --apply) APPLY=1 ;;
22
- esac
23
- done
24
-
25
- if [[ "$(uname -s)" != "Linux" ]]; then
26
- echo "GRUB theming is Linux-only." >&2
27
- exit 0
28
- fi
29
-
30
- if [[ ! -d "$THEME_SRC" ]]; then
31
- echo "Theme directory not found: $THEME_SRC" >&2
32
- echo "Place a GRUB theme there or set DOTFILES_GRUB_THEME_DIR." >&2
33
- exit 1
34
- fi
35
-
36
- if [[ $APPLY -ne 1 ]]; then
37
- echo "Dry run. Use --apply to install the theme." >&2
38
- exit 0
39
- fi
40
-
41
- if [[ $EUID -ne 0 ]]; then
42
- echo "Please run with sudo for GRUB theme install." >&2
43
- exit 1
44
- fi
45
-
46
- THEME_DST="/boot/grub/themes/$THEME_NAME"
47
- mkdir -p "$THEME_DST"
48
- cp -R "$THEME_SRC/." "$THEME_DST"
49
-
50
- if grep -q '^GRUB_THEME=' /etc/default/grub; then
51
- sed_in_place "s|^GRUB_THEME=.*|GRUB_THEME=\"$THEME_DST/theme.txt\"|" /etc/default/grub
52
- else
53
- echo "GRUB_THEME=\"$THEME_DST/theme.txt\"" >>/etc/default/grub
54
- fi
55
-
56
- if command -v update-grub >/dev/null; then
57
- update-grub
58
- elif command -v grub-mkconfig >/dev/null; then
59
- grub-mkconfig -o /boot/grub/grub.cfg
60
- fi
61
-
62
- echo "GRUB theme installed: $THEME_DST"
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- set -euo pipefail
5
-
6
- icon_path="${DOTFILES_LOCK_ICON:-$HOME/.config/dotfiles/lock/icon.png}"
7
-
8
- if [[ ! -f "$icon_path" ]]; then
9
- echo "Lock icon not found: $icon_path" >&2
10
- echo "Place a PNG at that path or set DOTFILES_LOCK_ICON." >&2
11
- exit 1
12
- fi
13
-
14
- case "$(uname -s)" in
15
- Darwin)
16
- echo "Lock icon customization is not supported via script on macOS." >&2
17
- exit 0
18
- ;;
19
- Linux)
20
- if command -v swaylock >/dev/null; then
21
- echo "Use: swaylock --image '$icon_path'"
22
- elif command -v i3lock >/dev/null; then
23
- echo "Use: i3lock -i '$icon_path'"
24
- else
25
- echo "No supported lock screen tool found (swaylock/i3lock)." >&2
26
- fi
27
- ;;
28
- *)
29
- echo "Unsupported OS for lock icon." >&2
30
- ;;
31
- esac