@sebastienrousseau/dotfiles 0.2.481 → 0.2.499

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 (317) hide show
  1. package/docs/ARCHITECTURE.md +29 -196
  2. package/docs/COMPLIANCE.md +10 -10
  3. package/docs/COPYRIGHT +3 -4
  4. package/docs/OPERATIONS.md +38 -65
  5. package/docs/PLAN.md +3 -3
  6. package/docs/PR_DESCRIPTION.md +85 -84
  7. package/docs/ROADMAP.md +11 -11
  8. package/docs/ROADMAP_legacy.md +556 -0
  9. package/docs/SECURITY_CHECKLIST.md +1 -1
  10. package/docs/TASK.md +4 -4
  11. package/docs/WALKTHROUGH.md +33 -152
  12. package/package.json +17 -5
  13. package/scripts/backup.sh +142 -0
  14. package/scripts/banner.sh +20 -0
  15. package/scripts/benchmark.sh +20 -0
  16. package/scripts/build.sh +41 -0
  17. package/scripts/clean.sh +31 -0
  18. package/scripts/compile.sh +54 -0
  19. package/scripts/copy.sh +108 -0
  20. package/scripts/{tools/detect-collisions.py → detect-collisions.py} +1 -1
  21. package/scripts/doctor.sh +79 -0
  22. package/scripts/dotfiles.sh +63 -0
  23. package/scripts/download.sh +35 -0
  24. package/scripts/help.sh +57 -0
  25. package/scripts/lock-configs.sh +57 -0
  26. package/scripts/package.sh +46 -0
  27. package/scripts/ssh.sh +55 -0
  28. package/scripts/teleport.sh +23 -0
  29. package/scripts/{tests/test-aliases.sh → test-aliases.sh} +3 -3
  30. package/scripts/test_smoke.sh +88 -0
  31. package/scripts/unpack.sh +28 -0
  32. package/scripts/{diagnostics/verify_state.sh → verify_state.sh} +21 -21
  33. package/templates/projects/go/README.md +0 -4
  34. package/templates/projects/node/README.md +0 -4
  35. package/templates/projects/python/README.md +0 -4
  36. package/templates/projects/python/pyproject.toml +0 -15
  37. package/CHANGELOG.md +0 -285
  38. package/LICENSE +0 -1283
  39. package/README.md +0 -315
  40. package/docs/ALIASES.md +0 -128
  41. package/docs/FEATURES.md +0 -166
  42. package/docs/FONTS.md +0 -147
  43. package/docs/INSTALL.md +0 -119
  44. package/docs/KEYS.md +0 -40
  45. package/docs/KEY_ROTATION.md +0 -219
  46. package/docs/LEGACY_ROADMAP.md +0 -142
  47. package/docs/NEOVIM_IDE_GUIDE.md +0 -52
  48. package/docs/README.md +0 -269
  49. package/docs/REPO_AUDIT.md +0 -23
  50. package/docs/SCREENSHOTS.md +0 -116
  51. package/docs/SECRETS.md +0 -76
  52. package/docs/SECURITY.md +0 -30
  53. package/docs/TESTING.md +0 -190
  54. package/docs/TOOLS.md +0 -146
  55. package/docs/TROUBLESHOOTING.md +0 -112
  56. package/docs/UTILS.md +0 -105
  57. package/docs/WSL2_NIX_TROUBLESHOOTING.md +0 -723
  58. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -101
  59. package/docs/adr/ADR-002-shell-performance.md +0 -121
  60. package/docs/adr/ADR-003-security-first.md +0 -140
  61. package/docs/adr/ADR-004-cli-architecture.md +0 -157
  62. package/docs/adr/ADR-005-chezmoi-choice.md +0 -89
  63. package/docs/adr/ADR-006-shell-selection.md +0 -115
  64. package/docs/adr/README.md +0 -33
  65. package/docs/themes/README.md +0 -20
  66. package/dot_config/aider/aider.conf.yml +0 -32
  67. package/dot_config/alacritty/alacritty.toml.tmpl +0 -483
  68. package/dot_config/ansible/ansible.cfg.tmpl +0 -11
  69. package/dot_config/atuin/config.toml +0 -23
  70. package/dot_config/bat/config +0 -8
  71. package/dot_config/brave-flags.conf.tmpl +0 -7
  72. package/dot_config/btop/btop.conf +0 -16
  73. package/dot_config/btop/themes/tokyonight.theme +0 -34
  74. package/dot_config/bun/bunfig.toml.tmpl +0 -33
  75. package/dot_config/claude/mcp_servers.json +0 -49
  76. package/dot_config/clippy.toml +0 -55
  77. package/dot_config/containers/containers.conf +0 -14
  78. package/dot_config/curl/dot_curlrc +0 -18
  79. package/dot_config/dlv/config.yml +0 -39
  80. package/dot_config/docker/config.json.tmpl +0 -15
  81. package/dot_config/dotfiles/boot/README.md +0 -11
  82. package/dot_config/dotfiles/grub/README.md +0 -11
  83. package/dot_config/dotfiles/lock/README.md +0 -11
  84. package/dot_config/dotfiles/versions.env.tmpl +0 -19
  85. package/dot_config/duf/duf.conf +0 -6
  86. package/dot_config/duti/defaults.duti +0 -5
  87. package/dot_config/emoji/emoji.txt +0 -34
  88. package/dot_config/fastfetch/config.jsonc +0 -28
  89. package/dot_config/firefox/user.js +0 -8
  90. package/dot_config/flatpak/flatpak.list +0 -4
  91. package/dot_config/fontconfig/fonts.conf.tmpl +0 -44
  92. package/dot_config/gem/gemrc +0 -9
  93. package/dot_config/gh/config.yml +0 -12
  94. package/dot_config/ghostty/config.tmpl +0 -661
  95. package/dot_config/git/attributes +0 -12
  96. package/dot_config/git/config.tmpl +0 -77
  97. package/dot_config/git/ignore +0 -27
  98. package/dot_config/gnupg/gpg-agent.conf.tmpl +0 -11
  99. package/dot_config/go/aliases.sh +0 -61
  100. package/dot_config/go/env.sh +0 -24
  101. package/dot_config/go/golangci.yml +0 -118
  102. package/dot_config/go/gopls.json +0 -30
  103. package/dot_config/goose/config.yaml +0 -29
  104. package/dot_config/gtk-3.0/gtk.css.tmpl +0 -305
  105. package/dot_config/gtk-3.0/settings.ini.tmpl +0 -66
  106. package/dot_config/gtk-4.0/gtk.css.tmpl +0 -309
  107. package/dot_config/gtk-4.0/settings.ini.tmpl +0 -21
  108. package/dot_config/htop/htoprc +0 -20
  109. package/dot_config/ice/README.md +0 -13
  110. package/dot_config/inputrc +0 -2
  111. package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
  112. package/dot_config/just/justfile +0 -104
  113. package/dot_config/k9s/config.yaml.tmpl +0 -65
  114. package/dot_config/k9s/skins/catppuccin-mocha.yaml +0 -116
  115. package/dot_config/karabiner/karabiner.json +0 -14
  116. package/dot_config/kitty/kitty.conf.tmpl +0 -517
  117. package/dot_config/lazydocker/config.yml +0 -186
  118. package/dot_config/lazygit/config.yml +0 -23
  119. package/dot_config/lsd/config.yaml +0 -19
  120. package/dot_config/mas/masapps.txt +0 -5
  121. package/dot_config/minikube/config.json +0 -13
  122. package/dot_config/mise/config.toml +0 -41
  123. package/dot_config/mongosh/mongoshrc.js +0 -67
  124. package/dot_config/mycli/myclirc +0 -67
  125. package/dot_config/nano/nanorc +0 -28
  126. package/dot_config/ncdu/config +0 -12
  127. package/dot_config/nvim/init.lua +0 -4
  128. package/dot_config/nvim/lazy-lock.json +0 -27
  129. package/dot_config/nvim/lua/config/autocmds.lua +0 -63
  130. package/dot_config/nvim/lua/config/keymaps.lua +0 -87
  131. package/dot_config/nvim/lua/config/lazy.lua +0 -34
  132. package/dot_config/nvim/lua/config/options.lua +0 -48
  133. package/dot_config/nvim/lua/plugins/coding.lua +0 -234
  134. package/dot_config/nvim/lua/plugins/dap.lua +0 -201
  135. package/dot_config/nvim/lua/plugins/editor.lua +0 -59
  136. package/dot_config/nvim/lua/plugins/git.lua +0 -9
  137. package/dot_config/nvim/lua/plugins/lsp.lua +0 -221
  138. package/dot_config/nvim/lua/plugins/markdown.lua +0 -17
  139. package/dot_config/nvim/lua/plugins/rust.lua +0 -33
  140. package/dot_config/nvim/lua/plugins/sessions.lua +0 -32
  141. package/dot_config/nvim/lua/plugins/ui.lua +0 -537
  142. package/dot_config/nvim/snippets/all.lua +0 -9
  143. package/dot_config/nvim/snippets/python.lua +0 -16
  144. package/dot_config/pip/pip.conf.tmpl +0 -32
  145. package/dot_config/pypoetry/config.toml.tmpl +0 -6
  146. package/dot_config/pyrightconfig.json.tmpl +0 -5
  147. package/dot_config/raycast/README.md +0 -13
  148. package/dot_config/redis/redisclirc +0 -41
  149. package/dot_config/shell/00-container-detect.sh +0 -53
  150. package/dot_config/shell/00-core-paths.sh.tmpl +0 -95
  151. package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
  152. package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
  153. package/dot_config/shell/50-logic-functions.sh.tmpl +0 -10
  154. package/dot_config/shell/90-theme-switch.sh +0 -70
  155. package/dot_config/shell/90-ux-aliases.sh.tmpl +0 -35
  156. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +0 -23
  157. package/dot_config/shell/Brewfile +0 -207
  158. package/dot_config/shell/Brewfile.cask +0 -92
  159. package/dot_config/shell/Brewfile.cli +0 -119
  160. package/dot_config/shell/README.md +0 -267
  161. package/dot_config/shell/custom/context_suggest.zsh +0 -68
  162. package/dot_config/shell/custom/error_analysis.zsh +0 -45
  163. package/dot_config/sops/dot_sops.yaml +0 -23
  164. package/dot_config/starship.toml.tmpl +0 -124
  165. package/dot_config/task/Taskfile.yml +0 -86
  166. package/dot_config/tflint/tflint.hcl.tmpl +0 -9
  167. package/dot_config/tmux/tmux.conf.tmpl +0 -181
  168. package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
  169. package/dot_config/vscode/extensions.txt +0 -11
  170. package/dot_config/vscode/settings.json.tmpl +0 -123
  171. package/dot_config/waybar/style.css +0 -8
  172. package/dot_config/wezterm/wezterm.lua.tmpl +0 -236
  173. package/dot_config/wget/wgetrc +0 -12
  174. package/dot_config/yarn/yarnrc.yml.tmpl +0 -36
  175. package/dot_config/yazi/yazi.toml +0 -40
  176. package/dot_config/zellij/config.kdl +0 -79
  177. package/dot_config/zsh/dot_zprofile +0 -13
  178. package/dot_config/zsh/dot_zshenv +0 -6
  179. package/dot_config/zsh/dot_zshrc.tmpl +0 -199
  180. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +0 -5
  181. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +0 -28
  182. package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
  183. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +0 -123
  184. package/dot_config/zsh/rc.d/40-bell.zsh.tmpl +0 -20
  185. package/dot_config/zsh/rc.d/50-login-fortune.zsh.tmpl +0 -9
  186. package/dot_local/bin/executable_ai_core +0 -130
  187. package/dot_local/bin/executable_b64 +0 -59
  188. package/dot_local/bin/executable_dot +0 -178
  189. package/dot_local/bin/executable_dot_completion +0 -55
  190. package/dot_local/bin/executable_epoch +0 -62
  191. package/dot_local/bin/executable_extract +0 -108
  192. package/dot_local/bin/executable_git-ai-commit +0 -160
  193. package/dot_local/bin/executable_git-ai-diff +0 -154
  194. package/dot_local/bin/executable_hash +0 -123
  195. package/dot_local/bin/executable_hex +0 -79
  196. package/dot_local/bin/executable_ip +0 -37
  197. package/dot_local/bin/executable_jsonv +0 -54
  198. package/dot_local/bin/executable_jwt +0 -78
  199. package/dot_local/bin/executable_kill-port +0 -59
  200. package/dot_local/bin/executable_lorem +0 -103
  201. package/dot_local/bin/executable_regex +0 -96
  202. package/dot_local/bin/executable_tmux-sessionizer +0 -187
  203. package/dot_local/bin/executable_tour +0 -137
  204. package/dot_local/bin/executable_update +0 -108
  205. package/dot_local/bin/executable_uuid +0 -57
  206. package/dot_local/bin/executable_yamlv +0 -39
  207. package/dot_local/bin/executable_zig-install +0 -89
  208. package/dot_local/bin/voice_ops +0 -7
  209. package/dot_local/share/bash-completion/completions/dot +0 -54
  210. package/dot_local/share/zsh/completions/.keep +0 -0
  211. package/install.sh +0 -255
  212. package/scripts/ci/validate-ci-config.sh +0 -222
  213. package/scripts/demo/record.sh +0 -41
  214. package/scripts/diagnostics/benchmark.sh +0 -201
  215. package/scripts/diagnostics/doctor.sh +0 -115
  216. package/scripts/diagnostics/drift-dashboard.sh +0 -26
  217. package/scripts/diagnostics/health.sh +0 -356
  218. package/scripts/diagnostics/history-analysis.sh +0 -77
  219. package/scripts/diagnostics/security-score.sh +0 -392
  220. package/scripts/dot/commands/appearance.sh +0 -63
  221. package/scripts/dot/commands/core.sh +0 -130
  222. package/scripts/dot/commands/diagnostics.sh +0 -100
  223. package/scripts/dot/commands/meta.sh +0 -117
  224. package/scripts/dot/commands/restore.sh +0 -209
  225. package/scripts/dot/commands/secrets.sh +0 -81
  226. package/scripts/dot/commands/security.sh +0 -73
  227. package/scripts/dot/commands/tools.sh +0 -228
  228. package/scripts/dot/lib/utils.sh +0 -72
  229. package/scripts/fonts/install-nerd-fonts.sh +0 -59
  230. package/scripts/fonts/patch-fonts.sh +0 -34
  231. package/scripts/ops/chezmoi-apply.sh +0 -42
  232. package/scripts/ops/chezmoi-diff.sh +0 -14
  233. package/scripts/ops/chezmoi-remove.sh +0 -43
  234. package/scripts/ops/chezmoi-update.sh +0 -16
  235. package/scripts/ops/heal.sh +0 -466
  236. package/scripts/ops/health-check.sh +0 -380
  237. package/scripts/ops/rollback.sh +0 -531
  238. package/scripts/ops/teleport.sh +0 -32
  239. package/scripts/secrets/age-init.sh +0 -69
  240. package/scripts/secrets/create-secrets-file.sh +0 -44
  241. package/scripts/secrets/encrypt-ssh-key.sh +0 -42
  242. package/scripts/security/backup.sh +0 -17
  243. package/scripts/security/dns-doh.sh +0 -29
  244. package/scripts/security/encryption-check.sh +0 -39
  245. package/scripts/security/enforce-policies.sh +0 -339
  246. package/scripts/security/firewall.sh +0 -34
  247. package/scripts/security/lock-configs.sh +0 -57
  248. package/scripts/security/lock-screen.sh +0 -33
  249. package/scripts/security/manage-secrets.sh +0 -415
  250. package/scripts/security/telemetry-kill.sh +0 -28
  251. package/scripts/security/usb-safety.sh +0 -29
  252. package/scripts/tests/README.md +0 -241
  253. package/scripts/tests/benchmark.sh +0 -91
  254. package/scripts/tests/framework/assertions.sh +0 -283
  255. package/scripts/tests/framework/mocks.sh +0 -201
  256. package/scripts/tests/framework/test_runner.sh +0 -189
  257. package/scripts/tests/integration/test_install.sh +0 -237
  258. package/scripts/tests/performance/benchmark_runner.sh +0 -156
  259. package/scripts/tests/performance/regression_check.sh +0 -73
  260. package/scripts/tests/performance/stress_test.sh +0 -65
  261. package/scripts/tests/test-docker.sh +0 -48
  262. package/scripts/tests/unit/test_ai_aliases.sh +0 -158
  263. package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
  264. package/scripts/tests/unit/test_backup.sh +0 -227
  265. package/scripts/tests/unit/test_case_functions.sh +0 -238
  266. package/scripts/tests/unit/test_cd_aliases.sh +0 -367
  267. package/scripts/tests/unit/test_dot_cli.sh +0 -217
  268. package/scripts/tests/unit/test_encode64.sh +0 -67
  269. package/scripts/tests/unit/test_environment.sh +0 -78
  270. package/scripts/tests/unit/test_extract.sh +0 -163
  271. package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
  272. package/scripts/tests/unit/test_genpass.sh +0 -298
  273. package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
  274. package/scripts/tests/unit/test_installers.sh +0 -172
  275. package/scripts/tests/unit/test_keygen.sh +0 -68
  276. package/scripts/tests/unit/test_logging.sh +0 -96
  277. package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
  278. package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
  279. package/scripts/tests/unit/test_prependpath.sh +0 -66
  280. package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
  281. package/scripts/tests/unit/test_rd.sh +0 -230
  282. package/scripts/tests/unit/test_security_fixes.sh +0 -130
  283. package/scripts/tests/unit/test_security_scripts.sh +0 -87
  284. package/scripts/tests/unit/test_template_validation.sh +0 -238
  285. package/scripts/tests/unit/test_utility_functions.sh +0 -144
  286. package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
  287. package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
  288. package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
  289. package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
  290. package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
  291. package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
  292. package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
  293. package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
  294. package/scripts/tests/unit/test_zipf.sh +0 -76
  295. package/scripts/theme/apply-gnome-theme.sh +0 -297
  296. package/scripts/theme/install-boot-logo.sh +0 -61
  297. package/scripts/theme/install-catppuccin-themes.sh +0 -346
  298. package/scripts/theme/install-cursors.sh +0 -24
  299. package/scripts/theme/install-file-icons.sh +0 -25
  300. package/scripts/theme/install-grub-theme.sh +0 -51
  301. package/scripts/theme/install-lock-icon.sh +0 -29
  302. package/scripts/theme/switch.sh +0 -250
  303. package/scripts/theme/wallpaper-rotate.sh +0 -82
  304. package/scripts/theme/wallpaper-sync.sh +0 -42
  305. package/scripts/tools/cmatrix.sh +0 -20
  306. package/scripts/tools/emoji-picker.sh +0 -45
  307. package/scripts/tools/figlet-banner.sh +0 -17
  308. package/scripts/tools/log-rotate.sh +0 -29
  309. package/scripts/tools/lolcat-wrap.sh +0 -18
  310. package/scripts/tools/pipes.sh +0 -47
  311. package/scripts/tuning/linux.sh +0 -175
  312. package/scripts/tuning/macos.sh +0 -46
  313. package/templates/projects/molecule/README.md +0 -7
  314. package/templates/projects/molecule/converge.yml +0 -7
  315. package/templates/projects/molecule/molecule.yml +0 -16
  316. package/templates/projects/packer/README.md +0 -15
  317. package/templates/projects/packer/main.pkr.hcl +0 -15
@@ -1,250 +0,0 @@
1
- #!/bin/sh
2
- # Theme Switcher - Supports Tokyo Night and Catppuccin theme families
3
- # Usage: dot theme [list|set <name>|toggle|family]
4
- set -e
5
-
6
- resolve_source_dir() {
7
- if [ -n "${CHEZMOI_SOURCE_DIR:-}" ] && [ -d "$CHEZMOI_SOURCE_DIR" ]; then
8
- echo "$CHEZMOI_SOURCE_DIR"
9
- return
10
- fi
11
- if [ -d "$HOME/.dotfiles" ]; then
12
- echo "$HOME/.dotfiles"
13
- return
14
- fi
15
- if [ -d "$HOME/.local/share/chezmoi" ]; then
16
- echo "$HOME/.local/share/chezmoi"
17
- return
18
- fi
19
- echo ""
20
- }
21
-
22
- SRC_DIR="$(resolve_source_dir)"
23
- if [ -z "$SRC_DIR" ]; then
24
- echo "Dotfiles source not found."
25
- exit 1
26
- fi
27
-
28
- DATA_FILE="$SRC_DIR/.chezmoidata.toml"
29
- if [ ! -f "$DATA_FILE" ]; then
30
- echo "Missing $DATA_FILE"
31
- exit 1
32
- fi
33
-
34
- # =============================================================================
35
- # Theme Database
36
- # =============================================================================
37
-
38
- # Default preferences
39
- DEFAULT_DARK="catppuccin-mocha"
40
- DEFAULT_LIGHT="catppuccin-latte"
41
- TOKYO_DARK="tokyonight-night"
42
- TOKYO_LIGHT="tokyonight-day"
43
- CATPPUCCIN_DARK="catppuccin-mocha"
44
- CATPPUCCIN_LIGHT="catppuccin-latte"
45
-
46
- # =============================================================================
47
- # Theme Functions
48
- # =============================================================================
49
-
50
- current_theme() {
51
- awk -F'"' '/^theme =/ {print $2}' "$DATA_FILE" | head -n 1
52
- }
53
-
54
- get_theme_family() {
55
- theme="$1"
56
- case "$theme" in
57
- tokyonight-*) echo "tokyonight" ;;
58
- catppuccin-*) echo "catppuccin" ;;
59
- rose-pine*) echo "rose-pine" ;;
60
- kanagawa-*) echo "kanagawa" ;;
61
- gruvbox-*) echo "gruvbox" ;;
62
- solarized-*) echo "solarized" ;;
63
- everforest-*) echo "everforest" ;;
64
- *) echo "other" ;;
65
- esac
66
- }
67
-
68
- is_dark_theme() {
69
- theme="$1"
70
- case "$theme" in
71
- *-night | *-storm | *-moon | *-mocha | *-frappe | *-macchiato | *-dark | *-wave | *-dragon | dracula | nord | onedark)
72
- return 0
73
- ;;
74
- *)
75
- return 1
76
- ;;
77
- esac
78
- }
79
-
80
- set_theme() {
81
- new_theme="$1"
82
- if [ -z "$new_theme" ]; then
83
- echo "Theme name required."
84
- exit 1
85
- fi
86
- # Validate theme name: only allow alphanumeric, hyphens, underscores
87
- case "$new_theme" in
88
- *[!a-zA-Z0-9_-]*)
89
- echo "Invalid theme name: $new_theme" >&2
90
- echo "Theme names may only contain letters, digits, hyphens, and underscores." >&2
91
- exit 1
92
- ;;
93
- esac
94
-
95
- tmp_file="$(mktemp)"
96
- if grep -q '^theme = ' "$DATA_FILE"; then
97
- sed "s/^theme = .*/theme = \"$new_theme\"/" "$DATA_FILE" >"$tmp_file"
98
- else
99
- cat "$DATA_FILE" >"$tmp_file"
100
- echo "theme = \"$new_theme\"" >>"$tmp_file"
101
- fi
102
- mv "$tmp_file" "$DATA_FILE"
103
- echo "Theme set to: $new_theme"
104
- echo "Applying dotfiles..."
105
- chezmoi apply --force 2>/dev/null || chezmoi apply
106
- }
107
-
108
- list_themes() {
109
- echo "=== Catppuccin (Recommended) ==="
110
- echo " catppuccin-latte (light)"
111
- echo " catppuccin-frappe (dark - muted)"
112
- echo " catppuccin-macchiato (dark - balanced)"
113
- echo " catppuccin-mocha (dark - rich)"
114
- echo ""
115
- echo "=== Tokyo Night ==="
116
- echo " tokyonight-day (light)"
117
- echo " tokyonight-storm (dark - muted)"
118
- echo " tokyonight-night (dark - default)"
119
- echo " tokyonight-moon (dark - softer)"
120
- echo ""
121
- echo "=== Rose Pine ==="
122
- echo " rose-pine (dark)"
123
- echo " rose-pine-moon (dark - softer)"
124
- echo " rose-pine-dawn (light)"
125
- echo ""
126
- echo "=== Kanagawa ==="
127
- echo " kanagawa-wave (dark - default)"
128
- echo " kanagawa-dragon (dark - vibrant)"
129
- echo " kanagawa-lotus (light)"
130
- echo ""
131
- echo "=== Other ==="
132
- echo " dracula (dark)"
133
- echo " gruvbox-light (light)"
134
- echo " gruvbox-dark (dark)"
135
- echo " nord (dark)"
136
- echo " onelight (light)"
137
- echo " onedark (dark)"
138
- echo " solarized-light (light)"
139
- echo " solarized-dark (dark)"
140
- echo " everforest-light (light)"
141
- echo " everforest-dark (dark)"
142
- echo ""
143
- echo "Current theme: $(current_theme)"
144
- }
145
-
146
- # Toggle between light and dark within the same family, or switch families
147
- toggle_theme() {
148
- current="$(current_theme)"
149
- family="$(get_theme_family "$current")"
150
-
151
- if is_dark_theme "$current"; then
152
- # Currently dark, switch to light variant
153
- case "$family" in
154
- tokyonight) set_theme "$TOKYO_LIGHT" ;;
155
- catppuccin) set_theme "$CATPPUCCIN_LIGHT" ;;
156
- rose-pine) set_theme "rose-pine-dawn" ;;
157
- kanagawa) set_theme "kanagawa-lotus" ;;
158
- gruvbox) set_theme "gruvbox-light" ;;
159
- solarized) set_theme "solarized-light" ;;
160
- everforest) set_theme "everforest-light" ;;
161
- *) set_theme "$DEFAULT_LIGHT" ;;
162
- esac
163
- else
164
- # Currently light, switch to dark variant
165
- case "$family" in
166
- tokyonight) set_theme "$TOKYO_DARK" ;;
167
- catppuccin) set_theme "$CATPPUCCIN_DARK" ;;
168
- rose-pine) set_theme "rose-pine" ;;
169
- kanagawa) set_theme "kanagawa-wave" ;;
170
- gruvbox) set_theme "gruvbox-dark" ;;
171
- solarized) set_theme "solarized-dark" ;;
172
- everforest) set_theme "everforest-dark" ;;
173
- *) set_theme "$DEFAULT_DARK" ;;
174
- esac
175
- fi
176
- }
177
-
178
- # Switch between Tokyo Night and Catppuccin families
179
- switch_family() {
180
- current="$(current_theme)"
181
- family="$(get_theme_family "$current")"
182
-
183
- if is_dark_theme "$current"; then
184
- # Stay in dark mode, switch family
185
- case "$family" in
186
- tokyonight) set_theme "$CATPPUCCIN_DARK" ;;
187
- catppuccin) set_theme "$TOKYO_DARK" ;;
188
- *) set_theme "$CATPPUCCIN_DARK" ;;
189
- esac
190
- else
191
- # Stay in light mode, switch family
192
- case "$family" in
193
- tokyonight) set_theme "$CATPPUCCIN_LIGHT" ;;
194
- catppuccin) set_theme "$TOKYO_LIGHT" ;;
195
- *) set_theme "$CATPPUCCIN_LIGHT" ;;
196
- esac
197
- fi
198
- }
199
-
200
- # Show current theme info
201
- show_current() {
202
- current="$(current_theme)"
203
- family="$(get_theme_family "$current")"
204
- if is_dark_theme "$current"; then
205
- mode="dark"
206
- else
207
- mode="light"
208
- fi
209
- echo "Current: $current ($family, $mode)"
210
- }
211
-
212
- # =============================================================================
213
- # Main
214
- # =============================================================================
215
-
216
- case "${1:-}" in
217
- list)
218
- list_themes
219
- ;;
220
- set)
221
- shift
222
- set_theme "$1"
223
- ;;
224
- toggle)
225
- toggle_theme
226
- ;;
227
- family)
228
- switch_family
229
- ;;
230
- current)
231
- show_current
232
- ;;
233
- "")
234
- echo "Usage: dot theme [command]"
235
- echo ""
236
- echo "Commands:"
237
- echo " list Show all available themes"
238
- echo " set NAME Set theme to NAME"
239
- echo " toggle Toggle between light/dark within current family"
240
- echo " family Switch between Tokyo Night and Catppuccin families"
241
- echo " current Show current theme info"
242
- echo ""
243
- show_current
244
- ;;
245
- *)
246
- echo "Unknown theme command: $1"
247
- echo "Usage: dot theme [list|set <name>|toggle|family|current]"
248
- exit 1
249
- ;;
250
- esac
@@ -1,82 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- WALLPAPER_DIR="${DOTFILES_WALLPAPER_DIR:-$HOME/Pictures/Wallpapers}"
5
- INTERVAL="${DOTFILES_WALLPAPER_INTERVAL:-300}"
6
- ONCE=0
7
-
8
- while [[ $# -gt 0 ]]; do
9
- case "$1" in
10
- --interval)
11
- INTERVAL="$2"
12
- shift 2
13
- ;;
14
- --once)
15
- ONCE=1
16
- shift
17
- ;;
18
- *)
19
- shift
20
- ;;
21
- esac
22
- done
23
-
24
- if [[ ! -d "$WALLPAPER_DIR" ]]; then
25
- echo "Wallpaper directory not found: $WALLPAPER_DIR" >&2
26
- exit 1
27
- fi
28
-
29
- pick_wallpaper() {
30
- local files
31
- files=()
32
- while IFS= read -r line; do
33
- files+=("$line")
34
- done < <(find "$WALLPAPER_DIR" -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' \))
35
- if [[ ${#files[@]} -eq 0 ]]; then
36
- return 1
37
- fi
38
- if command -v shuf &>/dev/null; then
39
- printf '%s\n' "${files[@]}" | shuf -n 1
40
- else
41
- # macOS fallback using $RANDOM
42
- echo "${files[$RANDOM % ${#files[@]}]}"
43
- fi
44
- }
45
-
46
- apply_wallpaper() {
47
- local wp="$1"
48
- case "$(uname -s)" in
49
- Darwin)
50
- osascript -e "tell application \"System Events\" to set picture of every desktop to POSIX file \"$wp\"" || true
51
- ;;
52
- Linux)
53
- if command -v feh >/dev/null; then
54
- feh --bg-fill "$wp"
55
- elif command -v swaybg >/dev/null; then
56
- pkill swaybg || true
57
- swaybg -i "$wp" -m fill &
58
- else
59
- echo "No supported wallpaper setter found (feh/swaybg)." >&2
60
- return 1
61
- fi
62
- ;;
63
- *)
64
- echo "Wallpaper rotation not supported on this OS." >&2
65
- return 1
66
- ;;
67
- esac
68
- }
69
-
70
- while true; do
71
- wp=$(pick_wallpaper)
72
- if [[ -z "$wp" ]]; then
73
- echo "No wallpapers found in $WALLPAPER_DIR" >&2
74
- exit 1
75
- fi
76
- apply_wallpaper "$wp"
77
- echo "Wallpaper applied: $wp"
78
- if [[ "$ONCE" -eq 1 ]]; then
79
- break
80
- fi
81
- sleep "$INTERVAL"
82
- done
@@ -1,42 +0,0 @@
1
- #!/bin/sh
2
- set -e
3
-
4
- WALLPAPER_DIR="${DOTFILES_WALLPAPER_DIR:-$HOME/Pictures/Wallpapers}"
5
-
6
- if [ ! -d "$WALLPAPER_DIR" ]; then
7
- echo "Wallpaper directory not found: $WALLPAPER_DIR"
8
- exit 1
9
- fi
10
-
11
- pick_wallpaper() {
12
- find "$WALLPAPER_DIR" -type f \( -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.png' \) | head -n 1
13
- }
14
-
15
- WALLPAPER="$(pick_wallpaper)"
16
- if [ -z "$WALLPAPER" ]; then
17
- echo "No wallpapers found in $WALLPAPER_DIR"
18
- exit 1
19
- fi
20
-
21
- case "$(uname -s)" in
22
- Darwin)
23
- osascript -e "tell application \"System Events\" to set picture of every desktop to POSIX file \"$WALLPAPER\"" || true
24
- ;;
25
- Linux)
26
- if command -v feh >/dev/null; then
27
- feh --bg-fill "$WALLPAPER"
28
- elif command -v swaybg >/dev/null; then
29
- pkill swaybg || true
30
- swaybg -i "$WALLPAPER" -m fill &
31
- else
32
- echo "No supported wallpaper setter found (feh/swaybg)."
33
- exit 1
34
- fi
35
- ;;
36
- *)
37
- echo "Wallpaper sync not supported on this OS."
38
- exit 1
39
- ;;
40
- esac
41
-
42
- printf "Wallpaper applied: %s\n" "$WALLPAPER"
@@ -1,20 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- if ! command -v cmatrix >/dev/null; then
5
- echo "cmatrix not installed. Install it via brew/apt." >&2
6
- exit 1
7
- fi
8
-
9
- color="${DOTFILES_CMATRIX_COLOR:-green}"
10
- opts=("-b" "-C" "$color")
11
-
12
- if [[ "${DOTFILES_CMATRIX_RAINBOW:-0}" = "1" ]]; then
13
- opts+=("-r")
14
- fi
15
-
16
- if [[ "${DOTFILES_CMATRIX_ASYNC:-0}" = "1" ]]; then
17
- opts+=("-a")
18
- fi
19
-
20
- exec cmatrix "${opts[@]}" "$@"
@@ -1,45 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- EMOJI_FILE="${EMOJI_FILE:-$HOME/.config/emoji/emoji.txt}"
5
-
6
- if [[ ! -f "$EMOJI_FILE" ]]; then
7
- echo "Emoji list not found: $EMOJI_FILE" >&2
8
- exit 1
9
- fi
10
-
11
- pick_with_fzf() {
12
- fzf --prompt="emoji> " --height=40% --layout=reverse <"$EMOJI_FILE"
13
- }
14
-
15
- pick_with_select() {
16
- local choice
17
- local entries
18
- IFS=$'\n' read -r -d '' -a entries < <(cat "$EMOJI_FILE" && printf '\0')
19
- select choice in "${entries[@]}"; do
20
- echo "$choice"
21
- break
22
- done
23
- }
24
-
25
- selection=""
26
- if command -v fzf >/dev/null; then
27
- selection=$(pick_with_fzf || true)
28
- else
29
- selection=$(pick_with_select || true)
30
- fi
31
-
32
- emoji=$(printf '%s' "$selection" | awk '{print $1}')
33
- if [[ -z "$emoji" ]]; then
34
- exit 1
35
- fi
36
-
37
- printf '%s' "$emoji"
38
-
39
- if command -v pbcopy >/dev/null; then
40
- printf '%s' "$emoji" | pbcopy
41
- elif command -v wl-copy >/dev/null; then
42
- printf '%s' "$emoji" | wl-copy
43
- elif command -v xclip >/dev/null; then
44
- printf '%s' "$emoji" | xclip -selection clipboard
45
- fi
@@ -1,17 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- text="${*:-${USER:-dotfiles}}"
5
- font="${DOTFILES_FIGLET_FONT:-slant}"
6
-
7
- if command -v figlet >/dev/null; then
8
- figlet -f "$font" "$text"
9
- exit 0
10
- fi
11
-
12
- if command -v toilet >/dev/null; then
13
- toilet -f "$font" "$text"
14
- exit 0
15
- fi
16
-
17
- echo "$text"
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- LOG_DIR="${HOME}/.local/share"
5
- LOG_FILE="${LOG_DIR}/dotfiles.log"
6
- MAX_SIZE_BYTES=$((1024 * 1024))
7
- ROTATIONS=3
8
-
9
- if [[ ! -f "${LOG_FILE}" ]]; then
10
- exit 0
11
- fi
12
-
13
- size=$(wc -c <"${LOG_FILE}" | tr -d ' ')
14
- if [[ "${size}" -lt "${MAX_SIZE_BYTES}" ]]; then
15
- exit 0
16
- fi
17
-
18
- for i in $(seq ${ROTATIONS} -1 1); do
19
- if [[ -f "${LOG_FILE}.${i}.gz" ]]; then
20
- mv "${LOG_FILE}.${i}.gz" "${LOG_FILE}.$((i + 1)).gz"
21
- elif [[ -f "${LOG_FILE}.${i}" ]]; then
22
- mv "${LOG_FILE}.${i}" "${LOG_FILE}.$((i + 1))"
23
- gzip -f "${LOG_FILE}.$((i + 1))"
24
- fi
25
- done
26
-
27
- mv "${LOG_FILE}" "${LOG_FILE}.1"
28
- gzip -f "${LOG_FILE}.1"
29
- : >"${LOG_FILE}"
@@ -1,18 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- if command -v lolcat >/dev/null; then
5
- if [[ $# -gt 0 ]]; then
6
- cat "$@" | lolcat
7
- else
8
- lolcat
9
- fi
10
- exit 0
11
- fi
12
-
13
- # Fallback: plain output
14
- if [[ $# -gt 0 ]]; then
15
- cat "$@"
16
- else
17
- cat
18
- fi
@@ -1,47 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
-
4
- # Simple terminal pipes screensaver
5
- # Inspired by pipes.sh but kept minimal for portability
6
-
7
- cols=$(tput cols 2>/dev/null || echo 80)
8
- rows=$(tput lines 2>/dev/null || echo 24)
9
-
10
- cleanup() {
11
- tput cnorm 2>/dev/null || true
12
- stty echo 2>/dev/null || true
13
- clear
14
- }
15
-
16
- trap cleanup EXIT INT TERM
17
-
18
- tput civis 2>/dev/null || true
19
- stty -echo 2>/dev/null || true
20
- clear
21
-
22
- symbols=("|" "-" "+" "┘" "└" "┐" "┌")
23
- colors=(31 32 33 34 35 36 37)
24
-
25
- while true; do
26
- x=$((RANDOM % cols + 1))
27
- y=$((RANDOM % rows + 1))
28
- sym=${symbols[$((RANDOM % ${#symbols[@]}))]}
29
- color=${colors[$((RANDOM % ${#colors[@]}))]}
30
- printf "\033[%s;%sH\033[%sm%s\033[0m" "$y" "$x" "$color" "$sym"
31
- sleep 0.01
32
- if [[ "$y" -ge "$rows" ]]; then
33
- clear
34
- fi
35
- if [[ "$x" -ge "$cols" ]]; then
36
- clear
37
- fi
38
- if [[ "$RANDOM" -gt 32000 ]]; then
39
- clear
40
- fi
41
- # slow down slightly
42
- sleep 0.01
43
- # allow keypress to exit
44
- if read -r -t 0.001; then
45
- break
46
- fi
47
- done