@fredlackey/devutils 0.0.17 → 0.0.19

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 (331) hide show
  1. package/README.md +32 -150
  2. package/package.json +5 -82
  3. package/bin/dev.js +0 -16
  4. package/files/README.md +0 -0
  5. package/files/claude/.claude/commands/setup-context.md +0 -3
  6. package/files/monorepos/_archive/README.md +0 -36
  7. package/files/monorepos/_legacy/README.md +0 -36
  8. package/files/monorepos/ai-docs/README.md +0 -33
  9. package/files/monorepos/apps/README.md +0 -24
  10. package/files/monorepos/docs/README.md +0 -40
  11. package/files/monorepos/packages/README.md +0 -25
  12. package/files/monorepos/research/README.md +0 -29
  13. package/files/monorepos/scripts/README.md +0 -24
  14. package/src/cli.js +0 -72
  15. package/src/commands/README.md +0 -41
  16. package/src/commands/configure.js +0 -199
  17. package/src/commands/identity.js +0 -1630
  18. package/src/commands/ignore.js +0 -247
  19. package/src/commands/install.js +0 -526
  20. package/src/commands/setup.js +0 -246
  21. package/src/commands/status.js +0 -223
  22. package/src/commands/update.js +0 -142
  23. package/src/commands/version.js +0 -100
  24. package/src/completion.js +0 -284
  25. package/src/constants.js +0 -45
  26. package/src/ignore/claude-code.txt +0 -10
  27. package/src/ignore/docker.txt +0 -18
  28. package/src/ignore/linux.txt +0 -23
  29. package/src/ignore/macos.txt +0 -36
  30. package/src/ignore/node.txt +0 -55
  31. package/src/ignore/terraform.txt +0 -37
  32. package/src/ignore/vscode.txt +0 -18
  33. package/src/ignore/windows.txt +0 -35
  34. package/src/index.js +0 -0
  35. package/src/installs/README.md +0 -399
  36. package/src/installs/adobe-creative-cloud.js +0 -546
  37. package/src/installs/adobe-creative-cloud.md +0 -605
  38. package/src/installs/appcleaner.js +0 -321
  39. package/src/installs/appcleaner.md +0 -699
  40. package/src/installs/apt-transport-https.js +0 -390
  41. package/src/installs/apt-transport-https.md +0 -678
  42. package/src/installs/atomicparsley.js +0 -642
  43. package/src/installs/atomicparsley.md +0 -795
  44. package/src/installs/aws-cli.js +0 -797
  45. package/src/installs/aws-cli.md +0 -727
  46. package/src/installs/balena-etcher.js +0 -710
  47. package/src/installs/balena-etcher.md +0 -761
  48. package/src/installs/bambu-studio.js +0 -1143
  49. package/src/installs/bambu-studio.md +0 -780
  50. package/src/installs/bash-completion.js +0 -575
  51. package/src/installs/bash-completion.md +0 -833
  52. package/src/installs/bash.js +0 -417
  53. package/src/installs/bash.md +0 -993
  54. package/src/installs/beyond-compare.js +0 -603
  55. package/src/installs/beyond-compare.md +0 -813
  56. package/src/installs/brave-browser.js +0 -968
  57. package/src/installs/brave-browser.md +0 -650
  58. package/src/installs/build-essential.js +0 -529
  59. package/src/installs/build-essential.md +0 -977
  60. package/src/installs/ca-certificates.js +0 -618
  61. package/src/installs/ca-certificates.md +0 -937
  62. package/src/installs/caffeine.js +0 -508
  63. package/src/installs/caffeine.md +0 -839
  64. package/src/installs/camtasia.js +0 -596
  65. package/src/installs/camtasia.md +0 -762
  66. package/src/installs/chatgpt.js +0 -476
  67. package/src/installs/chatgpt.md +0 -814
  68. package/src/installs/chocolatey.js +0 -456
  69. package/src/installs/chocolatey.md +0 -661
  70. package/src/installs/chrome-canary.js +0 -419
  71. package/src/installs/chrome-canary.md +0 -641
  72. package/src/installs/chromium.js +0 -667
  73. package/src/installs/chromium.md +0 -838
  74. package/src/installs/claude-code.js +0 -576
  75. package/src/installs/claude-code.md +0 -1173
  76. package/src/installs/cloudflare-warp.js +0 -900
  77. package/src/installs/cloudflare-warp.md +0 -1047
  78. package/src/installs/comet-browser.js +0 -588
  79. package/src/installs/comet-browser.md +0 -731
  80. package/src/installs/curl.js +0 -379
  81. package/src/installs/curl.md +0 -714
  82. package/src/installs/cursor.js +0 -579
  83. package/src/installs/cursor.md +0 -970
  84. package/src/installs/dbeaver.js +0 -924
  85. package/src/installs/dbeaver.md +0 -939
  86. package/src/installs/dbschema.js +0 -692
  87. package/src/installs/dbschema.md +0 -925
  88. package/src/installs/dependencies.md +0 -453
  89. package/src/installs/development-tools.js +0 -600
  90. package/src/installs/development-tools.md +0 -977
  91. package/src/installs/docker.js +0 -1029
  92. package/src/installs/docker.md +0 -1109
  93. package/src/installs/drawio.js +0 -1019
  94. package/src/installs/drawio.md +0 -795
  95. package/src/installs/elmedia-player.js +0 -347
  96. package/src/installs/elmedia-player.md +0 -556
  97. package/src/installs/ffmpeg.js +0 -889
  98. package/src/installs/ffmpeg.md +0 -852
  99. package/src/installs/file.js +0 -464
  100. package/src/installs/file.md +0 -987
  101. package/src/installs/gemini-cli.js +0 -811
  102. package/src/installs/gemini-cli.md +0 -1153
  103. package/src/installs/git.js +0 -400
  104. package/src/installs/git.md +0 -907
  105. package/src/installs/gitego.js +0 -949
  106. package/src/installs/gitego.md +0 -1172
  107. package/src/installs/go.js +0 -931
  108. package/src/installs/go.md +0 -958
  109. package/src/installs/google-antigravity.js +0 -913
  110. package/src/installs/google-antigravity.md +0 -1075
  111. package/src/installs/google-chrome.js +0 -833
  112. package/src/installs/google-chrome.md +0 -862
  113. package/src/installs/gpg.js +0 -480
  114. package/src/installs/gpg.md +0 -1056
  115. package/src/installs/homebrew.js +0 -1033
  116. package/src/installs/homebrew.md +0 -988
  117. package/src/installs/imageoptim.js +0 -968
  118. package/src/installs/imageoptim.md +0 -1119
  119. package/src/installs/installers.json +0 -4032
  120. package/src/installs/installers.json.tmp +0 -3953
  121. package/src/installs/jq.js +0 -400
  122. package/src/installs/jq.md +0 -809
  123. package/src/installs/keyboard-maestro.js +0 -719
  124. package/src/installs/keyboard-maestro.md +0 -825
  125. package/src/installs/kiro.js +0 -864
  126. package/src/installs/kiro.md +0 -1015
  127. package/src/installs/latex.js +0 -789
  128. package/src/installs/latex.md +0 -1095
  129. package/src/installs/lftp.js +0 -356
  130. package/src/installs/lftp.md +0 -907
  131. package/src/installs/lsb-release.js +0 -346
  132. package/src/installs/lsb-release.md +0 -814
  133. package/src/installs/messenger.js +0 -847
  134. package/src/installs/messenger.md +0 -900
  135. package/src/installs/microsoft-office.js +0 -568
  136. package/src/installs/microsoft-office.md +0 -760
  137. package/src/installs/microsoft-teams.js +0 -801
  138. package/src/installs/microsoft-teams.md +0 -886
  139. package/src/installs/moom.js +0 -326
  140. package/src/installs/moom.md +0 -570
  141. package/src/installs/node.js +0 -904
  142. package/src/installs/node.md +0 -1153
  143. package/src/installs/nordpass.js +0 -716
  144. package/src/installs/nordpass.md +0 -921
  145. package/src/installs/nordvpn.js +0 -892
  146. package/src/installs/nordvpn.md +0 -1052
  147. package/src/installs/nvm.js +0 -995
  148. package/src/installs/nvm.md +0 -1057
  149. package/src/installs/ohmyzsh.js +0 -529
  150. package/src/installs/ohmyzsh.md +0 -1094
  151. package/src/installs/openssh.js +0 -804
  152. package/src/installs/openssh.md +0 -1056
  153. package/src/installs/pandoc.js +0 -662
  154. package/src/installs/pandoc.md +0 -1036
  155. package/src/installs/parallels-desktop.js +0 -431
  156. package/src/installs/parallels-desktop.md +0 -446
  157. package/src/installs/pinentry.js +0 -510
  158. package/src/installs/pinentry.md +0 -1142
  159. package/src/installs/pngyu.js +0 -869
  160. package/src/installs/pngyu.md +0 -896
  161. package/src/installs/postman.js +0 -799
  162. package/src/installs/postman.md +0 -940
  163. package/src/installs/procps.js +0 -425
  164. package/src/installs/procps.md +0 -851
  165. package/src/installs/safari-tech-preview.js +0 -374
  166. package/src/installs/safari-tech-preview.md +0 -533
  167. package/src/installs/sfnt2woff.js +0 -658
  168. package/src/installs/sfnt2woff.md +0 -795
  169. package/src/installs/shellcheck.js +0 -481
  170. package/src/installs/shellcheck.md +0 -1005
  171. package/src/installs/slack.js +0 -741
  172. package/src/installs/slack.md +0 -865
  173. package/src/installs/snagit.js +0 -585
  174. package/src/installs/snagit.md +0 -844
  175. package/src/installs/software-properties-common.js +0 -372
  176. package/src/installs/software-properties-common.md +0 -805
  177. package/src/installs/spotify.js +0 -877
  178. package/src/installs/spotify.md +0 -901
  179. package/src/installs/studio-3t.js +0 -823
  180. package/src/installs/studio-3t.md +0 -918
  181. package/src/installs/sublime-text.js +0 -804
  182. package/src/installs/sublime-text.md +0 -914
  183. package/src/installs/superwhisper.js +0 -706
  184. package/src/installs/superwhisper.md +0 -630
  185. package/src/installs/tailscale.js +0 -745
  186. package/src/installs/tailscale.md +0 -1100
  187. package/src/installs/tar.js +0 -389
  188. package/src/installs/tar.md +0 -946
  189. package/src/installs/termius.js +0 -798
  190. package/src/installs/termius.md +0 -844
  191. package/src/installs/terraform.js +0 -779
  192. package/src/installs/terraform.md +0 -899
  193. package/src/installs/tfenv.js +0 -778
  194. package/src/installs/tfenv.md +0 -1091
  195. package/src/installs/tidal.js +0 -771
  196. package/src/installs/tidal.md +0 -864
  197. package/src/installs/tmux.js +0 -346
  198. package/src/installs/tmux.md +0 -1030
  199. package/src/installs/tree.js +0 -411
  200. package/src/installs/tree.md +0 -833
  201. package/src/installs/unzip.js +0 -460
  202. package/src/installs/unzip.md +0 -879
  203. package/src/installs/vim.js +0 -421
  204. package/src/installs/vim.md +0 -1040
  205. package/src/installs/vlc.js +0 -821
  206. package/src/installs/vlc.md +0 -927
  207. package/src/installs/vscode.js +0 -843
  208. package/src/installs/vscode.md +0 -1002
  209. package/src/installs/wget.js +0 -420
  210. package/src/installs/wget.md +0 -791
  211. package/src/installs/whatsapp.js +0 -729
  212. package/src/installs/whatsapp.md +0 -854
  213. package/src/installs/winpty.js +0 -352
  214. package/src/installs/winpty.md +0 -620
  215. package/src/installs/woff2.js +0 -553
  216. package/src/installs/woff2.md +0 -977
  217. package/src/installs/wsl.js +0 -572
  218. package/src/installs/wsl.md +0 -699
  219. package/src/installs/xcode-clt.js +0 -520
  220. package/src/installs/xcode-clt.md +0 -351
  221. package/src/installs/xcode.js +0 -560
  222. package/src/installs/xcode.md +0 -573
  223. package/src/installs/yarn.js +0 -824
  224. package/src/installs/yarn.md +0 -1074
  225. package/src/installs/yq.js +0 -654
  226. package/src/installs/yq.md +0 -944
  227. package/src/installs/yt-dlp.js +0 -701
  228. package/src/installs/yt-dlp.md +0 -946
  229. package/src/installs/yum-utils.js +0 -297
  230. package/src/installs/yum-utils.md +0 -648
  231. package/src/installs/zoom.js +0 -759
  232. package/src/installs/zoom.md +0 -884
  233. package/src/installs/zsh.js +0 -455
  234. package/src/installs/zsh.md +0 -1008
  235. package/src/scripts/README.md +0 -617
  236. package/src/scripts/STATUS.md +0 -208
  237. package/src/scripts/afk.js +0 -411
  238. package/src/scripts/backup-all.js +0 -746
  239. package/src/scripts/backup-source.js +0 -727
  240. package/src/scripts/brewd.js +0 -389
  241. package/src/scripts/brewi.js +0 -520
  242. package/src/scripts/brewr.js +0 -527
  243. package/src/scripts/brews.js +0 -477
  244. package/src/scripts/brewu.js +0 -504
  245. package/src/scripts/c.js +0 -201
  246. package/src/scripts/ccurl.js +0 -341
  247. package/src/scripts/certbot-crontab-init.js +0 -504
  248. package/src/scripts/certbot-init.js +0 -657
  249. package/src/scripts/ch.js +0 -355
  250. package/src/scripts/claude-danger.js +0 -268
  251. package/src/scripts/clean-dev.js +0 -435
  252. package/src/scripts/clear-dns-cache.js +0 -541
  253. package/src/scripts/clone.js +0 -435
  254. package/src/scripts/code-all.js +0 -437
  255. package/src/scripts/count-files.js +0 -211
  256. package/src/scripts/count-folders.js +0 -211
  257. package/src/scripts/count.js +0 -264
  258. package/src/scripts/d.js +0 -219
  259. package/src/scripts/datauri.js +0 -389
  260. package/src/scripts/delete-files.js +0 -380
  261. package/src/scripts/docker-clean.js +0 -426
  262. package/src/scripts/dp.js +0 -442
  263. package/src/scripts/e.js +0 -390
  264. package/src/scripts/empty-trash.js +0 -513
  265. package/src/scripts/evm.js +0 -444
  266. package/src/scripts/fetch-github-repos.js +0 -456
  267. package/src/scripts/get-channel.js +0 -345
  268. package/src/scripts/get-course.js +0 -399
  269. package/src/scripts/get-dependencies.js +0 -306
  270. package/src/scripts/get-folder.js +0 -799
  271. package/src/scripts/get-tunes.js +0 -426
  272. package/src/scripts/get-video.js +0 -367
  273. package/src/scripts/git-backup.js +0 -577
  274. package/src/scripts/git-clone.js +0 -493
  275. package/src/scripts/git-pup.js +0 -319
  276. package/src/scripts/git-push.js +0 -396
  277. package/src/scripts/h.js +0 -622
  278. package/src/scripts/hide-desktop-icons.js +0 -499
  279. package/src/scripts/hide-hidden-files.js +0 -538
  280. package/src/scripts/install-dependencies-from.js +0 -456
  281. package/src/scripts/ips.js +0 -663
  282. package/src/scripts/iso.js +0 -370
  283. package/src/scripts/killni.js +0 -577
  284. package/src/scripts/ll.js +0 -467
  285. package/src/scripts/local-ip.js +0 -325
  286. package/src/scripts/m.js +0 -524
  287. package/src/scripts/map.js +0 -309
  288. package/src/scripts/mkd.js +0 -351
  289. package/src/scripts/ncu-update-all.js +0 -457
  290. package/src/scripts/nginx-init.js +0 -718
  291. package/src/scripts/npmi.js +0 -382
  292. package/src/scripts/o.js +0 -511
  293. package/src/scripts/org-by-date.js +0 -338
  294. package/src/scripts/p.js +0 -224
  295. package/src/scripts/packages.js +0 -330
  296. package/src/scripts/path.js +0 -225
  297. package/src/scripts/ports.js +0 -597
  298. package/src/scripts/q.js +0 -305
  299. package/src/scripts/refresh-files.js +0 -394
  300. package/src/scripts/remove-smaller-files.js +0 -516
  301. package/src/scripts/rename-files-with-date.js +0 -533
  302. package/src/scripts/resize-image.js +0 -539
  303. package/src/scripts/rm-safe.js +0 -669
  304. package/src/scripts/s.js +0 -540
  305. package/src/scripts/set-git-public.js +0 -365
  306. package/src/scripts/show-desktop-icons.js +0 -475
  307. package/src/scripts/show-hidden-files.js +0 -472
  308. package/src/scripts/tpa.js +0 -280
  309. package/src/scripts/tpo.js +0 -280
  310. package/src/scripts/u.js +0 -505
  311. package/src/scripts/vpush.js +0 -437
  312. package/src/scripts/y.js +0 -283
  313. package/src/utils/README.md +0 -95
  314. package/src/utils/common/apps.js +0 -143
  315. package/src/utils/common/display.js +0 -157
  316. package/src/utils/common/network.js +0 -185
  317. package/src/utils/common/os.js +0 -294
  318. package/src/utils/common/package-manager.js +0 -301
  319. package/src/utils/common/privileges.js +0 -138
  320. package/src/utils/common/shell.js +0 -216
  321. package/src/utils/macos/apps.js +0 -228
  322. package/src/utils/macos/brew.js +0 -315
  323. package/src/utils/ubuntu/apt.js +0 -307
  324. package/src/utils/ubuntu/desktop.js +0 -292
  325. package/src/utils/ubuntu/snap.js +0 -344
  326. package/src/utils/ubuntu/systemd.js +0 -286
  327. package/src/utils/windows/choco.js +0 -465
  328. package/src/utils/windows/env.js +0 -246
  329. package/src/utils/windows/registry.js +0 -269
  330. package/src/utils/windows/shell.js +0 -240
  331. 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/)