@fredlackey/devutils 0.0.18 → 0.1.0

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 (447) hide show
  1. package/README.md +214 -141
  2. package/package.json +8 -83
  3. package/src/api/loader.js +229 -0
  4. package/src/api/registry.json +62 -0
  5. package/src/cli.js +293 -60
  6. package/src/commands/ai/index.js +16 -0
  7. package/src/commands/ai/launch.js +112 -0
  8. package/src/commands/ai/list.js +54 -0
  9. package/src/commands/ai/resume.js +70 -0
  10. package/src/commands/ai/sessions.js +121 -0
  11. package/src/commands/ai/set.js +131 -0
  12. package/src/commands/ai/show.js +74 -0
  13. package/src/commands/ai/tools.js +46 -0
  14. package/src/commands/alias/add.js +93 -0
  15. package/src/commands/alias/helpers.js +107 -0
  16. package/src/commands/alias/index.js +14 -0
  17. package/src/commands/alias/list.js +55 -0
  18. package/src/commands/alias/remove.js +62 -0
  19. package/src/commands/alias/sync.js +109 -0
  20. package/src/commands/api/disable.js +73 -0
  21. package/src/commands/api/enable.js +148 -0
  22. package/src/commands/api/index.js +15 -0
  23. package/src/commands/api/list.js +66 -0
  24. package/src/commands/api/update.js +87 -0
  25. package/src/commands/auth/index.js +15 -0
  26. package/src/commands/auth/list.js +49 -0
  27. package/src/commands/auth/login.js +384 -0
  28. package/src/commands/auth/logout.js +111 -0
  29. package/src/commands/auth/refresh.js +184 -0
  30. package/src/commands/auth/services.js +169 -0
  31. package/src/commands/auth/status.js +104 -0
  32. package/src/commands/config/export.js +224 -0
  33. package/src/commands/config/get.js +52 -0
  34. package/src/commands/config/import.js +308 -0
  35. package/src/commands/config/index.js +17 -0
  36. package/src/commands/config/init.js +143 -0
  37. package/src/commands/config/reset.js +57 -0
  38. package/src/commands/config/set.js +93 -0
  39. package/src/commands/config/show.js +35 -0
  40. package/src/commands/help.js +338 -0
  41. package/src/commands/identity/add.js +133 -0
  42. package/src/commands/identity/index.js +17 -0
  43. package/src/commands/identity/link.js +76 -0
  44. package/src/commands/identity/list.js +48 -0
  45. package/src/commands/identity/remove.js +72 -0
  46. package/src/commands/identity/show.js +65 -0
  47. package/src/commands/identity/sync.js +172 -0
  48. package/src/commands/identity/unlink.js +57 -0
  49. package/src/commands/ignore/add.js +165 -0
  50. package/src/commands/ignore/index.js +14 -0
  51. package/src/commands/ignore/list.js +89 -0
  52. package/src/commands/ignore/markers.js +43 -0
  53. package/src/commands/ignore/remove.js +164 -0
  54. package/src/commands/ignore/show.js +169 -0
  55. package/src/commands/machine/detect.js +122 -0
  56. package/src/commands/machine/index.js +14 -0
  57. package/src/commands/machine/list.js +74 -0
  58. package/src/commands/machine/set.js +106 -0
  59. package/src/commands/machine/show.js +35 -0
  60. package/src/commands/schema.js +152 -0
  61. package/src/commands/search/collections.js +134 -0
  62. package/src/commands/search/get.js +71 -0
  63. package/src/commands/search/index-cmd.js +54 -0
  64. package/src/commands/search/index.js +21 -0
  65. package/src/commands/search/keyword.js +60 -0
  66. package/src/commands/search/qmd.js +70 -0
  67. package/src/commands/search/query.js +64 -0
  68. package/src/commands/search/semantic.js +62 -0
  69. package/src/commands/search/status.js +46 -0
  70. package/src/commands/status.js +224 -171
  71. package/src/commands/tools/check.js +79 -0
  72. package/src/commands/tools/index.js +14 -0
  73. package/src/commands/tools/install.js +110 -0
  74. package/src/commands/tools/list.js +91 -0
  75. package/src/commands/tools/search.js +60 -0
  76. package/src/commands/update.js +83 -112
  77. package/src/commands/util/add.js +151 -0
  78. package/src/commands/util/index.js +15 -0
  79. package/src/commands/util/list.js +97 -0
  80. package/src/commands/util/remove.js +76 -0
  81. package/src/commands/util/run.js +79 -0
  82. package/src/commands/util/show.js +67 -0
  83. package/src/commands/version.js +21 -88
  84. package/src/installers/_template.js +104 -0
  85. package/src/installers/git.js +150 -0
  86. package/src/installers/homebrew.js +190 -0
  87. package/src/installers/node.js +223 -0
  88. package/src/installers/registry.json +29 -0
  89. package/src/lib/config.js +125 -0
  90. package/src/lib/detect.js +74 -0
  91. package/src/lib/errors.js +114 -0
  92. package/src/lib/github.js +315 -0
  93. package/src/lib/installer.js +225 -0
  94. package/src/lib/output.js +239 -0
  95. package/src/lib/platform.js +112 -0
  96. package/src/lib/platforms/amazon-linux.js +41 -0
  97. package/src/lib/platforms/gitbash.js +46 -0
  98. package/src/lib/platforms/macos.js +45 -0
  99. package/src/lib/platforms/raspbian.js +41 -0
  100. package/src/lib/platforms/ubuntu.js +39 -0
  101. package/src/lib/platforms/windows.js +45 -0
  102. package/src/lib/prompt.js +161 -0
  103. package/src/lib/schema.js +211 -0
  104. package/src/lib/shell.js +75 -0
  105. package/src/patterns/gitignore/claude-code.txt +25 -0
  106. package/src/patterns/gitignore/docker.txt +15 -0
  107. package/src/patterns/gitignore/go.txt +24 -0
  108. package/src/patterns/gitignore/java.txt +38 -0
  109. package/src/patterns/gitignore/jetbrains.txt +26 -0
  110. package/src/patterns/gitignore/linux.txt +18 -0
  111. package/src/patterns/gitignore/macos.txt +27 -0
  112. package/src/patterns/gitignore/node.txt +51 -0
  113. package/src/patterns/gitignore/python.txt +55 -0
  114. package/src/patterns/gitignore/rust.txt +14 -0
  115. package/src/patterns/gitignore/terraform.txt +30 -0
  116. package/src/patterns/gitignore/vscode.txt +15 -0
  117. package/src/patterns/gitignore/windows.txt +25 -0
  118. package/src/utils/clone/index.js +165 -0
  119. package/src/utils/git-push/index.js +230 -0
  120. package/src/utils/git-status/index.js +116 -0
  121. package/src/utils/git-status/unix.sh +75 -0
  122. package/src/utils/registry.json +41 -0
  123. package/bin/dev.js +0 -16
  124. package/files/README.md +0 -0
  125. package/files/claude/.claude/commands/setup-context.md +0 -3
  126. package/files/monorepos/_archive/README.md +0 -36
  127. package/files/monorepos/_legacy/README.md +0 -36
  128. package/files/monorepos/ai-docs/README.md +0 -33
  129. package/files/monorepos/apps/README.md +0 -24
  130. package/files/monorepos/docs/README.md +0 -40
  131. package/files/monorepos/packages/README.md +0 -25
  132. package/files/monorepos/research/README.md +0 -29
  133. package/files/monorepos/scripts/README.md +0 -24
  134. package/src/commands/README.md +0 -41
  135. package/src/commands/configure.js +0 -199
  136. package/src/commands/identity.js +0 -1630
  137. package/src/commands/ignore.js +0 -247
  138. package/src/commands/install.js +0 -526
  139. package/src/commands/setup.js +0 -246
  140. package/src/completion.js +0 -284
  141. package/src/constants.js +0 -45
  142. package/src/ignore/claude-code.txt +0 -10
  143. package/src/ignore/docker.txt +0 -18
  144. package/src/ignore/linux.txt +0 -23
  145. package/src/ignore/macos.txt +0 -36
  146. package/src/ignore/node.txt +0 -55
  147. package/src/ignore/terraform.txt +0 -37
  148. package/src/ignore/vscode.txt +0 -18
  149. package/src/ignore/windows.txt +0 -35
  150. package/src/index.js +0 -0
  151. package/src/installs/README.md +0 -399
  152. package/src/installs/adobe-creative-cloud.js +0 -546
  153. package/src/installs/adobe-creative-cloud.md +0 -605
  154. package/src/installs/appcleaner.js +0 -321
  155. package/src/installs/appcleaner.md +0 -699
  156. package/src/installs/apt-transport-https.js +0 -390
  157. package/src/installs/apt-transport-https.md +0 -678
  158. package/src/installs/atomicparsley.js +0 -642
  159. package/src/installs/atomicparsley.md +0 -795
  160. package/src/installs/aws-cli.js +0 -797
  161. package/src/installs/aws-cli.md +0 -727
  162. package/src/installs/balena-etcher.js +0 -710
  163. package/src/installs/balena-etcher.md +0 -761
  164. package/src/installs/bambu-studio.js +0 -1143
  165. package/src/installs/bambu-studio.md +0 -780
  166. package/src/installs/bash-completion.js +0 -575
  167. package/src/installs/bash-completion.md +0 -833
  168. package/src/installs/bash.js +0 -417
  169. package/src/installs/bash.md +0 -993
  170. package/src/installs/beyond-compare.js +0 -603
  171. package/src/installs/beyond-compare.md +0 -813
  172. package/src/installs/brave-browser.js +0 -968
  173. package/src/installs/brave-browser.md +0 -650
  174. package/src/installs/build-essential.js +0 -529
  175. package/src/installs/build-essential.md +0 -977
  176. package/src/installs/ca-certificates.js +0 -618
  177. package/src/installs/ca-certificates.md +0 -937
  178. package/src/installs/caffeine.js +0 -508
  179. package/src/installs/caffeine.md +0 -839
  180. package/src/installs/camtasia.js +0 -596
  181. package/src/installs/camtasia.md +0 -762
  182. package/src/installs/chatgpt.js +0 -476
  183. package/src/installs/chatgpt.md +0 -814
  184. package/src/installs/chocolatey.js +0 -456
  185. package/src/installs/chocolatey.md +0 -661
  186. package/src/installs/chrome-canary.js +0 -419
  187. package/src/installs/chrome-canary.md +0 -641
  188. package/src/installs/chromium.js +0 -667
  189. package/src/installs/chromium.md +0 -838
  190. package/src/installs/claude-code.js +0 -576
  191. package/src/installs/claude-code.md +0 -1173
  192. package/src/installs/cloudflare-warp.js +0 -900
  193. package/src/installs/cloudflare-warp.md +0 -1047
  194. package/src/installs/comet-browser.js +0 -588
  195. package/src/installs/comet-browser.md +0 -731
  196. package/src/installs/curl.js +0 -379
  197. package/src/installs/curl.md +0 -714
  198. package/src/installs/cursor.js +0 -579
  199. package/src/installs/cursor.md +0 -970
  200. package/src/installs/dbeaver.js +0 -924
  201. package/src/installs/dbeaver.md +0 -939
  202. package/src/installs/dbschema.js +0 -692
  203. package/src/installs/dbschema.md +0 -925
  204. package/src/installs/dependencies.md +0 -453
  205. package/src/installs/development-tools.js +0 -600
  206. package/src/installs/development-tools.md +0 -977
  207. package/src/installs/docker.js +0 -1029
  208. package/src/installs/docker.md +0 -1109
  209. package/src/installs/drawio.js +0 -1019
  210. package/src/installs/drawio.md +0 -795
  211. package/src/installs/elmedia-player.js +0 -347
  212. package/src/installs/elmedia-player.md +0 -556
  213. package/src/installs/ffmpeg.js +0 -889
  214. package/src/installs/ffmpeg.md +0 -852
  215. package/src/installs/file.js +0 -464
  216. package/src/installs/file.md +0 -987
  217. package/src/installs/gemini-cli.js +0 -811
  218. package/src/installs/gemini-cli.md +0 -1153
  219. package/src/installs/git.js +0 -400
  220. package/src/installs/git.md +0 -907
  221. package/src/installs/gitego.js +0 -949
  222. package/src/installs/gitego.md +0 -1172
  223. package/src/installs/go.js +0 -931
  224. package/src/installs/go.md +0 -958
  225. package/src/installs/google-antigravity.js +0 -913
  226. package/src/installs/google-antigravity.md +0 -1075
  227. package/src/installs/google-chrome.js +0 -833
  228. package/src/installs/google-chrome.md +0 -862
  229. package/src/installs/gpg.js +0 -480
  230. package/src/installs/gpg.md +0 -1056
  231. package/src/installs/homebrew.js +0 -1028
  232. package/src/installs/homebrew.md +0 -988
  233. package/src/installs/imageoptim.js +0 -968
  234. package/src/installs/imageoptim.md +0 -1119
  235. package/src/installs/installers.json +0 -4032
  236. package/src/installs/installers.json.tmp +0 -3953
  237. package/src/installs/jq.js +0 -400
  238. package/src/installs/jq.md +0 -809
  239. package/src/installs/keyboard-maestro.js +0 -719
  240. package/src/installs/keyboard-maestro.md +0 -825
  241. package/src/installs/kiro.js +0 -864
  242. package/src/installs/kiro.md +0 -1015
  243. package/src/installs/latex.js +0 -789
  244. package/src/installs/latex.md +0 -1095
  245. package/src/installs/lftp.js +0 -356
  246. package/src/installs/lftp.md +0 -907
  247. package/src/installs/lsb-release.js +0 -346
  248. package/src/installs/lsb-release.md +0 -814
  249. package/src/installs/messenger.js +0 -847
  250. package/src/installs/messenger.md +0 -900
  251. package/src/installs/microsoft-office.js +0 -568
  252. package/src/installs/microsoft-office.md +0 -760
  253. package/src/installs/microsoft-teams.js +0 -801
  254. package/src/installs/microsoft-teams.md +0 -886
  255. package/src/installs/moom.js +0 -326
  256. package/src/installs/moom.md +0 -570
  257. package/src/installs/node.js +0 -904
  258. package/src/installs/node.md +0 -1153
  259. package/src/installs/nordpass.js +0 -716
  260. package/src/installs/nordpass.md +0 -921
  261. package/src/installs/nordvpn.js +0 -892
  262. package/src/installs/nordvpn.md +0 -1052
  263. package/src/installs/nvm.js +0 -995
  264. package/src/installs/nvm.md +0 -1057
  265. package/src/installs/ohmyzsh.js +0 -529
  266. package/src/installs/ohmyzsh.md +0 -1094
  267. package/src/installs/openssh.js +0 -804
  268. package/src/installs/openssh.md +0 -1056
  269. package/src/installs/pandoc.js +0 -662
  270. package/src/installs/pandoc.md +0 -1036
  271. package/src/installs/parallels-desktop.js +0 -431
  272. package/src/installs/parallels-desktop.md +0 -446
  273. package/src/installs/pinentry.js +0 -510
  274. package/src/installs/pinentry.md +0 -1142
  275. package/src/installs/pngyu.js +0 -869
  276. package/src/installs/pngyu.md +0 -896
  277. package/src/installs/postman.js +0 -799
  278. package/src/installs/postman.md +0 -940
  279. package/src/installs/procps.js +0 -425
  280. package/src/installs/procps.md +0 -851
  281. package/src/installs/safari-tech-preview.js +0 -374
  282. package/src/installs/safari-tech-preview.md +0 -533
  283. package/src/installs/sfnt2woff.js +0 -658
  284. package/src/installs/sfnt2woff.md +0 -795
  285. package/src/installs/shellcheck.js +0 -481
  286. package/src/installs/shellcheck.md +0 -1005
  287. package/src/installs/slack.js +0 -741
  288. package/src/installs/slack.md +0 -865
  289. package/src/installs/snagit.js +0 -585
  290. package/src/installs/snagit.md +0 -844
  291. package/src/installs/software-properties-common.js +0 -372
  292. package/src/installs/software-properties-common.md +0 -805
  293. package/src/installs/spotify.js +0 -877
  294. package/src/installs/spotify.md +0 -901
  295. package/src/installs/studio-3t.js +0 -823
  296. package/src/installs/studio-3t.md +0 -918
  297. package/src/installs/sublime-text.js +0 -804
  298. package/src/installs/sublime-text.md +0 -914
  299. package/src/installs/superwhisper.js +0 -706
  300. package/src/installs/superwhisper.md +0 -630
  301. package/src/installs/tailscale.js +0 -745
  302. package/src/installs/tailscale.md +0 -1100
  303. package/src/installs/tar.js +0 -389
  304. package/src/installs/tar.md +0 -946
  305. package/src/installs/termius.js +0 -798
  306. package/src/installs/termius.md +0 -844
  307. package/src/installs/terraform.js +0 -779
  308. package/src/installs/terraform.md +0 -899
  309. package/src/installs/tfenv.js +0 -778
  310. package/src/installs/tfenv.md +0 -1091
  311. package/src/installs/tidal.js +0 -771
  312. package/src/installs/tidal.md +0 -864
  313. package/src/installs/tmux.js +0 -346
  314. package/src/installs/tmux.md +0 -1030
  315. package/src/installs/tree.js +0 -411
  316. package/src/installs/tree.md +0 -833
  317. package/src/installs/unzip.js +0 -460
  318. package/src/installs/unzip.md +0 -879
  319. package/src/installs/vim.js +0 -421
  320. package/src/installs/vim.md +0 -1040
  321. package/src/installs/vlc.js +0 -821
  322. package/src/installs/vlc.md +0 -927
  323. package/src/installs/vscode.js +0 -843
  324. package/src/installs/vscode.md +0 -1002
  325. package/src/installs/wget.js +0 -420
  326. package/src/installs/wget.md +0 -791
  327. package/src/installs/whatsapp.js +0 -729
  328. package/src/installs/whatsapp.md +0 -854
  329. package/src/installs/winpty.js +0 -352
  330. package/src/installs/winpty.md +0 -620
  331. package/src/installs/woff2.js +0 -553
  332. package/src/installs/woff2.md +0 -977
  333. package/src/installs/wsl.js +0 -572
  334. package/src/installs/wsl.md +0 -699
  335. package/src/installs/xcode-clt.js +0 -520
  336. package/src/installs/xcode-clt.md +0 -351
  337. package/src/installs/xcode.js +0 -560
  338. package/src/installs/xcode.md +0 -573
  339. package/src/installs/yarn.js +0 -824
  340. package/src/installs/yarn.md +0 -1074
  341. package/src/installs/yq.js +0 -654
  342. package/src/installs/yq.md +0 -944
  343. package/src/installs/yt-dlp.js +0 -701
  344. package/src/installs/yt-dlp.md +0 -946
  345. package/src/installs/yum-utils.js +0 -297
  346. package/src/installs/yum-utils.md +0 -648
  347. package/src/installs/zoom.js +0 -759
  348. package/src/installs/zoom.md +0 -884
  349. package/src/installs/zsh.js +0 -455
  350. package/src/installs/zsh.md +0 -1008
  351. package/src/scripts/README.md +0 -617
  352. package/src/scripts/STATUS.md +0 -208
  353. package/src/scripts/afk.js +0 -411
  354. package/src/scripts/backup-all.js +0 -746
  355. package/src/scripts/backup-source.js +0 -727
  356. package/src/scripts/brewd.js +0 -389
  357. package/src/scripts/brewi.js +0 -520
  358. package/src/scripts/brewr.js +0 -527
  359. package/src/scripts/brews.js +0 -477
  360. package/src/scripts/brewu.js +0 -504
  361. package/src/scripts/c.js +0 -201
  362. package/src/scripts/ccurl.js +0 -341
  363. package/src/scripts/certbot-crontab-init.js +0 -504
  364. package/src/scripts/certbot-init.js +0 -657
  365. package/src/scripts/ch.js +0 -355
  366. package/src/scripts/claude-danger.js +0 -268
  367. package/src/scripts/clean-dev.js +0 -435
  368. package/src/scripts/clear-dns-cache.js +0 -541
  369. package/src/scripts/clone.js +0 -435
  370. package/src/scripts/code-all.js +0 -437
  371. package/src/scripts/count-files.js +0 -211
  372. package/src/scripts/count-folders.js +0 -211
  373. package/src/scripts/count.js +0 -264
  374. package/src/scripts/d.js +0 -219
  375. package/src/scripts/datauri.js +0 -389
  376. package/src/scripts/delete-files.js +0 -380
  377. package/src/scripts/docker-clean.js +0 -426
  378. package/src/scripts/dp.js +0 -442
  379. package/src/scripts/e.js +0 -390
  380. package/src/scripts/empty-trash.js +0 -513
  381. package/src/scripts/evm.js +0 -444
  382. package/src/scripts/fetch-github-repos.js +0 -456
  383. package/src/scripts/get-channel.js +0 -345
  384. package/src/scripts/get-course.js +0 -399
  385. package/src/scripts/get-dependencies.js +0 -306
  386. package/src/scripts/get-folder.js +0 -799
  387. package/src/scripts/get-tunes.js +0 -426
  388. package/src/scripts/get-video.js +0 -367
  389. package/src/scripts/git-backup.js +0 -577
  390. package/src/scripts/git-clone.js +0 -493
  391. package/src/scripts/git-pup.js +0 -319
  392. package/src/scripts/git-push.js +0 -396
  393. package/src/scripts/h.js +0 -622
  394. package/src/scripts/hide-desktop-icons.js +0 -499
  395. package/src/scripts/hide-hidden-files.js +0 -538
  396. package/src/scripts/install-dependencies-from.js +0 -456
  397. package/src/scripts/ips.js +0 -663
  398. package/src/scripts/iso.js +0 -370
  399. package/src/scripts/killni.js +0 -577
  400. package/src/scripts/ll.js +0 -467
  401. package/src/scripts/local-ip.js +0 -325
  402. package/src/scripts/m.js +0 -524
  403. package/src/scripts/map.js +0 -309
  404. package/src/scripts/mkd.js +0 -351
  405. package/src/scripts/ncu-update-all.js +0 -457
  406. package/src/scripts/nginx-init.js +0 -718
  407. package/src/scripts/npmi.js +0 -382
  408. package/src/scripts/o.js +0 -511
  409. package/src/scripts/org-by-date.js +0 -338
  410. package/src/scripts/p.js +0 -224
  411. package/src/scripts/packages.js +0 -330
  412. package/src/scripts/path.js +0 -225
  413. package/src/scripts/ports.js +0 -597
  414. package/src/scripts/q.js +0 -305
  415. package/src/scripts/refresh-files.js +0 -394
  416. package/src/scripts/remove-smaller-files.js +0 -516
  417. package/src/scripts/rename-files-with-date.js +0 -533
  418. package/src/scripts/resize-image.js +0 -539
  419. package/src/scripts/rm-safe.js +0 -669
  420. package/src/scripts/s.js +0 -540
  421. package/src/scripts/set-git-public.js +0 -365
  422. package/src/scripts/show-desktop-icons.js +0 -475
  423. package/src/scripts/show-hidden-files.js +0 -472
  424. package/src/scripts/tpa.js +0 -280
  425. package/src/scripts/tpo.js +0 -280
  426. package/src/scripts/u.js +0 -505
  427. package/src/scripts/vpush.js +0 -437
  428. package/src/scripts/y.js +0 -283
  429. package/src/utils/README.md +0 -95
  430. package/src/utils/common/apps.js +0 -143
  431. package/src/utils/common/display.js +0 -157
  432. package/src/utils/common/network.js +0 -185
  433. package/src/utils/common/os.js +0 -294
  434. package/src/utils/common/package-manager.js +0 -301
  435. package/src/utils/common/privileges.js +0 -138
  436. package/src/utils/common/shell.js +0 -261
  437. package/src/utils/macos/apps.js +0 -228
  438. package/src/utils/macos/brew.js +0 -315
  439. package/src/utils/ubuntu/apt.js +0 -307
  440. package/src/utils/ubuntu/desktop.js +0 -292
  441. package/src/utils/ubuntu/snap.js +0 -344
  442. package/src/utils/ubuntu/systemd.js +0 -286
  443. package/src/utils/windows/choco.js +0 -465
  444. package/src/utils/windows/env.js +0 -246
  445. package/src/utils/windows/registry.js +0 -269
  446. package/src/utils/windows/shell.js +0 -240
  447. package/src/utils/windows/winget.js +0 -489
@@ -1,1094 +0,0 @@
1
- # Installing Oh My Zsh
2
-
3
- ## Overview
4
-
5
- Oh My Zsh is an open-source, community-driven framework for managing your Zsh configuration. It comes bundled with thousands of helpful functions, plugins, themes, and features that make working in the terminal more efficient and enjoyable. With over 2,400 contributors and 300+ plugins, Oh My Zsh has become the most popular Zsh configuration framework.
6
-
7
- Oh My Zsh provides:
8
-
9
- - **300+ plugins** for common tools (git, docker, npm, kubectl, aws, and many more)
10
- - **140+ themes** for customizing your terminal prompt appearance
11
- - **Auto-update mechanism** to keep your installation current
12
- - **Plugin management** for easy addition and removal of functionality
13
- - **Aliases and functions** for common commands and workflows
14
-
15
- This guide documents Oh My Zsh installation procedures for all platforms supported by DevUtils CLI. Because Oh My Zsh is a Zsh configuration framework, Zsh must be installed as a prerequisite on all platforms.
16
-
17
- ## Dependencies
18
-
19
- ### macOS (Homebrew)
20
- - **Required:**
21
- - `zsh` - Pre-installed on macOS 10.15 (Catalina) and later as the default shell. For older macOS versions, install via `brew install --quiet zsh`
22
- - `curl` - Pre-installed on macOS. For the latest version, install via `brew install --quiet curl` or run `dev install curl`
23
- - `git` - Pre-installed via Xcode Command Line Tools or install via `brew install --quiet git` or run `dev install git`
24
- - **Optional:** None
25
- - **Auto-installed:**
26
- - Oh My Zsh plugins directory structure
27
- - Default `.zshrc` configuration file (backs up existing `.zshrc` to `.zshrc.pre-oh-my-zsh`)
28
-
29
- ### Ubuntu/Debian (APT)
30
- - **Required:**
31
- - `zsh` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh`
32
- - `curl` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl` or run `dev install curl`
33
- - `git` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git` or run `dev install git`
34
- - **Optional:** None
35
- - **Auto-installed:**
36
- - Oh My Zsh plugins directory structure
37
- - Default `.zshrc` configuration file
38
-
39
- ### Raspberry Pi OS (APT)
40
- - **Required:**
41
- - `zsh` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh`
42
- - `curl` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl` or run `dev install curl`
43
- - `git` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git` or run `dev install git`
44
- - **Optional:** None
45
- - **Auto-installed:**
46
- - Oh My Zsh plugins directory structure
47
- - Default `.zshrc` configuration file
48
-
49
- ### Amazon Linux/RHEL/Fedora (DNF/YUM)
50
- - **Required:**
51
- - `zsh` - Install via `sudo dnf install -y zsh` (AL2023/RHEL 8+/Fedora) or `sudo yum install -y zsh` (AL2/RHEL 7)
52
- - `curl` - Install via `sudo dnf install -y curl` or `sudo yum install -y curl` or run `dev install curl`
53
- - `git` - Install via `sudo dnf install -y git` or `sudo yum install -y git` or run `dev install git`
54
- - **Optional:** None
55
- - **Auto-installed:**
56
- - Oh My Zsh plugins directory structure
57
- - Default `.zshrc` configuration file
58
-
59
- ### WSL (Ubuntu)
60
- - **Required:**
61
- - `zsh` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh`
62
- - `curl` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl` or run `dev install curl`
63
- - `git` - Install via `sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git` or run `dev install git`
64
- - **Optional:** None
65
- - **Auto-installed:**
66
- - Oh My Zsh plugins directory structure
67
- - Default `.zshrc` configuration file
68
-
69
- **Note**: Oh My Zsh is not supported on native Windows (PowerShell, Command Prompt) or Git Bash environments. For Windows users, install Oh My Zsh within WSL (Windows Subsystem for Linux) instead.
70
-
71
- ## Prerequisites
72
-
73
- Before installing Oh My Zsh on any platform, ensure:
74
-
75
- 1. **Internet connectivity** - Required to download Oh My Zsh from GitHub
76
- 2. **Terminal access** - Command line interface to run installation commands
77
- 3. **sudo privileges** - Required for installing Zsh if not already present (Linux platforms)
78
- 4. **Zsh shell** - Must be installed before Oh My Zsh (installation steps provided below)
79
- 5. **curl or wget** - Required for downloading the installation script
80
- 6. **git** - Required for cloning the Oh My Zsh repository
81
-
82
- **Important**: The Oh My Zsh installer will:
83
- - Back up your existing `~/.zshrc` to `~/.zshrc.pre-oh-my-zsh`
84
- - Create a new `~/.zshrc` with Oh My Zsh configuration
85
- - Clone the Oh My Zsh repository to `~/.oh-my-zsh`
86
-
87
- ## Platform-Specific Installation
88
-
89
- ### macOS (Homebrew)
90
-
91
- #### Prerequisites
92
-
93
- - macOS 10.15 (Catalina) or later (macOS 14 Sonoma or later recommended)
94
- - Homebrew package manager installed
95
- - Terminal access via Terminal.app or iTerm2
96
-
97
- macOS 10.15 (Catalina) and later include Zsh as the default shell. You can verify this by running `echo $SHELL`. If it shows `/bin/zsh`, Zsh is already your default shell.
98
-
99
- If Homebrew is not installed, install it first:
100
-
101
- ```bash
102
- /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
103
- ```
104
-
105
- #### Installation Steps
106
-
107
- **Step 1: Verify Zsh is installed and set as default shell**
108
-
109
- ```bash
110
- zsh --version
111
- ```
112
-
113
- Expected output (version numbers may vary):
114
-
115
- ```
116
- zsh 5.9 (x86_64-apple-darwin23.0)
117
- ```
118
-
119
- If Zsh is not installed (older macOS versions), install it:
120
-
121
- ```bash
122
- brew install --quiet zsh
123
- ```
124
-
125
- **Step 2: Ensure curl and git are available**
126
-
127
- These are typically pre-installed on macOS. Verify:
128
-
129
- ```bash
130
- curl --version && git --version
131
- ```
132
-
133
- If either is missing, install via Homebrew:
134
-
135
- ```bash
136
- brew install --quiet curl git
137
- ```
138
-
139
- **Step 3: Install Oh My Zsh non-interactively**
140
-
141
- Run the following command for a fully unattended installation:
142
-
143
- ```bash
144
- sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
145
- ```
146
-
147
- The `--unattended` flag:
148
- - Prevents the installer from changing your default shell automatically
149
- - Does not launch Zsh after installation
150
- - Enables fully non-interactive execution suitable for scripts and automation
151
-
152
- **Step 4: Set Zsh as your default shell (if not already)**
153
-
154
- Check your current default shell:
155
-
156
- ```bash
157
- echo $SHELL
158
- ```
159
-
160
- If it does not show `/bin/zsh`, set Zsh as your default:
161
-
162
- ```bash
163
- sudo chsh -s /bin/zsh $(whoami)
164
- ```
165
-
166
- **Step 5: Apply the configuration**
167
-
168
- Start a new Zsh session or source the configuration:
169
-
170
- ```bash
171
- source ~/.zshrc
172
- ```
173
-
174
- #### Verification
175
-
176
- Confirm Oh My Zsh is installed correctly:
177
-
178
- ```bash
179
- ls ~/.oh-my-zsh
180
- ```
181
-
182
- Expected output should show directories including `plugins`, `themes`, `lib`, `templates`, and others.
183
-
184
- Verify the Oh My Zsh configuration is loaded:
185
-
186
- ```bash
187
- echo $ZSH
188
- ```
189
-
190
- Expected output:
191
-
192
- ```
193
- /Users/<your-username>/.oh-my-zsh
194
- ```
195
-
196
- Check that plugins and themes are available:
197
-
198
- ```bash
199
- ls ~/.oh-my-zsh/plugins | head -10
200
- ```
201
-
202
- This should list plugin directories like `git`, `docker`, `npm`, etc.
203
-
204
- #### Troubleshooting
205
-
206
- **Problem**: `zsh: command not found: omz` after installation
207
-
208
- **Solution**: Oh My Zsh does not provide an `omz` command by default in older versions. Source your configuration:
209
-
210
- ```bash
211
- source ~/.zshrc
212
- ```
213
-
214
- **Problem**: Existing `.zshrc` customizations are lost
215
-
216
- **Solution**: Oh My Zsh backs up your original configuration. Restore customizations from the backup:
217
-
218
- ```bash
219
- cat ~/.zshrc.pre-oh-my-zsh
220
- ```
221
-
222
- Copy any custom settings from the backup into your new `~/.zshrc` file.
223
-
224
- **Problem**: Oh My Zsh installation fails with "git clone failed"
225
-
226
- **Solution**: Ensure git is installed and you have internet connectivity:
227
-
228
- ```bash
229
- brew install --quiet git
230
- ping -c 3 github.com
231
- ```
232
-
233
- **Problem**: Themes or prompts do not display correctly (missing symbols)
234
-
235
- **Solution**: Install a Nerd Font or Powerline-compatible font. Many Oh My Zsh themes require special font glyphs. Install a compatible font:
236
-
237
- ```bash
238
- brew tap homebrew/cask-fonts
239
- brew install --cask font-meslo-lg-nerd-font
240
- ```
241
-
242
- Then configure your terminal to use the installed font.
243
-
244
- ---
245
-
246
- ### Ubuntu/Debian (APT)
247
-
248
- #### Prerequisites
249
-
250
- - Ubuntu 20.04 LTS or later, or Debian 11 (Bullseye) or later
251
- - sudo privileges
252
- - Internet connectivity
253
-
254
- Ubuntu and Debian use Bash as the default shell. You must install Zsh before installing Oh My Zsh.
255
-
256
- #### Installation Steps
257
-
258
- **Step 1: Update package lists and install Zsh**
259
-
260
- ```bash
261
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
262
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh
263
- ```
264
-
265
- Verify Zsh installation:
266
-
267
- ```bash
268
- zsh --version
269
- ```
270
-
271
- Expected output (version numbers may vary):
272
-
273
- ```
274
- zsh 5.9 (x86_64-ubuntu-linux-gnu)
275
- ```
276
-
277
- **Step 2: Install curl and git**
278
-
279
- ```bash
280
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl git
281
- ```
282
-
283
- **Step 3: Install Oh My Zsh non-interactively**
284
-
285
- ```bash
286
- sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
287
- ```
288
-
289
- **Step 4: Set Zsh as your default shell**
290
-
291
- ```bash
292
- sudo chsh -s $(which zsh) $(whoami)
293
- ```
294
-
295
- **Step 5: Start a new Zsh session**
296
-
297
- Log out and log back in, or start a new terminal session. Alternatively, start Zsh manually:
298
-
299
- ```bash
300
- zsh
301
- ```
302
-
303
- Then source the configuration:
304
-
305
- ```bash
306
- source ~/.zshrc
307
- ```
308
-
309
- #### Verification
310
-
311
- Confirm Oh My Zsh is installed:
312
-
313
- ```bash
314
- ls ~/.oh-my-zsh
315
- ```
316
-
317
- Expected output should show directories including `plugins`, `themes`, `lib`, `templates`.
318
-
319
- Verify the ZSH variable is set:
320
-
321
- ```bash
322
- echo $ZSH
323
- ```
324
-
325
- Expected output:
326
-
327
- ```
328
- /home/<your-username>/.oh-my-zsh
329
- ```
330
-
331
- Verify Zsh is your default shell:
332
-
333
- ```bash
334
- echo $SHELL
335
- ```
336
-
337
- Expected output:
338
-
339
- ```
340
- /usr/bin/zsh
341
- ```
342
-
343
- #### Troubleshooting
344
-
345
- **Problem**: `chsh: PAM: Authentication failure`
346
-
347
- **Solution**: The `chsh` command requires your password. For automated scripts, you can modify `/etc/passwd` directly with sudo:
348
-
349
- ```bash
350
- sudo sed -i "s|$(whoami):/bin/bash|$(whoami):$(which zsh)|" /etc/passwd
351
- ```
352
-
353
- **Problem**: Oh My Zsh is not loaded in new sessions
354
-
355
- **Solution**: Ensure Zsh is your default shell and `.zshrc` exists:
356
-
357
- ```bash
358
- cat ~/.zshrc | head -5
359
- ```
360
-
361
- The file should contain `export ZSH="$HOME/.oh-my-zsh"` near the top.
362
-
363
- **Problem**: `E: Unable to locate package zsh`
364
-
365
- **Solution**: Update your package lists:
366
-
367
- ```bash
368
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
369
- ```
370
-
371
- **Problem**: Slow shell startup after installing Oh My Zsh
372
-
373
- **Solution**: Disable plugins you do not use. Edit `~/.zshrc` and reduce the plugins list:
374
-
375
- ```bash
376
- # In ~/.zshrc, change:
377
- plugins=(git)
378
- # Instead of:
379
- plugins=(git docker npm node kubectl aws gcloud ...)
380
- ```
381
-
382
- ---
383
-
384
- ### Raspberry Pi OS (APT)
385
-
386
- #### Prerequisites
387
-
388
- - Raspberry Pi OS (Bookworm, Bullseye, or Buster) - 32-bit or 64-bit
389
- - Raspberry Pi 2 or later (Raspberry Pi 3B+ or later recommended)
390
- - sudo privileges
391
- - Internet connectivity
392
-
393
- Raspberry Pi OS is based on Debian, so the installation follows the same APT-based process.
394
-
395
- #### Installation Steps
396
-
397
- **Step 1: Verify your architecture**
398
-
399
- ```bash
400
- uname -m
401
- ```
402
-
403
- - `aarch64` = 64-bit ARM (Raspberry Pi 3/4/5 with 64-bit OS)
404
- - `armv7l` = 32-bit ARM (Raspberry Pi 2/3/4 with 32-bit OS)
405
- - `armv6l` = 32-bit ARM (Raspberry Pi Zero/1)
406
-
407
- All architectures are supported for Oh My Zsh.
408
-
409
- **Step 2: Update package lists and install Zsh**
410
-
411
- ```bash
412
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
413
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh
414
- ```
415
-
416
- Verify Zsh installation:
417
-
418
- ```bash
419
- zsh --version
420
- ```
421
-
422
- **Step 3: Install curl and git**
423
-
424
- ```bash
425
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl git
426
- ```
427
-
428
- **Step 4: Install Oh My Zsh non-interactively**
429
-
430
- ```bash
431
- sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
432
- ```
433
-
434
- **Step 5: Set Zsh as your default shell**
435
-
436
- ```bash
437
- sudo chsh -s $(which zsh) $(whoami)
438
- ```
439
-
440
- **Step 6: Apply the configuration**
441
-
442
- Log out and log back in, or start Zsh manually:
443
-
444
- ```bash
445
- zsh
446
- source ~/.zshrc
447
- ```
448
-
449
- #### Verification
450
-
451
- Confirm Oh My Zsh is installed:
452
-
453
- ```bash
454
- ls ~/.oh-my-zsh
455
- ```
456
-
457
- Verify the ZSH variable is set:
458
-
459
- ```bash
460
- echo $ZSH
461
- ```
462
-
463
- Expected output:
464
-
465
- ```
466
- /home/pi/.oh-my-zsh
467
- ```
468
-
469
- (Replace `pi` with your username if different.)
470
-
471
- #### Troubleshooting
472
-
473
- **Problem**: Installation is very slow
474
-
475
- **Solution**: Raspberry Pi SD cards can be slow. Use a high-quality SD card (Class 10 or A1/A2 rated) or boot from USB/SSD for better performance.
476
-
477
- **Problem**: Oh My Zsh themes cause slow prompt rendering
478
-
479
- **Solution**: Some complex themes (like Powerlevel10k) can be slow on older Raspberry Pi models. Use a simpler theme:
480
-
481
- ```bash
482
- # Edit ~/.zshrc and change ZSH_THEME
483
- ZSH_THEME="robbyrussell"
484
- ```
485
-
486
- **Problem**: Fonts do not display correctly over SSH
487
-
488
- **Solution**: Terminal fonts are rendered by your local machine, not the Raspberry Pi. Install a Nerd Font on your local machine and configure your SSH client to use it.
489
-
490
- **Problem**: `git clone` fails during installation
491
-
492
- **Solution**: Check your internet connection. If using WiFi, consider using Ethernet for more stable connectivity:
493
-
494
- ```bash
495
- ping -c 3 github.com
496
- ```
497
-
498
- ---
499
-
500
- ### Amazon Linux/RHEL/Fedora (DNF/YUM)
501
-
502
- #### Prerequisites
503
-
504
- - Amazon Linux 2023 (AL2023), Amazon Linux 2 (AL2), RHEL 8+, or Fedora 38+
505
- - sudo privileges
506
- - Internet connectivity
507
-
508
- Amazon Linux 2023 and RHEL 8+ use DNF. Amazon Linux 2 and RHEL 7 use YUM.
509
-
510
- **Important**: Amazon Linux 2 reaches end of support on June 30, 2026. Consider migrating to Amazon Linux 2023.
511
-
512
- #### Installation Steps
513
-
514
- **Step 1: Install Zsh**
515
-
516
- For Amazon Linux 2023 / RHEL 8+ / Fedora:
517
-
518
- ```bash
519
- sudo dnf install -y zsh
520
- ```
521
-
522
- For Amazon Linux 2 / RHEL 7:
523
-
524
- ```bash
525
- sudo yum install -y zsh
526
- ```
527
-
528
- Verify Zsh installation:
529
-
530
- ```bash
531
- zsh --version
532
- ```
533
-
534
- Expected output (version numbers may vary):
535
-
536
- ```
537
- zsh 5.9 (x86_64-redhat-linux-gnu)
538
- ```
539
-
540
- **Step 2: Install curl and git**
541
-
542
- For DNF-based systems:
543
-
544
- ```bash
545
- sudo dnf install -y curl git
546
- ```
547
-
548
- For YUM-based systems:
549
-
550
- ```bash
551
- sudo yum install -y curl git
552
- ```
553
-
554
- **Step 3: Install Oh My Zsh non-interactively**
555
-
556
- ```bash
557
- sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
558
- ```
559
-
560
- **Step 4: Set Zsh as your default shell**
561
-
562
- For Fedora (recent versions use `lchsh`):
563
-
564
- ```bash
565
- sudo lchsh $(whoami)
566
- ```
567
-
568
- When prompted, enter `/usr/bin/zsh`.
569
-
570
- For Amazon Linux / RHEL:
571
-
572
- ```bash
573
- sudo chsh -s $(which zsh) $(whoami)
574
- ```
575
-
576
- **Step 5: Apply the configuration**
577
-
578
- Log out and log back in, or start Zsh manually:
579
-
580
- ```bash
581
- zsh
582
- source ~/.zshrc
583
- ```
584
-
585
- #### Verification
586
-
587
- Confirm Oh My Zsh is installed:
588
-
589
- ```bash
590
- ls ~/.oh-my-zsh
591
- ```
592
-
593
- Verify the ZSH variable is set:
594
-
595
- ```bash
596
- echo $ZSH
597
- ```
598
-
599
- Expected output:
600
-
601
- ```
602
- /home/ec2-user/.oh-my-zsh
603
- ```
604
-
605
- (Username varies: `ec2-user` on EC2, `fedora` on Fedora Cloud, or your custom username.)
606
-
607
- Verify Zsh is your default shell:
608
-
609
- ```bash
610
- echo $SHELL
611
- ```
612
-
613
- Expected output:
614
-
615
- ```
616
- /usr/bin/zsh
617
- ```
618
-
619
- #### Troubleshooting
620
-
621
- **Problem**: `lchsh: command not found` on older Fedora
622
-
623
- **Solution**: Use `chsh` instead:
624
-
625
- ```bash
626
- sudo chsh -s $(which zsh) $(whoami)
627
- ```
628
-
629
- **Problem**: `chsh` requires password in automation scripts
630
-
631
- **Solution**: Modify `/etc/passwd` directly:
632
-
633
- ```bash
634
- sudo sed -i "s|$(whoami):/bin/bash|$(whoami):$(which zsh)|" /etc/passwd
635
- ```
636
-
637
- **Problem**: `No match for argument: zsh` on Amazon Linux 2
638
-
639
- **Solution**: Update the yum cache:
640
-
641
- ```bash
642
- sudo yum makecache
643
- sudo yum install -y zsh
644
- ```
645
-
646
- **Problem**: Oh My Zsh not loaded in new SSH sessions on EC2
647
-
648
- **Solution**: Ensure `.bashrc` or `.bash_profile` is not overriding the shell. Verify your default shell:
649
-
650
- ```bash
651
- grep $(whoami) /etc/passwd
652
- ```
653
-
654
- The last field should be `/usr/bin/zsh` or `/bin/zsh`.
655
-
656
- ---
657
-
658
- ### WSL (Ubuntu)
659
-
660
- #### Prerequisites
661
-
662
- - Windows 10 version 2004 or higher, or Windows 11
663
- - WSL 2 enabled with Ubuntu distribution installed
664
- - sudo privileges within WSL
665
-
666
- WSL runs a full Linux environment. The installation follows the Ubuntu/Debian process.
667
-
668
- #### Installation Steps
669
-
670
- **Step 1: Update package lists and install Zsh**
671
-
672
- Open your WSL Ubuntu terminal and run:
673
-
674
- ```bash
675
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
676
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y zsh
677
- ```
678
-
679
- Verify Zsh installation:
680
-
681
- ```bash
682
- zsh --version
683
- ```
684
-
685
- **Step 2: Install curl and git**
686
-
687
- ```bash
688
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl git
689
- ```
690
-
691
- **Step 3: Install Oh My Zsh non-interactively**
692
-
693
- ```bash
694
- sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
695
- ```
696
-
697
- **Step 4: Set Zsh as your default shell**
698
-
699
- ```bash
700
- sudo chsh -s $(which zsh) $(whoami)
701
- ```
702
-
703
- **Step 5: Configure Windows Terminal (optional but recommended)**
704
-
705
- To have WSL launch Zsh by default in Windows Terminal, you can add this to the end of your `~/.bashrc`:
706
-
707
- ```bash
708
- # Auto-launch Zsh in WSL
709
- if [ -t 1 ] && [ -x /usr/bin/zsh ]; then
710
- exec /usr/bin/zsh
711
- fi
712
- ```
713
-
714
- Alternatively, close and reopen WSL. The new default shell should be Zsh.
715
-
716
- **Step 6: Apply the configuration**
717
-
718
- ```bash
719
- zsh
720
- source ~/.zshrc
721
- ```
722
-
723
- #### Verification
724
-
725
- Confirm Oh My Zsh is installed:
726
-
727
- ```bash
728
- ls ~/.oh-my-zsh
729
- ```
730
-
731
- Verify the ZSH variable is set:
732
-
733
- ```bash
734
- echo $ZSH
735
- ```
736
-
737
- Expected output:
738
-
739
- ```
740
- /home/<your-wsl-username>/.oh-my-zsh
741
- ```
742
-
743
- Verify Zsh is running:
744
-
745
- ```bash
746
- echo $0
747
- ```
748
-
749
- Expected output:
750
-
751
- ```
752
- zsh
753
- ```
754
-
755
- #### Troubleshooting
756
-
757
- **Problem**: `chsh` does not work in WSL
758
-
759
- **Solution**: WSL may not respect `chsh` changes. Add the auto-launch snippet to `~/.bashrc`:
760
-
761
- ```bash
762
- cat >> ~/.bashrc << 'EOF'
763
-
764
- # Auto-launch Zsh in WSL
765
- if [ -t 1 ] && [ -x /usr/bin/zsh ]; then
766
- exec /usr/bin/zsh
767
- fi
768
- EOF
769
- ```
770
-
771
- **Problem**: Windows Terminal still shows Bash prompt
772
-
773
- **Solution**: Close all WSL terminals and restart WSL:
774
-
775
- ```powershell
776
- # In Windows PowerShell
777
- wsl --shutdown
778
- wsl
779
- ```
780
-
781
- **Problem**: Oh My Zsh themes display incorrectly in Windows Terminal
782
-
783
- **Solution**: Install a Nerd Font on Windows and configure Windows Terminal to use it:
784
-
785
- 1. Download a Nerd Font from https://www.nerdfonts.com/font-downloads (MesloLGS NF recommended)
786
- 2. Install the font on Windows by double-clicking the .ttf file
787
- 3. Open Windows Terminal settings (Ctrl+,)
788
- 4. Select your Ubuntu profile
789
- 5. Under "Appearance", set "Font face" to your installed Nerd Font
790
-
791
- **Problem**: Slow startup in WSL
792
-
793
- **Solution**: Windows Defender scanning can slow WSL. Add exclusions for WSL directories:
794
-
795
- ```powershell
796
- # Run in Windows PowerShell as Administrator
797
- Add-MpPreference -ExclusionPath "\\wsl$\Ubuntu"
798
- Add-MpPreference -ExclusionPath "$env:LOCALAPPDATA\Packages\*Ubuntu*"
799
- ```
800
-
801
- ---
802
-
803
- ### Git Bash (Not Supported)
804
-
805
- #### Platform Status
806
-
807
- Oh My Zsh is **not supported** on Git Bash (Windows).
808
-
809
- Oh My Zsh is a framework specifically designed for the Zsh shell, which is not available on native Windows environments. Git Bash uses a MinGW-based Bash shell and does not support Zsh.
810
-
811
- #### Recommended Alternatives
812
-
813
- **Option 1: Use WSL (Windows Subsystem for Linux)**
814
-
815
- WSL provides a full Linux environment where you can install and use Oh My Zsh. See the WSL installation section above.
816
-
817
- To install WSL from an Administrator PowerShell:
818
-
819
- ```powershell
820
- wsl --install
821
- ```
822
-
823
- After installation and reboot, follow the WSL (Ubuntu) installation steps.
824
-
825
- **Option 2: Use Oh My Bash**
826
-
827
- If you prefer to stay in Git Bash, consider [Oh My Bash](https://github.com/ohmybash/oh-my-bash), which provides similar functionality for Bash:
828
-
829
- ```bash
830
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/ohmybash/oh-my-bash/master/tools/install.sh)"
831
- ```
832
-
833
- **Option 3: Use PowerShell with Oh My Posh**
834
-
835
- For a modern Windows shell experience, consider [Oh My Posh](https://ohmyposh.dev/) with PowerShell:
836
-
837
- ```powershell
838
- winget install --id JanDeDobbeleer.OhMyPosh --silent --accept-package-agreements --accept-source-agreements
839
- ```
840
-
841
- ---
842
-
843
- ## Post-Installation Configuration
844
-
845
- After installing Oh My Zsh on any platform, consider these common configurations.
846
-
847
- ### Changing the Theme
848
-
849
- Oh My Zsh includes 140+ themes. View available themes:
850
-
851
- ```bash
852
- ls ~/.oh-my-zsh/themes
853
- ```
854
-
855
- Change your theme by editing `~/.zshrc`:
856
-
857
- ```bash
858
- # Edit ~/.zshrc and change ZSH_THEME
859
- ZSH_THEME="agnoster"
860
- ```
861
-
862
- Popular themes include:
863
- - `robbyrussell` (default) - Simple and clean
864
- - `agnoster` - Informative with git status (requires Powerline font)
865
- - `avit` - Minimal two-line prompt
866
- - `bira` - Colorful with user/host info
867
-
868
- Apply the change:
869
-
870
- ```bash
871
- source ~/.zshrc
872
- ```
873
-
874
- ### Enabling Plugins
875
-
876
- Oh My Zsh includes 300+ plugins. View available plugins:
877
-
878
- ```bash
879
- ls ~/.oh-my-zsh/plugins
880
- ```
881
-
882
- Enable plugins by editing the `plugins` line in `~/.zshrc`:
883
-
884
- ```bash
885
- plugins=(git docker npm node kubectl aws)
886
- ```
887
-
888
- Commonly used plugins:
889
- - `git` - Git aliases and functions (enabled by default)
890
- - `docker` - Docker command completion
891
- - `npm` / `yarn` - Node.js package manager completions
892
- - `kubectl` - Kubernetes command completion
893
- - `aws` - AWS CLI completions
894
- - `z` - Directory jumping based on frecency
895
- - `history` - History search shortcuts
896
-
897
- Apply the change:
898
-
899
- ```bash
900
- source ~/.zshrc
901
- ```
902
-
903
- ### Installing Custom Plugins
904
-
905
- Install third-party plugins to the custom plugins directory:
906
-
907
- **zsh-autosuggestions** (suggests commands as you type):
908
-
909
- ```bash
910
- git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
911
- ```
912
-
913
- **zsh-syntax-highlighting** (highlights valid commands in green):
914
-
915
- ```bash
916
- git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
917
- ```
918
-
919
- Then add them to your plugins list in `~/.zshrc`:
920
-
921
- ```bash
922
- plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
923
- ```
924
-
925
- ### Updating Oh My Zsh
926
-
927
- Oh My Zsh can update itself. Run:
928
-
929
- ```bash
930
- omz update
931
- ```
932
-
933
- Or for unattended updates, call the upgrade script directly:
934
-
935
- ```bash
936
- $ZSH/tools/upgrade.sh
937
- ```
938
-
939
- To enable automatic updates, ensure this line is in your `~/.zshrc`:
940
-
941
- ```bash
942
- zstyle ':omz:update' mode auto
943
- ```
944
-
945
- ### Uninstalling Oh My Zsh
946
-
947
- To completely remove Oh My Zsh:
948
-
949
- ```bash
950
- uninstall_oh_my_zsh
951
- ```
952
-
953
- This will:
954
- - Remove the `~/.oh-my-zsh` directory
955
- - Restore your original `~/.zshrc` from the backup
956
-
957
- ---
958
-
959
- ## Common Issues
960
-
961
- ### Issue: "zsh: command not found" for Various Commands
962
-
963
- **Symptoms**: Commands that work in Bash do not work in Zsh.
964
-
965
- **Solution**: Your PATH may not be configured correctly. Ensure your PATH includes standard directories:
966
-
967
- ```bash
968
- export PATH="$HOME/bin:/usr/local/bin:$PATH"
969
- ```
970
-
971
- Add this line to the top of your `~/.zshrc` if missing.
972
-
973
- ### Issue: "compinit: insecure directories" Warning
974
-
975
- **Symptoms**: Warning message about insecure directories on shell startup.
976
-
977
- **Solution**: Fix directory permissions:
978
-
979
- ```bash
980
- compaudit | xargs chmod g-w,o-w
981
- ```
982
-
983
- Or suppress the warning by adding this before `source $ZSH/oh-my-zsh.sh` in `~/.zshrc`:
984
-
985
- ```bash
986
- ZSH_DISABLE_COMPFIX=true
987
- ```
988
-
989
- ### Issue: Slow Shell Startup
990
-
991
- **Symptoms**: New terminal windows take several seconds to load.
992
-
993
- **Solutions**:
994
-
995
- 1. **Reduce plugins**: Disable unused plugins in `~/.zshrc`
996
-
997
- 2. **Use a simpler theme**: Complex themes like Powerlevel10k with extensive git status checks can be slow
998
-
999
- 3. **Profile startup time**:
1000
-
1001
- ```bash
1002
- time zsh -i -c exit
1003
- ```
1004
-
1005
- 4. **Lazy-load NVM and similar tools**: See the NVM documentation for lazy-loading configuration
1006
-
1007
- ### Issue: Oh My Zsh Not Loading in SSH Sessions
1008
-
1009
- **Symptoms**: SSH sessions start with plain Zsh, not Oh My Zsh.
1010
-
1011
- **Solution**: Ensure your default shell is set correctly:
1012
-
1013
- ```bash
1014
- grep $(whoami) /etc/passwd
1015
- ```
1016
-
1017
- The line should end with `/bin/zsh` or `/usr/bin/zsh`.
1018
-
1019
- Also verify `~/.zshrc` is being sourced. For non-login shells, create `~/.zshenv` with:
1020
-
1021
- ```bash
1022
- source ~/.zshrc
1023
- ```
1024
-
1025
- ### Issue: Themes Display Broken Characters
1026
-
1027
- **Symptoms**: Prompt shows boxes, question marks, or garbled characters.
1028
-
1029
- **Solution**: Install a Nerd Font or Powerline-compatible font:
1030
-
1031
- **On macOS:**
1032
-
1033
- ```bash
1034
- brew tap homebrew/cask-fonts
1035
- brew install --cask font-meslo-lg-nerd-font
1036
- ```
1037
-
1038
- **On Linux:**
1039
-
1040
- ```bash
1041
- mkdir -p ~/.local/share/fonts
1042
- cd ~/.local/share/fonts
1043
- curl -fLo "MesloLGS NF Regular.ttf" https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf
1044
- fc-cache -fv
1045
- ```
1046
-
1047
- Then configure your terminal emulator to use the installed font.
1048
-
1049
- ### Issue: Git Plugin Shows Wrong Branch or Status
1050
-
1051
- **Symptoms**: Git information in prompt is incorrect or outdated.
1052
-
1053
- **Solution**: The git plugin caches information for performance. Force a refresh:
1054
-
1055
- ```bash
1056
- source ~/.zshrc
1057
- ```
1058
-
1059
- Or check if you are in a git repository:
1060
-
1061
- ```bash
1062
- git rev-parse --is-inside-work-tree
1063
- ```
1064
-
1065
- ### Issue: Arrow Keys Not Working in Terminal
1066
-
1067
- **Symptoms**: Arrow keys print escape sequences instead of navigating.
1068
-
1069
- **Solution**: Your terminal may not be set up correctly. Add to `~/.zshrc`:
1070
-
1071
- ```bash
1072
- bindkey -e # Use Emacs key bindings
1073
- # Or for vi mode:
1074
- # bindkey -v
1075
- ```
1076
-
1077
- ---
1078
-
1079
- ## References
1080
-
1081
- - [Oh My Zsh Official Website](https://ohmyz.sh/)
1082
- - [Oh My Zsh GitHub Repository](https://github.com/ohmyzsh/ohmyzsh)
1083
- - [Oh My Zsh Wiki - Installing ZSH](https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH)
1084
- - [Oh My Zsh Wiki - Plugins](https://github.com/ohmyzsh/ohmyzsh/wiki/Plugins)
1085
- - [Oh My Zsh Wiki - Themes](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)
1086
- - [Zsh Official Website](https://www.zsh.org/)
1087
- - [Zsh Documentation](https://zsh.sourceforge.io/Doc/)
1088
- - [Homebrew Zsh Formula](https://formulae.brew.sh/formula/zsh)
1089
- - [Nerd Fonts](https://www.nerdfonts.com/)
1090
- - [zsh-autosuggestions Plugin](https://github.com/zsh-users/zsh-autosuggestions)
1091
- - [zsh-syntax-highlighting Plugin](https://github.com/zsh-users/zsh-syntax-highlighting)
1092
- - [Powerlevel10k Theme](https://github.com/romkatv/powerlevel10k)
1093
- - [Oh My Bash (Alternative for Bash)](https://github.com/ohmybash/oh-my-bash)
1094
- - [Oh My Posh (Alternative for PowerShell)](https://ohmyposh.dev/)