@sebastienrousseau/dotfiles 0.2.469 → 0.2.481

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 (490) hide show
  1. package/CHANGELOG.md +285 -0
  2. package/README.md +236 -319
  3. package/docs/ALIASES.md +128 -0
  4. package/docs/ARCHITECTURE.md +229 -0
  5. package/docs/COMPLIANCE.md +47 -0
  6. package/docs/COPYRIGHT +7 -0
  7. package/docs/FEATURES.md +166 -0
  8. package/docs/FONTS.md +147 -0
  9. package/docs/INSTALL.md +119 -0
  10. package/docs/KEYS.md +40 -0
  11. package/docs/KEY_ROTATION.md +219 -0
  12. package/docs/LEGACY_ROADMAP.md +142 -0
  13. package/docs/NEOVIM_IDE_GUIDE.md +52 -0
  14. package/docs/OPERATIONS.md +130 -0
  15. package/docs/PLAN.md +161 -0
  16. package/docs/PR_DESCRIPTION.md +149 -0
  17. package/docs/README.md +269 -0
  18. package/docs/REPO_AUDIT.md +23 -0
  19. package/docs/ROADMAP.md +148 -0
  20. package/docs/SCREENSHOTS.md +116 -0
  21. package/docs/SECRETS.md +76 -0
  22. package/docs/SECURITY.md +30 -0
  23. package/docs/SECURITY_CHECKLIST.md +25 -0
  24. package/docs/TASK.md +99 -0
  25. package/docs/TESTING.md +190 -0
  26. package/docs/TOOLS.md +146 -0
  27. package/docs/TROUBLESHOOTING.md +112 -0
  28. package/docs/UTILS.md +105 -0
  29. package/docs/WALKTHROUGH.md +165 -0
  30. package/docs/WSL2_NIX_TROUBLESHOOTING.md +723 -0
  31. package/docs/adr/ADR-001-ci-cd-pipeline.md +101 -0
  32. package/docs/adr/ADR-002-shell-performance.md +121 -0
  33. package/docs/adr/ADR-003-security-first.md +140 -0
  34. package/docs/adr/ADR-004-cli-architecture.md +157 -0
  35. package/docs/adr/ADR-005-chezmoi-choice.md +89 -0
  36. package/docs/adr/ADR-006-shell-selection.md +115 -0
  37. package/docs/adr/README.md +33 -0
  38. package/docs/themes/README.md +20 -0
  39. package/dot_config/aider/aider.conf.yml +32 -0
  40. package/dot_config/alacritty/alacritty.toml.tmpl +483 -0
  41. package/dot_config/ansible/ansible.cfg.tmpl +11 -0
  42. package/dot_config/atuin/config.toml +23 -0
  43. package/dot_config/bat/config +8 -0
  44. package/dot_config/brave-flags.conf.tmpl +7 -0
  45. package/dot_config/btop/btop.conf +16 -0
  46. package/dot_config/btop/themes/tokyonight.theme +34 -0
  47. package/dot_config/bun/bunfig.toml.tmpl +33 -0
  48. package/dot_config/claude/mcp_servers.json +49 -0
  49. package/dot_config/clippy.toml +55 -0
  50. package/dot_config/containers/containers.conf +14 -0
  51. package/dot_config/curl/dot_curlrc +18 -0
  52. package/dot_config/dlv/config.yml +39 -0
  53. package/dot_config/docker/config.json.tmpl +15 -0
  54. package/dot_config/dotfiles/boot/README.md +11 -0
  55. package/dot_config/dotfiles/grub/README.md +11 -0
  56. package/dot_config/dotfiles/lock/README.md +11 -0
  57. package/dot_config/dotfiles/versions.env.tmpl +19 -0
  58. package/dot_config/duf/duf.conf +6 -0
  59. package/dot_config/duti/defaults.duti +5 -0
  60. package/dot_config/emoji/emoji.txt +34 -0
  61. package/dot_config/fastfetch/config.jsonc +28 -0
  62. package/dot_config/firefox/user.js +8 -0
  63. package/dot_config/flatpak/flatpak.list +4 -0
  64. package/dot_config/fontconfig/fonts.conf.tmpl +44 -0
  65. package/dot_config/gh/config.yml +12 -0
  66. package/dot_config/ghostty/config.tmpl +661 -0
  67. package/dot_config/git/attributes +12 -0
  68. package/dot_config/git/config.tmpl +77 -0
  69. package/dot_config/git/ignore +27 -0
  70. package/dot_config/gnupg/gpg-agent.conf.tmpl +11 -0
  71. package/dot_config/go/aliases.sh +61 -0
  72. package/dot_config/go/env.sh +24 -0
  73. package/dot_config/go/golangci.yml +118 -0
  74. package/dot_config/go/gopls.json +30 -0
  75. package/dot_config/goose/config.yaml +29 -0
  76. package/dot_config/gtk-3.0/gtk.css.tmpl +305 -0
  77. package/dot_config/gtk-3.0/settings.ini.tmpl +66 -0
  78. package/dot_config/gtk-4.0/gtk.css.tmpl +309 -0
  79. package/dot_config/gtk-4.0/settings.ini.tmpl +21 -0
  80. package/dot_config/htop/htoprc +20 -0
  81. package/dot_config/ice/README.md +13 -0
  82. package/dot_config/inputrc +2 -0
  83. package/dot_config/ipython/profile_default/ipython_config.py.tmpl +5 -0
  84. package/dot_config/just/justfile +104 -0
  85. package/dot_config/k9s/config.yaml.tmpl +65 -0
  86. package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
  87. package/dot_config/karabiner/karabiner.json +14 -0
  88. package/dot_config/kitty/kitty.conf.tmpl +517 -0
  89. package/dot_config/lazydocker/config.yml +186 -0
  90. package/dot_config/lazygit/config.yml +23 -0
  91. package/dot_config/lsd/config.yaml +19 -0
  92. package/dot_config/mas/masapps.txt +5 -0
  93. package/dot_config/minikube/config.json +13 -0
  94. package/dot_config/mise/config.toml +41 -0
  95. package/dot_config/mongosh/mongoshrc.js +67 -0
  96. package/dot_config/mycli/myclirc +67 -0
  97. package/dot_config/nano/nanorc +28 -0
  98. package/dot_config/ncdu/config +12 -0
  99. package/dot_config/nvim/init.lua +4 -0
  100. package/dot_config/nvim/lazy-lock.json +27 -0
  101. package/dot_config/nvim/lua/config/autocmds.lua +63 -0
  102. package/dot_config/nvim/lua/config/keymaps.lua +87 -0
  103. package/dot_config/nvim/lua/config/lazy.lua +34 -0
  104. package/dot_config/nvim/lua/config/options.lua +48 -0
  105. package/dot_config/nvim/lua/plugins/coding.lua +234 -0
  106. package/dot_config/nvim/lua/plugins/dap.lua +201 -0
  107. package/dot_config/nvim/lua/plugins/editor.lua +59 -0
  108. package/dot_config/nvim/lua/plugins/git.lua +9 -0
  109. package/dot_config/nvim/lua/plugins/lsp.lua +221 -0
  110. package/dot_config/nvim/lua/plugins/markdown.lua +17 -0
  111. package/dot_config/nvim/lua/plugins/rust.lua +33 -0
  112. package/dot_config/nvim/lua/plugins/sessions.lua +32 -0
  113. package/dot_config/nvim/lua/plugins/ui.lua +537 -0
  114. package/dot_config/nvim/snippets/all.lua +9 -0
  115. package/dot_config/nvim/snippets/python.lua +16 -0
  116. package/dot_config/pip/pip.conf.tmpl +32 -0
  117. package/dot_config/pypoetry/config.toml.tmpl +6 -0
  118. package/dot_config/pyrightconfig.json.tmpl +5 -0
  119. package/dot_config/raycast/README.md +13 -0
  120. package/dot_config/redis/redisclirc +41 -0
  121. package/dot_config/shell/00-container-detect.sh +53 -0
  122. package/dot_config/shell/00-core-paths.sh.tmpl +95 -0
  123. package/dot_config/shell/05-core-safety.sh.tmpl +13 -0
  124. package/dot_config/shell/40-ls-colors.sh.tmpl +31 -0
  125. package/dot_config/shell/50-logic-functions.sh.tmpl +10 -0
  126. package/dot_config/shell/90-theme-switch.sh +70 -0
  127. package/dot_config/shell/90-ux-aliases.sh.tmpl +35 -0
  128. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +23 -0
  129. package/dot_config/shell/Brewfile +207 -0
  130. package/dot_config/shell/Brewfile.cask +92 -0
  131. package/dot_config/shell/Brewfile.cli +119 -0
  132. package/dot_config/shell/README.md +267 -0
  133. package/dot_config/shell/custom/context_suggest.zsh +68 -0
  134. package/dot_config/shell/custom/error_analysis.zsh +45 -0
  135. package/dot_config/sops/dot_sops.yaml +23 -0
  136. package/dot_config/starship.toml.tmpl +124 -0
  137. package/dot_config/task/Taskfile.yml +86 -0
  138. package/dot_config/tflint/tflint.hcl.tmpl +9 -0
  139. package/dot_config/tmux/tmux.conf.tmpl +181 -0
  140. package/dot_config/topgrade/topgrade.toml.tmpl +42 -0
  141. package/dot_config/vscode/extensions.txt +11 -0
  142. package/dot_config/vscode/settings.json.tmpl +123 -0
  143. package/dot_config/waybar/style.css +8 -0
  144. package/dot_config/wezterm/wezterm.lua.tmpl +236 -0
  145. package/dot_config/wget/wgetrc +12 -0
  146. package/dot_config/yarn/yarnrc.yml.tmpl +36 -0
  147. package/dot_config/yazi/yazi.toml +40 -0
  148. package/dot_config/zellij/config.kdl +79 -0
  149. package/dot_config/zsh/dot_zprofile +13 -0
  150. package/dot_config/zsh/dot_zshenv +6 -0
  151. package/dot_config/zsh/dot_zshrc.tmpl +199 -0
  152. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +5 -0
  153. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
  154. package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +22 -0
  155. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +123 -0
  156. package/dot_config/zsh/rc.d/40-bell.zsh.tmpl +20 -0
  157. package/dot_config/zsh/rc.d/50-login-fortune.zsh.tmpl +9 -0
  158. package/dot_local/bin/executable_ai_core +130 -0
  159. package/dot_local/bin/executable_b64 +59 -0
  160. package/dot_local/bin/executable_dot +178 -0
  161. package/dot_local/bin/executable_dot_completion +55 -0
  162. package/dot_local/bin/executable_epoch +62 -0
  163. package/dot_local/bin/executable_extract +108 -0
  164. package/dot_local/bin/executable_git-ai-commit +160 -0
  165. package/dot_local/bin/executable_git-ai-diff +154 -0
  166. package/dot_local/bin/executable_hash +123 -0
  167. package/dot_local/bin/executable_hex +79 -0
  168. package/dot_local/bin/executable_ip +37 -0
  169. package/dot_local/bin/executable_jsonv +54 -0
  170. package/dot_local/bin/executable_jwt +78 -0
  171. package/dot_local/bin/executable_kill-port +59 -0
  172. package/dot_local/bin/executable_lorem +103 -0
  173. package/dot_local/bin/executable_regex +96 -0
  174. package/dot_local/bin/executable_tmux-sessionizer +187 -0
  175. package/dot_local/bin/executable_tour +137 -0
  176. package/dot_local/bin/executable_update +108 -0
  177. package/dot_local/bin/executable_uuid +57 -0
  178. package/dot_local/bin/executable_yamlv +39 -0
  179. package/dot_local/bin/executable_zig-install +89 -0
  180. package/dot_local/bin/voice_ops +7 -0
  181. package/dot_local/share/bash-completion/completions/dot +54 -0
  182. package/dot_local/share/zsh/completions/.keep +0 -0
  183. package/install.sh +255 -0
  184. package/package.json +52 -76
  185. package/scripts/ci/validate-ci-config.sh +222 -0
  186. package/scripts/demo/record.sh +41 -0
  187. package/scripts/diagnostics/benchmark.sh +201 -0
  188. package/scripts/diagnostics/doctor.sh +115 -0
  189. package/scripts/diagnostics/drift-dashboard.sh +26 -0
  190. package/scripts/diagnostics/health.sh +356 -0
  191. package/scripts/diagnostics/history-analysis.sh +77 -0
  192. package/scripts/diagnostics/security-score.sh +392 -0
  193. package/scripts/diagnostics/verify_state.sh +60 -0
  194. package/scripts/dot/commands/appearance.sh +63 -0
  195. package/scripts/dot/commands/core.sh +130 -0
  196. package/scripts/dot/commands/diagnostics.sh +100 -0
  197. package/scripts/dot/commands/meta.sh +117 -0
  198. package/scripts/dot/commands/restore.sh +209 -0
  199. package/scripts/dot/commands/secrets.sh +81 -0
  200. package/scripts/dot/commands/security.sh +73 -0
  201. package/scripts/dot/commands/tools.sh +228 -0
  202. package/scripts/dot/lib/utils.sh +72 -0
  203. package/scripts/fonts/install-nerd-fonts.sh +59 -0
  204. package/scripts/fonts/patch-fonts.sh +34 -0
  205. package/scripts/ops/chezmoi-apply.sh +42 -0
  206. package/scripts/ops/chezmoi-diff.sh +14 -0
  207. package/scripts/ops/chezmoi-remove.sh +43 -0
  208. package/scripts/ops/chezmoi-update.sh +16 -0
  209. package/scripts/ops/heal.sh +466 -0
  210. package/scripts/ops/health-check.sh +380 -0
  211. package/scripts/ops/rollback.sh +531 -0
  212. package/scripts/ops/teleport.sh +32 -0
  213. package/scripts/secrets/age-init.sh +69 -0
  214. package/scripts/secrets/create-secrets-file.sh +44 -0
  215. package/scripts/secrets/encrypt-ssh-key.sh +42 -0
  216. package/scripts/security/backup.sh +17 -0
  217. package/scripts/security/dns-doh.sh +29 -0
  218. package/scripts/security/encryption-check.sh +39 -0
  219. package/scripts/security/enforce-policies.sh +339 -0
  220. package/scripts/security/firewall.sh +34 -0
  221. package/scripts/security/lock-configs.sh +57 -0
  222. package/scripts/security/lock-screen.sh +33 -0
  223. package/scripts/security/manage-secrets.sh +415 -0
  224. package/scripts/security/telemetry-kill.sh +28 -0
  225. package/scripts/security/usb-safety.sh +29 -0
  226. package/scripts/tests/README.md +241 -0
  227. package/scripts/tests/benchmark.sh +91 -0
  228. package/scripts/tests/framework/assertions.sh +283 -0
  229. package/scripts/tests/framework/mocks.sh +201 -0
  230. package/scripts/tests/framework/test_runner.sh +189 -0
  231. package/scripts/tests/integration/test_install.sh +237 -0
  232. package/scripts/tests/performance/benchmark_runner.sh +156 -0
  233. package/scripts/tests/performance/regression_check.sh +73 -0
  234. package/scripts/tests/performance/stress_test.sh +65 -0
  235. package/scripts/tests/test-aliases.sh +25 -0
  236. package/scripts/tests/test-docker.sh +48 -0
  237. package/scripts/tests/unit/test_ai_aliases.sh +158 -0
  238. package/scripts/tests/unit/test_ai_cli_checks.sh +47 -0
  239. package/scripts/tests/unit/test_backup.sh +227 -0
  240. package/scripts/tests/unit/test_case_functions.sh +238 -0
  241. package/scripts/tests/unit/test_cd_aliases.sh +367 -0
  242. package/scripts/tests/unit/test_dot_cli.sh +217 -0
  243. package/scripts/tests/unit/test_encode64.sh +67 -0
  244. package/scripts/tests/unit/test_environment.sh +78 -0
  245. package/scripts/tests/unit/test_extract.sh +163 -0
  246. package/scripts/tests/unit/test_framework_edge_cases.sh +113 -0
  247. package/scripts/tests/unit/test_genpass.sh +298 -0
  248. package/scripts/tests/unit/test_install_edge_cases.sh +167 -0
  249. package/scripts/tests/unit/test_installers.sh +172 -0
  250. package/scripts/tests/unit/test_keygen.sh +68 -0
  251. package/scripts/tests/unit/test_logging.sh +96 -0
  252. package/scripts/tests/unit/test_os_detection_comprehensive.sh +388 -0
  253. package/scripts/tests/unit/test_package_managers_comprehensive.sh +321 -0
  254. package/scripts/tests/unit/test_prependpath.sh +66 -0
  255. package/scripts/tests/unit/test_prependpath_refactored.sh +89 -0
  256. package/scripts/tests/unit/test_rd.sh +230 -0
  257. package/scripts/tests/unit/test_security_fixes.sh +130 -0
  258. package/scripts/tests/unit/test_security_scripts.sh +87 -0
  259. package/scripts/tests/unit/test_template_validation.sh +238 -0
  260. package/scripts/tests/unit/test_utility_functions.sh +144 -0
  261. package/scripts/tests/unit/test_wave1_alias_split.sh +132 -0
  262. package/scripts/tests/unit/test_wave1_ci_pinning.sh +61 -0
  263. package/scripts/tests/unit/test_wave1_gitleaks_config.sh +52 -0
  264. package/scripts/tests/unit/test_wave1_heal_fixes.sh +97 -0
  265. package/scripts/tests/unit/test_wave1_install_gpg.sh +35 -0
  266. package/scripts/tests/unit/test_wave1_zshenv_path.sh +89 -0
  267. package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +115 -0
  268. package/scripts/tests/unit/test_wave2_dot_new_guard.sh +75 -0
  269. package/scripts/tests/unit/test_zipf.sh +76 -0
  270. package/scripts/theme/apply-gnome-theme.sh +297 -0
  271. package/scripts/theme/install-boot-logo.sh +61 -0
  272. package/scripts/theme/install-catppuccin-themes.sh +346 -0
  273. package/scripts/theme/install-cursors.sh +24 -0
  274. package/scripts/theme/install-file-icons.sh +25 -0
  275. package/scripts/theme/install-grub-theme.sh +51 -0
  276. package/scripts/theme/install-lock-icon.sh +29 -0
  277. package/scripts/theme/switch.sh +250 -0
  278. package/scripts/theme/wallpaper-rotate.sh +82 -0
  279. package/scripts/theme/wallpaper-sync.sh +42 -0
  280. package/scripts/tools/cmatrix.sh +20 -0
  281. package/scripts/tools/detect-collisions.py +84 -0
  282. package/scripts/tools/emoji-picker.sh +45 -0
  283. package/scripts/tools/figlet-banner.sh +17 -0
  284. package/scripts/tools/log-rotate.sh +29 -0
  285. package/scripts/tools/lolcat-wrap.sh +18 -0
  286. package/scripts/tools/pipes.sh +47 -0
  287. package/scripts/tuning/linux.sh +175 -0
  288. package/scripts/tuning/macos.sh +46 -0
  289. package/templates/projects/go/README.md +7 -0
  290. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +7 -0
  291. package/templates/projects/go/go.mod +3 -0
  292. package/templates/projects/molecule/README.md +7 -0
  293. package/templates/projects/molecule/converge.yml +7 -0
  294. package/templates/projects/molecule/molecule.yml +16 -0
  295. package/templates/projects/node/README.md +7 -0
  296. package/templates/projects/node/package.json +10 -0
  297. package/templates/projects/node/src/index.js +2 -0
  298. package/templates/projects/packer/README.md +15 -0
  299. package/templates/projects/packer/main.pkr.hcl +15 -0
  300. package/templates/projects/python/README.md +7 -0
  301. package/templates/projects/python/pyproject.toml +25 -0
  302. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  303. package/templates/projects/python/tests/test_basic.py +2 -0
  304. package/dist/Makefile +0 -140
  305. package/dist/bin/backup.d.ts +0 -3
  306. package/dist/bin/backup.d.ts.map +0 -1
  307. package/dist/bin/backup.js +0 -4
  308. package/dist/bin/backup.js.map +0 -1
  309. package/dist/bin/constants.d.ts +0 -7
  310. package/dist/bin/constants.d.ts.map +0 -1
  311. package/dist/bin/constants.js +0 -2
  312. package/dist/bin/constants.js.map +0 -1
  313. package/dist/bin/copy.d.ts +0 -3
  314. package/dist/bin/copy.d.ts.map +0 -1
  315. package/dist/bin/copy.js +0 -3
  316. package/dist/bin/copy.js.map +0 -1
  317. package/dist/bin/dotfiles.d.ts +0 -3
  318. package/dist/bin/dotfiles.d.ts.map +0 -1
  319. package/dist/bin/dotfiles.js +0 -2
  320. package/dist/bin/dotfiles.js.map +0 -1
  321. package/dist/bin/download.d.ts +0 -3
  322. package/dist/bin/download.d.ts.map +0 -1
  323. package/dist/bin/download.js +0 -2
  324. package/dist/bin/download.js.map +0 -1
  325. package/dist/bin/index.d.ts +0 -2
  326. package/dist/bin/index.d.ts.map +0 -1
  327. package/dist/bin/index.js +0 -1
  328. package/dist/bin/index.js.map +0 -1
  329. package/dist/bin/transfer.d.ts +0 -3
  330. package/dist/bin/transfer.d.ts.map +0 -1
  331. package/dist/bin/transfer.js +0 -4
  332. package/dist/bin/transfer.js.map +0 -1
  333. package/dist/bin/unpack.d.ts +0 -3
  334. package/dist/bin/unpack.d.ts.map +0 -1
  335. package/dist/bin/unpack.js +0 -3
  336. package/dist/bin/unpack.js.map +0 -1
  337. package/dist/filesizes.txt +0 -382
  338. package/dist/lib/README.md +0 -86
  339. package/dist/lib/aliases/README.md +0 -57
  340. package/dist/lib/aliases/archives/README.md +0 -145
  341. package/dist/lib/aliases/archives/archives.aliases.sh +0 -114
  342. package/dist/lib/aliases/cd/README.md +0 -146
  343. package/dist/lib/aliases/cd/cd.aliases.sh +0 -51
  344. package/dist/lib/aliases/chmod/README.md +0 -160
  345. package/dist/lib/aliases/chmod/chmod.aliases.sh +0 -107
  346. package/dist/lib/aliases/clear/README.md +0 -37
  347. package/dist/lib/aliases/clear/clear.aliases.sh +0 -71
  348. package/dist/lib/aliases/configuration/README.md +0 -39
  349. package/dist/lib/aliases/configuration/configuration.aliases.sh +0 -70
  350. package/dist/lib/aliases/default/README.md +0 -40
  351. package/dist/lib/aliases/default/default.aliases.sh +0 -139
  352. package/dist/lib/aliases/dig/README.md +0 -37
  353. package/dist/lib/aliases/dig/dig.aliases.sh +0 -43
  354. package/dist/lib/aliases/disk-usage/README.md +0 -36
  355. package/dist/lib/aliases/disk-usage/du.aliases.sh +0 -84
  356. package/dist/lib/aliases/editor/README.md +0 -53
  357. package/dist/lib/aliases/editor/editor.aliases.sh +0 -26
  358. package/dist/lib/aliases/find/README.md +0 -46
  359. package/dist/lib/aliases/find/find.aliases.sh +0 -60
  360. package/dist/lib/aliases/gcloud/README.md +0 -63
  361. package/dist/lib/aliases/gcloud/gcloud.aliases.sh +0 -335
  362. package/dist/lib/aliases/git/README.md +0 -153
  363. package/dist/lib/aliases/git/git.aliases.sh +0 -544
  364. package/dist/lib/aliases/gnu/README.md +0 -89
  365. package/dist/lib/aliases/gnu/gnucoreutils-aliases.sh +0 -150
  366. package/dist/lib/aliases/heroku/README.md +0 -430
  367. package/dist/lib/aliases/heroku/heroku.aliases.sh +0 -1053
  368. package/dist/lib/aliases/interactive/README.md +0 -55
  369. package/dist/lib/aliases/interactive/interactive.aliases.sh +0 -50
  370. package/dist/lib/aliases/list/README.md +0 -131
  371. package/dist/lib/aliases/list/list.aliases.sh +0 -132
  372. package/dist/lib/aliases/macOS/README.md +0 -42
  373. package/dist/lib/aliases/macOS/macos.aliases.sh +0 -65
  374. package/dist/lib/aliases/make/README.md +0 -32
  375. package/dist/lib/aliases/make/make.aliases.sh +0 -35
  376. package/dist/lib/aliases/mkdir/README.md +0 -30
  377. package/dist/lib/aliases/mkdir/mkdir.aliases.sh +0 -29
  378. package/dist/lib/aliases/npm/README.md +0 -41
  379. package/dist/lib/aliases/npm/npm.aliases.sh +0 -61
  380. package/dist/lib/aliases/permission/README.md +0 -47
  381. package/dist/lib/aliases/permission/permission.aliases.sh +0 -73
  382. package/dist/lib/aliases/pnpm/README.md +0 -53
  383. package/dist/lib/aliases/pnpm/pnpm.aliases.sh +0 -76
  384. package/dist/lib/aliases/ps/README.md +0 -29
  385. package/dist/lib/aliases/ps/ps.aliases.sh +0 -20
  386. package/dist/lib/aliases/python/python.aliases.sh +0 -141
  387. package/dist/lib/aliases/rsync/README.md +0 -25
  388. package/dist/lib/aliases/rsync/rsync.aliases.sh +0 -17
  389. package/dist/lib/aliases/rust/README.md +0 -182
  390. package/dist/lib/aliases/rust/rust.aliases.sh +0 -119
  391. package/dist/lib/aliases/subversion/README.md +0 -66
  392. package/dist/lib/aliases/subversion/subversion.aliases.sh +0 -47
  393. package/dist/lib/aliases/sudo/README.md +0 -27
  394. package/dist/lib/aliases/sudo/sudo.aliases.sh +0 -20
  395. package/dist/lib/aliases/tmux/README.md +0 -31
  396. package/dist/lib/aliases/tmux/tmux.aliases.sh +0 -36
  397. package/dist/lib/aliases/update/README.md +0 -38
  398. package/dist/lib/aliases/update/update.aliases.sh +0 -310
  399. package/dist/lib/aliases/uuid/README.md +0 -24
  400. package/dist/lib/aliases/uuid/uuid.aliases.sh +0 -19
  401. package/dist/lib/aliases/wget/README.md +0 -27
  402. package/dist/lib/aliases/wget/wget.aliases.sh +0 -22
  403. package/dist/lib/aliases.sh +0 -50
  404. package/dist/lib/configurations/README.md +0 -18
  405. package/dist/lib/configurations/bash/bashrc +0 -167
  406. package/dist/lib/configurations/curl/cacert.pem +0 -3460
  407. package/dist/lib/configurations/curl/curlrc +0 -53
  408. package/dist/lib/configurations/default/color.sh +0 -24
  409. package/dist/lib/configurations/default/constants.sh +0 -43
  410. package/dist/lib/configurations/default/editor.sh +0 -18
  411. package/dist/lib/configurations/default/prompt.sh +0 -48
  412. package/dist/lib/configurations/input/inputrc +0 -23
  413. package/dist/lib/configurations/jshint/jshintrc +0 -37
  414. package/dist/lib/configurations/nano/nanorc +0 -35
  415. package/dist/lib/configurations/profile/profile +0 -37
  416. package/dist/lib/configurations/prompt/prompt.sh +0 -81
  417. package/dist/lib/configurations/tmux/default +0 -18
  418. package/dist/lib/configurations/tmux/display +0 -30
  419. package/dist/lib/configurations/tmux/linux +0 -18
  420. package/dist/lib/configurations/tmux/navigation +0 -30
  421. package/dist/lib/configurations/tmux/panes +0 -10
  422. package/dist/lib/configurations/tmux/theme +0 -29
  423. package/dist/lib/configurations/tmux/tmux +0 -21
  424. package/dist/lib/configurations/vim/vimrc +0 -193
  425. package/dist/lib/configurations/wget/wgetrc +0 -40
  426. package/dist/lib/configurations/zsh/zshrc +0 -50
  427. package/dist/lib/configurations.sh +0 -45
  428. package/dist/lib/functions/README.md +0 -92
  429. package/dist/lib/functions/apihealth.sh +0 -277
  430. package/dist/lib/functions/apilatency.sh +0 -157
  431. package/dist/lib/functions/apiload.sh +0 -165
  432. package/dist/lib/functions/backup.sh +0 -143
  433. package/dist/lib/functions/cdls.sh +0 -60
  434. package/dist/lib/functions/curlheader.sh +0 -78
  435. package/dist/lib/functions/curlstatus.sh +0 -74
  436. package/dist/lib/functions/curltime.sh +0 -75
  437. package/dist/lib/functions/encode64.sh +0 -107
  438. package/dist/lib/functions/environment.sh +0 -78
  439. package/dist/lib/functions/extract.sh +0 -86
  440. package/dist/lib/functions/freespace.sh +0 -67
  441. package/dist/lib/functions/genpwd.sh +0 -105
  442. package/dist/lib/functions/goto.sh +0 -67
  443. package/dist/lib/functions/hexdump.sh +0 -96
  444. package/dist/lib/functions/hiddenfiles.sh +0 -77
  445. package/dist/lib/functions/hostinfo.sh +0 -98
  446. package/dist/lib/functions/hstats.sh +0 -75
  447. package/dist/lib/functions/httpdebug.sh +0 -113
  448. package/dist/lib/functions/kebabcase.sh +0 -61
  449. package/dist/lib/functions/keygen.sh +0 -194
  450. package/dist/lib/functions/last.sh +0 -112
  451. package/dist/lib/functions/logout.sh +0 -120
  452. package/dist/lib/functions/lowercase.sh +0 -61
  453. package/dist/lib/functions/matrix.sh +0 -216
  454. package/dist/lib/functions/mount_read_only.sh +0 -11
  455. package/dist/lib/functions/myproc.sh +0 -9
  456. package/dist/lib/functions/prependpath.sh +0 -21
  457. package/dist/lib/functions/ql.sh +0 -9
  458. package/dist/lib/functions/rd.sh +0 -17
  459. package/dist/lib/functions/remove_disk.sh +0 -11
  460. package/dist/lib/functions/ren.sh +0 -73
  461. package/dist/lib/functions/sentencecase.sh +0 -63
  462. package/dist/lib/functions/showhiddenfiles.sh +0 -14
  463. package/dist/lib/functions/size.sh +0 -16
  464. package/dist/lib/functions/snakecase.sh +0 -61
  465. package/dist/lib/functions/stopwatch.sh +0 -15
  466. package/dist/lib/functions/sysinfo.sh +0 -145
  467. package/dist/lib/functions/titlecase.sh +0 -65
  468. package/dist/lib/functions/uppercase.sh +0 -61
  469. package/dist/lib/functions/view-source.sh +0 -9
  470. package/dist/lib/functions/vscode.sh +0 -32
  471. package/dist/lib/functions/whoisport.sh +0 -14
  472. package/dist/lib/functions/zipf.sh +0 -16
  473. package/dist/lib/functions.sh +0 -46
  474. package/dist/lib/history.sh +0 -90
  475. package/dist/lib/paths/README.md +0 -52
  476. package/dist/lib/paths/custom.paths.sh +0 -40
  477. package/dist/lib/paths/default.paths.sh +0 -37
  478. package/dist/lib/paths.sh +0 -46
  479. package/dist/scripts/backup.sh +0 -95
  480. package/dist/scripts/banner.sh +0 -20
  481. package/dist/scripts/build.sh +0 -41
  482. package/dist/scripts/clean.sh +0 -31
  483. package/dist/scripts/compile.sh +0 -54
  484. package/dist/scripts/copy.sh +0 -108
  485. package/dist/scripts/dotfiles.sh +0 -63
  486. package/dist/scripts/download.sh +0 -35
  487. package/dist/scripts/help.sh +0 -57
  488. package/dist/scripts/ssh.sh +0 -55
  489. package/dist/scripts/unpack.sh +0 -28
  490. /package/{dist/lib/configurations → dot_config}/gem/gemrc +0 -0
@@ -0,0 +1,250 @@
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
@@ -0,0 +1,82 @@
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
@@ -0,0 +1,42 @@
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"
@@ -0,0 +1,20 @@
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[@]}" "$@"
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env python3
2
+ # MIT License
3
+ # Copyright (c) 2026 Sebastien Rousseau
4
+ # See LICENSE file for details.
5
+
6
+ import os
7
+ import re
8
+ import sys
9
+
10
+ BASE_DIR = os.path.expanduser("~/.dotfiles/.chezmoitemplates")
11
+ ALIASES_DIR = os.path.join(BASE_DIR, "aliases")
12
+ FUNCTIONS_DIR = os.path.join(BASE_DIR, "functions")
13
+
14
+ definitions = {}
15
+ collisions = []
16
+
17
+ def scan_file(filepath, kind):
18
+ with open(filepath, 'r', encoding='utf-8', errors='ignore') as f:
19
+ content = f.read()
20
+
21
+ # Regex for aliases: alias name='...' or alias name="..."
22
+ # We focus on the name.
23
+ if kind == "alias":
24
+ # simple regex, might miss multi-line or complex cases but good enough for 99%
25
+ matches = re.findall(r"^\s*alias\s+([a-zA-Z0-9_-]+)=['\"]", content, re.MULTILINE)
26
+ for name in matches:
27
+ record_definition(name, "alias", filepath)
28
+
29
+ # Regex for functions: name() { or function name {
30
+ if kind == "function":
31
+ matches = re.findall(r"^([a-zA-Z0-9_-]+)\s*\(\)\s*\{", content, re.MULTILINE)
32
+ for name in matches:
33
+ record_definition(name, "function", filepath)
34
+
35
+ matches_kwd = re.findall(r"^function\s+([a-zA-Z0-9_-]+)", content, re.MULTILINE)
36
+ for name in matches_kwd:
37
+ record_definition(name, "function", filepath)
38
+
39
+ def record_definition(name, kind, filepath):
40
+ rel_path = os.path.relpath(filepath, BASE_DIR)
41
+
42
+ if name in definitions:
43
+ prev_def = definitions[name]
44
+ # Ignore if it's the exact same file (unlikely unless file parsed twice)
45
+ if prev_def['filepath'] != rel_path:
46
+ collisions.append({
47
+ "name": name,
48
+ "kind": kind,
49
+ "conflict_with_kind": prev_def['kind'],
50
+ "file1": prev_def['filepath'],
51
+ "file2": rel_path
52
+ })
53
+ else:
54
+ definitions[name] = {
55
+ "kind": kind,
56
+ "filepath": rel_path
57
+ }
58
+
59
+ def main():
60
+ print(f"Scanning for collisions within {BASE_DIR}...")
61
+
62
+ # Scan Aliases
63
+ for root, _, files in os.walk(ALIASES_DIR):
64
+ for file in files:
65
+ if file.endswith(".sh"):
66
+ scan_file(os.path.join(root, file), "alias")
67
+
68
+ # Scan Functions
69
+ for root, _, files in os.walk(FUNCTIONS_DIR):
70
+ for file in files:
71
+ if file.endswith(".sh"):
72
+ scan_file(os.path.join(root, file), "function")
73
+
74
+ if collisions:
75
+ print(f"\n❌ Found {len(collisions)} collisions/duplicates:")
76
+ for c in collisions:
77
+ print(f" - '{c['name']}' ({c['kind']}) in {c['file2']} conflicts with ({c['conflict_with_kind']}) in {c['file1']}")
78
+ sys.exit(1)
79
+ else:
80
+ print("\n✅ No collisions found between aliases and functions.")
81
+ sys.exit(0)
82
+
83
+ if __name__ == "__main__":
84
+ main()
@@ -0,0 +1,45 @@
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
@@ -0,0 +1,17 @@
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"
@@ -0,0 +1,29 @@
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}"
@@ -0,0 +1,18 @@
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
@@ -0,0 +1,47 @@
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