@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,620 +0,0 @@
1
- # Installing winpty
2
-
3
- ## Overview
4
-
5
- winpty is a Windows software package that provides an interface similar to a Unix pty-master for communicating with Windows console programs. It enables interactive console applications (like Python REPL, Node.js REPL, and Docker) to work correctly in terminal emulators that do not natively support Windows console programs, such as MinTTY (used by Git Bash), Cygwin terminals, and MSYS2.
6
-
7
- The package consists of:
8
-
9
- - **libwinpty** - A library for embedding pty functionality
10
- - **winpty.exe** - A command-line wrapper for running Windows console programs
11
- - **winpty-agent.exe** - A background process that bridges between console API and terminal I/O
12
-
13
- winpty works by starting a hidden console window via winpty-agent.exe, which bridges between the Windows console API and terminal input/output escape codes. It polls the hidden console's screen buffer for changes and generates corresponding output streams.
14
-
15
- **Important**: winpty is a Windows-only tool. It is not needed on Unix-like systems (macOS, Linux) because those operating systems have native pseudoterminal (PTY) support built into the kernel.
16
-
17
- This guide documents winpty installation procedures for all platforms supported by DevUtils CLI.
18
-
19
- ## Dependencies
20
-
21
- ### macOS (Homebrew)
22
- - **Required:** None
23
- - **Note:** winpty is Windows-only and is not applicable to macOS. macOS has native PTY support.
24
-
25
- ### Ubuntu (APT/Snap)
26
- - **Required:** None
27
- - **Note:** winpty is Windows-only and is not applicable to Ubuntu/Linux. Linux has native PTY support via `/dev/pts`.
28
-
29
- ### Raspberry Pi OS (APT/Snap)
30
- - **Required:** None
31
- - **Note:** winpty is Windows-only and is not applicable to Raspberry Pi OS. Linux has native PTY support.
32
-
33
- ### Amazon Linux (DNF/YUM)
34
- - **Required:** None
35
- - **Note:** winpty is Windows-only and is not applicable to Amazon Linux. Linux has native PTY support.
36
-
37
- ### Windows (Chocolatey/winget)
38
- - **Required:** None (winpty is bundled with Git for Windows by default)
39
- - **Optional:**
40
- - `git` - If Git for Windows is installed, winpty is already available via `choco install git -y`
41
- - **Auto-installed:** None
42
-
43
- ### Git Bash (Manual/Portable)
44
- - **Required:**
45
- - `git` - Git for Windows must be installed. Install via `choco install git -y` from an Administrator PowerShell/CMD. winpty is bundled with Git for Windows.
46
- - **Optional:** None
47
- - **Auto-installed:** winpty is automatically installed as part of Git for Windows
48
-
49
- ## Prerequisites
50
-
51
- Before installing winpty on any platform, understand these key points:
52
-
53
- 1. **winpty is Windows-only** - It solves a Windows-specific problem where terminal emulators like MinTTY cannot directly communicate with Windows console programs
54
- 2. **Git for Windows includes winpty** - If you have Git Bash installed, you already have winpty
55
- 3. **No installation needed on Unix systems** - macOS, Linux, and other Unix-like systems have native PTY support and do not need winpty
56
-
57
- ## Platform-Specific Installation
58
-
59
- ### macOS (Homebrew)
60
-
61
- #### Not Applicable
62
-
63
- winpty is a Windows-only utility and is not available or needed on macOS.
64
-
65
- **Why winpty is not needed on macOS:**
66
-
67
- macOS is a Unix-based operating system with native pseudoterminal (PTY) support built into the kernel. The PTY system in macOS allows terminal emulators (like Terminal.app, iTerm2) to communicate directly with console programs without requiring a translation layer.
68
-
69
- The functionality that winpty provides on Windows (bridging between terminal emulators and console programs) is handled natively by macOS through:
70
-
71
- - The `/dev/pty*` device files
72
- - The `posix_openpt()` and related POSIX functions
73
- - Native support in all macOS terminal emulators
74
-
75
- **If you are looking for PTY-related functionality for development:**
76
-
77
- ```bash
78
- # Python's built-in pty module (no installation needed)
79
- python3 -c "import pty; print('PTY support available')"
80
-
81
- # For more advanced PTY handling in Python
82
- brew install --quiet pexpect
83
- pip3 install pexpect
84
- ```
85
-
86
- ---
87
-
88
- ### Ubuntu/Debian (APT)
89
-
90
- #### Not Applicable
91
-
92
- winpty is a Windows-only utility and is not available or needed on Ubuntu/Debian Linux.
93
-
94
- **Why winpty is not needed on Ubuntu:**
95
-
96
- Ubuntu and Debian are Linux distributions with native pseudoterminal (PTY) support built into the kernel. The PTY subsystem in Linux allows terminal emulators (like GNOME Terminal, Konsole, xterm) to communicate directly with console programs.
97
-
98
- Linux provides PTY functionality through:
99
-
100
- - The `/dev/pts` filesystem (devpts)
101
- - The `posix_openpt()`, `grantpt()`, `unlockpt()`, and `ptsname()` functions
102
- - Native kernel support via the `CONFIG_UNIX98_PTYS` option
103
-
104
- **If you are looking for PTY-related functionality for development:**
105
-
106
- ```bash
107
- # Python's built-in pty module (no installation needed)
108
- python3 -c "import pty; print('PTY support available')"
109
-
110
- # For more advanced PTY handling in Python
111
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y python3-pexpect
112
- ```
113
-
114
- ---
115
-
116
- ### Raspberry Pi OS (APT)
117
-
118
- #### Not Applicable
119
-
120
- winpty is a Windows-only utility and is not available or needed on Raspberry Pi OS.
121
-
122
- **Why winpty is not needed on Raspberry Pi OS:**
123
-
124
- Raspberry Pi OS is based on Debian Linux and has native pseudoterminal (PTY) support built into the kernel. This applies to both 32-bit (armhf) and 64-bit (arm64) versions of Raspberry Pi OS.
125
-
126
- The PTY system works identically to standard Linux:
127
-
128
- - PTY devices are available at `/dev/pts/*`
129
- - All terminal emulators communicate directly with console programs
130
- - No translation layer is required
131
-
132
- **If you are looking for PTY-related functionality for development:**
133
-
134
- ```bash
135
- # Python's built-in pty module (no installation needed)
136
- python3 -c "import pty; print('PTY support available')"
137
-
138
- # For more advanced PTY handling in Python
139
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y python3-pexpect
140
- ```
141
-
142
- ---
143
-
144
- ### Amazon Linux (DNF/YUM)
145
-
146
- #### Not Applicable
147
-
148
- winpty is a Windows-only utility and is not available or needed on Amazon Linux.
149
-
150
- **Why winpty is not needed on Amazon Linux:**
151
-
152
- Amazon Linux (both AL2 and AL2023) is a Linux distribution with native pseudoterminal (PTY) support built into the kernel. Whether running on EC2 instances or other environments, PTY support is available out of the box.
153
-
154
- **If you are looking for PTY-related functionality for development:**
155
-
156
- **For Amazon Linux 2023:**
157
-
158
- ```bash
159
- # Python's built-in pty module (no installation needed)
160
- python3 -c "import pty; print('PTY support available')"
161
-
162
- # For more advanced PTY handling in Python
163
- sudo dnf install -y python3-pexpect
164
- ```
165
-
166
- **For Amazon Linux 2:**
167
-
168
- ```bash
169
- # Python's built-in pty module (no installation needed)
170
- python3 -c "import pty; print('PTY support available')"
171
-
172
- # For more advanced PTY handling in Python
173
- sudo yum install -y python3-pexpect
174
- ```
175
-
176
- ---
177
-
178
- ### Windows (Git for Windows - Recommended)
179
-
180
- #### Prerequisites
181
-
182
- - Windows 10 version 1903 or higher (64-bit), or Windows 11
183
- - Administrator PowerShell or Command Prompt
184
- - Internet connectivity
185
-
186
- **Important**: winpty is bundled with Git for Windows. If you have Git for Windows installed, winpty is already available. This is the recommended approach because Git for Windows is widely used and includes winpty automatically.
187
-
188
- #### Installation Steps
189
-
190
- **Option: Install Git for Windows (includes winpty)**
191
-
192
- Run the following command in an Administrator PowerShell or Command Prompt:
193
-
194
- ```powershell
195
- choco install git -y
196
- ```
197
-
198
- The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation. This installs:
199
-
200
- - Git command-line tools
201
- - Git Bash (MinTTY terminal)
202
- - winpty (for interactive console program support in MinTTY)
203
- - Git Credential Manager
204
-
205
- After installation, close and reopen your terminal to ensure PATH changes take effect.
206
-
207
- #### Verification
208
-
209
- Open Git Bash and verify winpty is available:
210
-
211
- ```bash
212
- which winpty
213
- ```
214
-
215
- Expected output:
216
-
217
- ```
218
- /usr/bin/winpty
219
- ```
220
-
221
- Test winpty by running an interactive program:
222
-
223
- ```bash
224
- winpty cmd.exe
225
- ```
226
-
227
- This should open a Windows Command Prompt within Git Bash. Type `exit` to return to Git Bash.
228
-
229
- Verify the version (winpty does not have a `--version` flag, but you can check it exists):
230
-
231
- ```bash
232
- winpty --help
233
- ```
234
-
235
- Expected output includes usage information:
236
-
237
- ```
238
- Usage: winpty [options] [--] program [args]
239
- ...
240
- ```
241
-
242
- #### Troubleshooting
243
-
244
- **Problem**: `winpty: command not found` in Git Bash
245
-
246
- **Solution**: winpty is included with Git for Windows. If Git Bash is installed but winpty is missing, your Git for Windows installation may be corrupted or very old. Reinstall Git for Windows:
247
-
248
- ```powershell
249
- choco uninstall git -y
250
- choco install git -y
251
- ```
252
-
253
- **Problem**: winpty is present but interactive programs still do not work
254
-
255
- **Solution**: Ensure you are prefixing the command with `winpty`:
256
-
257
- ```bash
258
- # Wrong - may not work with interactive programs
259
- python
260
-
261
- # Correct - use winpty prefix
262
- winpty python
263
- ```
264
-
265
- **Problem**: "the input device is not a TTY" error
266
-
267
- **Solution**: This error occurs when running interactive programs without winpty in Git Bash. Use the winpty prefix:
268
-
269
- ```bash
270
- winpty docker run -it ubuntu bash
271
- winpty python
272
- winpty node
273
- ```
274
-
275
- **Problem**: winpty breaks piping or redirection
276
-
277
- **Solution**: winpty is designed for interactive use, not for piping. When piping data, run commands without winpty:
278
-
279
- ```bash
280
- # Without winpty for piping
281
- echo "print('hello')" | python
282
-
283
- # With winpty for interactive use
284
- winpty python
285
- ```
286
-
287
- ---
288
-
289
- ### WSL (Ubuntu)
290
-
291
- #### Not Applicable
292
-
293
- winpty is a Windows-only utility and is not needed within WSL.
294
-
295
- **Why winpty is not needed in WSL:**
296
-
297
- WSL (Windows Subsystem for Linux) runs a real Linux kernel (WSL 2) or a Linux-compatible layer (WSL 1). Within WSL, you have native Linux PTY support through the kernel, just like any other Linux distribution.
298
-
299
- The WSL terminal environment communicates with programs using standard Linux PTY mechanisms, so winpty is unnecessary.
300
-
301
- **Important distinction:**
302
-
303
- - **Inside WSL**: You are running Linux; use native PTY (no winpty needed)
304
- - **In Windows outside WSL**: Use winpty with Git Bash/MinTTY for interactive Windows console programs
305
-
306
- **If you are looking for PTY-related functionality for development in WSL:**
307
-
308
- ```bash
309
- # Python's built-in pty module (no installation needed)
310
- python3 -c "import pty; print('PTY support available')"
311
-
312
- # For more advanced PTY handling in Python
313
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y python3-pexpect
314
- ```
315
-
316
- ---
317
-
318
- ### Git Bash (Bundled Installation)
319
-
320
- #### Prerequisites
321
-
322
- - Windows 10 or Windows 11 (64-bit)
323
- - Git for Windows installed
324
- - Internet connectivity (for initial Git installation)
325
-
326
- **Note**: winpty is automatically included with Git for Windows. When you install Git for Windows, winpty is installed as part of the package and is immediately available in Git Bash.
327
-
328
- #### Installation Steps
329
-
330
- winpty is bundled with Git for Windows. To install or reinstall Git for Windows (which includes winpty), run the following command in an Administrator PowerShell or Command Prompt:
331
-
332
- ```powershell
333
- choco install git -y
334
- ```
335
-
336
- The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation.
337
-
338
- After installation, close and reopen Git Bash to ensure the updated PATH is loaded.
339
-
340
- **Launching Git Bash:**
341
-
342
- - From Start Menu: Search for "Git Bash"
343
- - From Command Prompt: Run `"C:\Program Files\Git\bin\bash.exe"`
344
- - From File Explorer: Right-click in a folder and select "Git Bash Here"
345
-
346
- #### Verification
347
-
348
- In Git Bash, verify winpty is available:
349
-
350
- ```bash
351
- which winpty
352
- ```
353
-
354
- Expected output:
355
-
356
- ```
357
- /usr/bin/winpty
358
- ```
359
-
360
- Test winpty with an interactive command:
361
-
362
- ```bash
363
- winpty python --version
364
- ```
365
-
366
- Or start an interactive Python session:
367
-
368
- ```bash
369
- winpty python
370
- ```
371
-
372
- Expected behavior: Python REPL opens and accepts input. Type `exit()` or press Ctrl+D to exit.
373
-
374
- Check the winpty installation location:
375
-
376
- ```bash
377
- ls -la /usr/bin/winpty*
378
- ```
379
-
380
- Expected output shows multiple winpty files:
381
-
382
- ```
383
- -rwxr-xr-x 1 user group xxxxx /usr/bin/winpty
384
- -rwxr-xr-x 1 user group xxxxx /usr/bin/winpty-agent
385
- -rwxr-xr-x 1 user group xxxxx /usr/bin/winpty-debugserver
386
- ```
387
-
388
- #### Troubleshooting
389
-
390
- **Problem**: Interactive commands do not display properly or hang
391
-
392
- **Solution**: Prefix interactive Windows console programs with `winpty`:
393
-
394
- ```bash
395
- # Interactive Python
396
- winpty python
397
-
398
- # Interactive Node.js
399
- winpty node
400
-
401
- # Interactive Docker container
402
- winpty docker run -it ubuntu bash
403
-
404
- # Interactive MySQL client
405
- winpty mysql -u root -p
406
- ```
407
-
408
- **Problem**: Creating aliases for common interactive programs
409
-
410
- **Solution**: Add aliases to your `~/.bashrc` file:
411
-
412
- ```bash
413
- # Add these lines to ~/.bashrc
414
- echo 'alias python="winpty python"' >> ~/.bashrc
415
- echo 'alias node="winpty node"' >> ~/.bashrc
416
- echo 'alias ipython="winpty ipython"' >> ~/.bashrc
417
- source ~/.bashrc
418
- ```
419
-
420
- **Problem**: winpty causes issues with non-interactive commands
421
-
422
- **Solution**: winpty is only needed for interactive use. For scripts and piping, run commands without winpty:
423
-
424
- ```bash
425
- # Without winpty for non-interactive use
426
- python script.py
427
- node app.js
428
- echo "SELECT 1;" | mysql -u root
429
-
430
- # With winpty for interactive use
431
- winpty python
432
- winpty node
433
- winpty mysql -u root -p
434
- ```
435
-
436
- **Problem**: "stdout is not a tty" error
437
-
438
- **Solution**: This can occur when winpty interferes with piping. Run without winpty for piped commands:
439
-
440
- ```bash
441
- # This may fail
442
- winpty python -c "print('hello')" | grep hello
443
-
444
- # This works
445
- python -c "print('hello')" | grep hello
446
- ```
447
-
448
- **Problem**: MSYS path conversion issues with winpty
449
-
450
- **Solution**: Git Bash/MSYS2 converts Unix-style paths to Windows paths automatically. To prevent this:
451
-
452
- ```bash
453
- MSYS_NO_PATHCONV=1 winpty some-command /path/to/file
454
- ```
455
-
456
- ---
457
-
458
- ## Post-Installation Configuration
459
-
460
- ### Creating Shell Aliases for Common Programs
461
-
462
- If you frequently use interactive programs in Git Bash, create aliases to automatically use winpty:
463
-
464
- ```bash
465
- # Open ~/.bashrc in an editor
466
- notepad ~/.bashrc
467
- ```
468
-
469
- Add the following aliases:
470
-
471
- ```bash
472
- # Interactive program aliases for Git Bash
473
- alias python='winpty python'
474
- alias python3='winpty python3'
475
- alias node='winpty node'
476
- alias ipython='winpty ipython'
477
- alias php='winpty php -a'
478
- alias mysql='winpty mysql'
479
- alias psql='winpty psql'
480
- alias mongo='winpty mongo'
481
- alias redis-cli='winpty redis-cli'
482
- ```
483
-
484
- Reload your shell configuration:
485
-
486
- ```bash
487
- source ~/.bashrc
488
- ```
489
-
490
- ### Conditional Aliases (Optional)
491
-
492
- For more sophisticated setups, you can create conditional aliases that only apply winpty when running interactively:
493
-
494
- ```bash
495
- # Add to ~/.bashrc
496
- if [ -t 1 ]; then
497
- # Only apply these aliases when running in an interactive terminal
498
- alias python='winpty python'
499
- alias node='winpty node'
500
- fi
501
- ```
502
-
503
- ---
504
-
505
- ## Common Issues
506
-
507
- ### Issue: "the input device is not a TTY"
508
-
509
- **Symptoms**: Error message when running Docker, Python, or Node.js interactively in Git Bash
510
-
511
- **Solution**: This is the primary use case for winpty. Prefix your command with `winpty`:
512
-
513
- ```bash
514
- # Instead of:
515
- docker run -it ubuntu bash
516
-
517
- # Use:
518
- winpty docker run -it ubuntu bash
519
- ```
520
-
521
- ### Issue: Arrow Keys and Special Keys Not Working
522
-
523
- **Symptoms**: Arrow keys produce escape sequences like `^[[A` instead of navigating
524
-
525
- **Solution**: Use winpty to enable proper key handling:
526
-
527
- ```bash
528
- winpty python
529
- winpty node
530
- ```
531
-
532
- ### Issue: Colored Output Not Displaying
533
-
534
- **Symptoms**: Programs that should show colored output display plain text or escape codes
535
-
536
- **Solution**: winpty handles ANSI escape sequences. Ensure you are using winpty:
537
-
538
- ```bash
539
- winpty npm test
540
- ```
541
-
542
- ### Issue: Programs Hang or Freeze
543
-
544
- **Symptoms**: Interactive programs become unresponsive in Git Bash
545
-
546
- **Solutions**:
547
-
548
- 1. Use winpty:
549
- ```bash
550
- winpty program-name
551
- ```
552
-
553
- 2. If using winpty already, try running without it (for non-interactive use):
554
- ```bash
555
- program-name --some-flag
556
- ```
557
-
558
- 3. Try running in Windows Command Prompt instead of Git Bash for problematic programs
559
-
560
- ### Issue: winpty Not Available After Git Update
561
-
562
- **Symptoms**: winpty stops working after updating Git for Windows
563
-
564
- **Solution**: Reinstall Git for Windows to ensure all components are properly installed:
565
-
566
- ```powershell
567
- choco uninstall git -y
568
- choco install git -y
569
- ```
570
-
571
- ### Issue: Incorrect Path Handling
572
-
573
- **Symptoms**: File paths are mangled or converted incorrectly when using winpty
574
-
575
- **Solution**: Disable MSYS path conversion for specific commands:
576
-
577
- ```bash
578
- MSYS_NO_PATHCONV=1 winpty command /path/to/file
579
- ```
580
-
581
- Or use Windows-style paths:
582
-
583
- ```bash
584
- winpty command "C:\path\to\file"
585
- ```
586
-
587
- ---
588
-
589
- ## How winpty Works
590
-
591
- Understanding how winpty works can help troubleshoot issues:
592
-
593
- 1. **Problem**: MinTTY (Git Bash's terminal) uses Unix-style PTY communication, but Windows console programs expect Windows Console API calls.
594
-
595
- 2. **Solution**: winpty creates a hidden Windows console window and runs the target program in it. The winpty-agent process monitors this hidden console and translates:
596
- - Keyboard input from MinTTY into Windows console input events
597
- - Console screen buffer changes into terminal escape sequences for MinTTY
598
-
599
- 3. **Architecture**:
600
- ```
601
- MinTTY <-> winpty.exe <-> winpty-agent.exe <-> Hidden Console <-> Target Program
602
- ```
603
-
604
- 4. **Limitations**:
605
- - winpty adds overhead compared to native console programs
606
- - Some advanced console features may not translate perfectly
607
- - Piping and redirection should be done without winpty
608
-
609
- ---
610
-
611
- ## References
612
-
613
- - [winpty GitHub Repository](https://github.com/rprichard/winpty)
614
- - [winpty Releases](https://github.com/rprichard/winpty/releases)
615
- - [Git for Windows](https://gitforwindows.org/)
616
- - [Git for Windows FAQ](https://gitforwindows.org/faq)
617
- - [MSYS2 winpty Package](https://packages.msys2.org/packages/winpty)
618
- - [Scoop winpty Package](https://bjansen.github.io/scoop-apps/extras/winpty/)
619
- - [MinTTY Terminal](https://mintty.github.io/)
620
- - [Windows Console and Terminal Ecosystem](https://docs.microsoft.com/en-us/windows/console/)