@fredlackey/devutils 0.0.1 → 0.0.3

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 (259) hide show
  1. package/README.md +5 -5
  2. package/package.json +1 -1
  3. package/src/commands/install.js +374 -36
  4. package/src/installs/adobe-creative-cloud.js +527 -25
  5. package/src/installs/adobe-creative-cloud.md +605 -0
  6. package/src/installs/appcleaner.js +303 -26
  7. package/src/installs/appcleaner.md +699 -0
  8. package/src/installs/apt-transport-https.js +390 -0
  9. package/src/installs/apt-transport-https.md +678 -0
  10. package/src/installs/atomicparsley.js +624 -26
  11. package/src/installs/atomicparsley.md +795 -0
  12. package/src/installs/aws-cli.js +779 -26
  13. package/src/installs/aws-cli.md +727 -0
  14. package/src/installs/balena-etcher.js +688 -26
  15. package/src/installs/balena-etcher.md +761 -0
  16. package/src/installs/bambu-studio.js +912 -26
  17. package/src/installs/bambu-studio.md +780 -0
  18. package/src/installs/bash-completion.js +554 -23
  19. package/src/installs/bash-completion.md +833 -0
  20. package/src/installs/bash.js +399 -26
  21. package/src/installs/bash.md +993 -0
  22. package/src/installs/beyond-compare.js +585 -26
  23. package/src/installs/beyond-compare.md +813 -0
  24. package/src/installs/build-essential.js +511 -26
  25. package/src/installs/build-essential.md +977 -0
  26. package/src/installs/ca-certificates.js +618 -0
  27. package/src/installs/ca-certificates.md +937 -0
  28. package/src/installs/caffeine.js +490 -26
  29. package/src/installs/caffeine.md +839 -0
  30. package/src/installs/camtasia.js +577 -25
  31. package/src/installs/camtasia.md +762 -0
  32. package/src/installs/chatgpt.js +458 -26
  33. package/src/installs/chatgpt.md +814 -0
  34. package/src/installs/chocolatey.js +447 -0
  35. package/src/installs/chocolatey.md +661 -0
  36. package/src/installs/chrome-canary.js +472 -26
  37. package/src/installs/chrome-canary.md +641 -0
  38. package/src/installs/chromium.js +645 -26
  39. package/src/installs/chromium.md +838 -0
  40. package/src/installs/claude-code.js +558 -26
  41. package/src/installs/claude-code.md +1173 -0
  42. package/src/installs/curl.js +361 -26
  43. package/src/installs/curl.md +714 -0
  44. package/src/installs/cursor.js +561 -26
  45. package/src/installs/cursor.md +970 -0
  46. package/src/installs/dbschema.js +674 -26
  47. package/src/installs/dbschema.md +925 -0
  48. package/src/installs/dependencies.md +435 -0
  49. package/src/installs/development-tools.js +600 -0
  50. package/src/installs/development-tools.md +977 -0
  51. package/src/installs/docker.js +1010 -25
  52. package/src/installs/docker.md +1109 -0
  53. package/src/installs/drawio.js +1001 -26
  54. package/src/installs/drawio.md +795 -0
  55. package/src/installs/elmedia-player.js +328 -25
  56. package/src/installs/elmedia-player.md +556 -0
  57. package/src/installs/ffmpeg.js +870 -25
  58. package/src/installs/ffmpeg.md +852 -0
  59. package/src/installs/file.js +464 -0
  60. package/src/installs/file.md +987 -0
  61. package/src/installs/gemini-cli.js +793 -26
  62. package/src/installs/gemini-cli.md +1153 -0
  63. package/src/installs/git.js +382 -26
  64. package/src/installs/git.md +907 -0
  65. package/src/installs/gitego.js +931 -26
  66. package/src/installs/gitego.md +1172 -0
  67. package/src/installs/go.js +913 -26
  68. package/src/installs/go.md +958 -0
  69. package/src/installs/google-chrome.js +801 -25
  70. package/src/installs/google-chrome.md +862 -0
  71. package/src/installs/gpg.js +412 -73
  72. package/src/installs/gpg.md +1056 -0
  73. package/src/installs/homebrew.js +1015 -26
  74. package/src/installs/homebrew.md +988 -0
  75. package/src/installs/imageoptim.js +950 -26
  76. package/src/installs/imageoptim.md +1119 -0
  77. package/src/installs/installers.json +2297 -0
  78. package/src/installs/jq.js +382 -26
  79. package/src/installs/jq.md +809 -0
  80. package/src/installs/keyboard-maestro.js +701 -26
  81. package/src/installs/keyboard-maestro.md +825 -0
  82. package/src/installs/latex.js +771 -26
  83. package/src/installs/latex.md +1095 -0
  84. package/src/installs/lftp.js +338 -26
  85. package/src/installs/lftp.md +907 -0
  86. package/src/installs/lsb-release.js +346 -0
  87. package/src/installs/lsb-release.md +814 -0
  88. package/src/installs/messenger.js +829 -26
  89. package/src/installs/messenger.md +900 -0
  90. package/src/installs/microsoft-office.js +550 -26
  91. package/src/installs/microsoft-office.md +760 -0
  92. package/src/installs/microsoft-teams.js +782 -25
  93. package/src/installs/microsoft-teams.md +886 -0
  94. package/src/installs/node.js +886 -26
  95. package/src/installs/node.md +1153 -0
  96. package/src/installs/nordpass.js +698 -26
  97. package/src/installs/nordpass.md +921 -0
  98. package/src/installs/nvm.js +977 -26
  99. package/src/installs/nvm.md +1057 -0
  100. package/src/installs/openssh.js +734 -64
  101. package/src/installs/openssh.md +1056 -0
  102. package/src/installs/pandoc.js +644 -26
  103. package/src/installs/pandoc.md +1036 -0
  104. package/src/installs/pinentry.js +492 -26
  105. package/src/installs/pinentry.md +1142 -0
  106. package/src/installs/pngyu.js +851 -26
  107. package/src/installs/pngyu.md +896 -0
  108. package/src/installs/postman.js +781 -26
  109. package/src/installs/postman.md +940 -0
  110. package/src/installs/procps.js +425 -0
  111. package/src/installs/procps.md +851 -0
  112. package/src/installs/safari-tech-preview.js +355 -25
  113. package/src/installs/safari-tech-preview.md +533 -0
  114. package/src/installs/sfnt2woff.js +640 -26
  115. package/src/installs/sfnt2woff.md +795 -0
  116. package/src/installs/shellcheck.js +463 -26
  117. package/src/installs/shellcheck.md +1005 -0
  118. package/src/installs/slack.js +722 -25
  119. package/src/installs/slack.md +865 -0
  120. package/src/installs/snagit.js +566 -25
  121. package/src/installs/snagit.md +844 -0
  122. package/src/installs/software-properties-common.js +372 -0
  123. package/src/installs/software-properties-common.md +805 -0
  124. package/src/installs/spotify.js +858 -25
  125. package/src/installs/spotify.md +901 -0
  126. package/src/installs/studio-3t.js +803 -26
  127. package/src/installs/studio-3t.md +918 -0
  128. package/src/installs/sublime-text.js +780 -25
  129. package/src/installs/sublime-text.md +914 -0
  130. package/src/installs/superwhisper.js +687 -25
  131. package/src/installs/superwhisper.md +630 -0
  132. package/src/installs/tailscale.js +727 -26
  133. package/src/installs/tailscale.md +1100 -0
  134. package/src/installs/tar.js +389 -0
  135. package/src/installs/tar.md +946 -0
  136. package/src/installs/termius.js +780 -26
  137. package/src/installs/termius.md +844 -0
  138. package/src/installs/terraform.js +761 -26
  139. package/src/installs/terraform.md +899 -0
  140. package/src/installs/tidal.js +752 -25
  141. package/src/installs/tidal.md +864 -0
  142. package/src/installs/tmux.js +328 -26
  143. package/src/installs/tmux.md +1030 -0
  144. package/src/installs/tree.js +393 -26
  145. package/src/installs/tree.md +833 -0
  146. package/src/installs/unzip.js +460 -0
  147. package/src/installs/unzip.md +879 -0
  148. package/src/installs/vim.js +403 -26
  149. package/src/installs/vim.md +1040 -0
  150. package/src/installs/vlc.js +803 -26
  151. package/src/installs/vlc.md +927 -0
  152. package/src/installs/vscode.js +825 -26
  153. package/src/installs/vscode.md +1002 -0
  154. package/src/installs/wget.js +415 -0
  155. package/src/installs/wget.md +791 -0
  156. package/src/installs/whatsapp.js +710 -25
  157. package/src/installs/whatsapp.md +854 -0
  158. package/src/installs/winpty.js +352 -0
  159. package/src/installs/winpty.md +620 -0
  160. package/src/installs/woff2.js +535 -26
  161. package/src/installs/woff2.md +977 -0
  162. package/src/installs/wsl.js +572 -0
  163. package/src/installs/wsl.md +699 -0
  164. package/src/installs/xcode-clt.js +520 -0
  165. package/src/installs/xcode-clt.md +351 -0
  166. package/src/installs/xcode.js +542 -26
  167. package/src/installs/xcode.md +573 -0
  168. package/src/installs/yarn.js +806 -26
  169. package/src/installs/yarn.md +1074 -0
  170. package/src/installs/yq.js +636 -26
  171. package/src/installs/yq.md +944 -0
  172. package/src/installs/yt-dlp.js +683 -26
  173. package/src/installs/yt-dlp.md +946 -0
  174. package/src/installs/yum-utils.js +297 -0
  175. package/src/installs/yum-utils.md +648 -0
  176. package/src/installs/zoom.js +740 -25
  177. package/src/installs/zoom.md +884 -0
  178. package/src/scripts/README.md +567 -45
  179. package/src/scripts/STATUS.md +208 -0
  180. package/src/scripts/afk.js +395 -7
  181. package/src/scripts/backup-all.js +731 -9
  182. package/src/scripts/backup-source.js +711 -8
  183. package/src/scripts/brewd.js +373 -7
  184. package/src/scripts/brewi.js +505 -9
  185. package/src/scripts/brewr.js +512 -9
  186. package/src/scripts/brews.js +462 -9
  187. package/src/scripts/brewu.js +488 -7
  188. package/src/scripts/c.js +185 -7
  189. package/src/scripts/ccurl.js +325 -8
  190. package/src/scripts/certbot-crontab-init.js +488 -8
  191. package/src/scripts/certbot-init.js +641 -9
  192. package/src/scripts/ch.js +339 -7
  193. package/src/scripts/claude-danger.js +253 -8
  194. package/src/scripts/clean-dev.js +419 -8
  195. package/src/scripts/clear-dns-cache.js +525 -7
  196. package/src/scripts/clone.js +417 -7
  197. package/src/scripts/code-all.js +420 -7
  198. package/src/scripts/count-files.js +195 -8
  199. package/src/scripts/count-folders.js +195 -8
  200. package/src/scripts/count.js +248 -8
  201. package/src/scripts/d.js +203 -7
  202. package/src/scripts/datauri.js +373 -8
  203. package/src/scripts/delete-files.js +363 -7
  204. package/src/scripts/docker-clean.js +410 -8
  205. package/src/scripts/dp.js +426 -7
  206. package/src/scripts/e.js +375 -9
  207. package/src/scripts/empty-trash.js +497 -7
  208. package/src/scripts/evm.js +428 -9
  209. package/src/scripts/fetch-github-repos.js +441 -10
  210. package/src/scripts/get-channel.js +329 -8
  211. package/src/scripts/get-course.js +384 -11
  212. package/src/scripts/get-dependencies.js +290 -9
  213. package/src/scripts/get-folder.js +783 -10
  214. package/src/scripts/get-tunes.js +411 -10
  215. package/src/scripts/get-video.js +352 -9
  216. package/src/scripts/git-backup.js +561 -9
  217. package/src/scripts/git-clone.js +477 -9
  218. package/src/scripts/git-pup.js +303 -7
  219. package/src/scripts/git-push.js +380 -8
  220. package/src/scripts/h.js +607 -9
  221. package/src/scripts/hide-desktop-icons.js +483 -7
  222. package/src/scripts/hide-hidden-files.js +522 -7
  223. package/src/scripts/install-dependencies-from.js +440 -9
  224. package/src/scripts/ips.js +647 -10
  225. package/src/scripts/iso.js +354 -8
  226. package/src/scripts/killni.js +561 -7
  227. package/src/scripts/ll.js +451 -8
  228. package/src/scripts/local-ip.js +310 -8
  229. package/src/scripts/m.js +508 -8
  230. package/src/scripts/map.js +293 -8
  231. package/src/scripts/mkd.js +287 -7
  232. package/src/scripts/ncu-update-all.js +441 -8
  233. package/src/scripts/nginx-init.js +702 -12
  234. package/src/scripts/npmi.js +366 -7
  235. package/src/scripts/o.js +495 -8
  236. package/src/scripts/org-by-date.js +321 -7
  237. package/src/scripts/p.js +208 -7
  238. package/src/scripts/packages.js +313 -8
  239. package/src/scripts/path.js +209 -7
  240. package/src/scripts/ports.js +582 -8
  241. package/src/scripts/q.js +290 -8
  242. package/src/scripts/refresh-files.js +378 -10
  243. package/src/scripts/remove-smaller-files.js +500 -8
  244. package/src/scripts/rename-files-with-date.js +517 -9
  245. package/src/scripts/resize-image.js +523 -9
  246. package/src/scripts/rm-safe.js +653 -8
  247. package/src/scripts/s.js +525 -9
  248. package/src/scripts/set-git-public.js +349 -7
  249. package/src/scripts/show-desktop-icons.js +459 -7
  250. package/src/scripts/show-hidden-files.js +456 -7
  251. package/src/scripts/tpa.js +265 -8
  252. package/src/scripts/tpo.js +264 -7
  253. package/src/scripts/u.js +489 -7
  254. package/src/scripts/vpush.js +422 -8
  255. package/src/scripts/y.js +267 -7
  256. package/src/utils/common/os.js +94 -2
  257. package/src/utils/ubuntu/apt.js +13 -7
  258. package/src/utils/windows/choco.js +82 -26
  259. package/src/utils/windows/winget.js +89 -27
@@ -0,0 +1,1030 @@
1
+ # Installing tmux
2
+
3
+ ## Overview
4
+
5
+ tmux is a terminal multiplexer that allows you to create, access, and control multiple terminal sessions from a single screen. Originally developed by Nicholas Marriott and first released in 2007, tmux has become an essential tool for developers, system administrators, and power users who work extensively in the command line.
6
+
7
+ tmux enables you to:
8
+
9
+ - Run multiple terminal sessions within a single window
10
+ - Detach from sessions and reattach later (even from a different computer)
11
+ - Split your terminal into multiple panes for side-by-side work
12
+ - Keep processes running after disconnecting from SSH
13
+ - Share terminal sessions with other users
14
+ - Create persistent workspaces that survive terminal crashes
15
+
16
+ The current stable version is tmux 3.6a. This guide documents tmux installation procedures for all platforms supported by DevUtils CLI.
17
+
18
+ ## Dependencies
19
+
20
+ ### macOS (Homebrew)
21
+ - **Required:**
22
+ - Homebrew - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or `dev install homebrew`
23
+ - **Optional:** None
24
+ - **Auto-installed by Homebrew:**
25
+ - libevent - Event notification library (installed automatically as tmux dependency)
26
+ - ncurses - Terminal handling library (installed automatically as tmux dependency)
27
+ - utf8proc - Unicode processing library (installed automatically as tmux dependency)
28
+
29
+ ### Ubuntu (APT/Snap)
30
+ - **Required:** None (tmux is available in default repositories)
31
+ - **Optional:** None
32
+ - **Auto-installed by APT:**
33
+ - libevent-2.1-7 - Event notification library (installed automatically as tmux dependency)
34
+ - libtinfo6 - Terminal handling library (installed automatically as tmux dependency)
35
+ - libc6 - Standard C library (installed automatically as tmux dependency)
36
+
37
+ ### Raspberry Pi OS (APT/Snap)
38
+ - **Required:** None (tmux is available in default repositories)
39
+ - **Optional:** None
40
+ - **Auto-installed by APT:**
41
+ - libevent-2.1-7 - Event notification library (installed automatically as tmux dependency)
42
+ - libtinfo6 - Terminal handling library (installed automatically as tmux dependency)
43
+ - libc6 - Standard C library (installed automatically as tmux dependency)
44
+
45
+ ### Amazon Linux (DNF/YUM)
46
+ - **Required:** None (tmux is available in default repositories)
47
+ - **Optional:** None
48
+ - **Auto-installed by DNF/YUM:**
49
+ - libevent - Event notification library (installed automatically as tmux dependency)
50
+ - ncurses-libs - Terminal handling library (installed automatically as tmux dependency)
51
+
52
+ ### Windows (Chocolatey/winget)
53
+ - **Required:** WSL 2 with Ubuntu distribution is required, as tmux does not run natively on Windows
54
+ - Install WSL via PowerShell (as Administrator): `wsl --install`
55
+ - After WSL is installed, follow Ubuntu installation instructions within WSL environment
56
+ - **Optional:** None
57
+ - **Auto-installed:** None (installation not supported on native Windows)
58
+
59
+ ### Git Bash (Manual/Portable)
60
+ - **Required (for manual MSYS2 method):**
61
+ - Git for Windows - Download from https://git-scm.com/download/win
62
+ - MSYS2 - Download and install from https://www.msys2.org/
63
+ - tmux binaries from MSYS2 - Install via `pacman -Sy --noconfirm tmux` in MSYS2 terminal
64
+ - msys-event DLLs - Copy from MSYS2 `/usr/bin/msys-event*.dll` to Git Bash `/usr/bin/` directory
65
+ - **Optional:** None
66
+ - **Auto-installed:** None (installation not supported via automated script; requires manual copying of binaries)
67
+
68
+ **Note:** The automated installer script does not support Windows or Git Bash. For these platforms, manual installation via WSL (Windows) or MSYS2 binary copying (Git Bash) is required. See platform-specific sections below for detailed instructions.
69
+
70
+ ## Prerequisites
71
+
72
+ Before installing tmux on any platform, ensure:
73
+
74
+ 1. **Internet connectivity** - Required to download tmux packages
75
+ 2. **Administrative privileges** - Required for system-wide installation
76
+ 3. **Terminal access** - Required to run installation commands
77
+
78
+ ## Platform-Specific Installation
79
+
80
+ ### macOS (Homebrew)
81
+
82
+ #### Prerequisites
83
+
84
+ - macOS 10.15 (Catalina) or later (macOS 14 Sonoma or later recommended)
85
+ - Homebrew package manager installed
86
+ - Command line access via Terminal.app or iTerm2
87
+
88
+ If Homebrew is not installed, install it first:
89
+
90
+ ```bash
91
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
92
+ ```
93
+
94
+ #### Installation Steps
95
+
96
+ Run the following command to install tmux:
97
+
98
+ ```bash
99
+ brew install --quiet tmux
100
+ ```
101
+
102
+ The `--quiet` flag suppresses non-essential output, making the installation suitable for automation and scripts.
103
+
104
+ Homebrew automatically installs the required dependencies (libevent, ncurses, and utf8proc) as part of the installation process.
105
+
106
+ #### Verification
107
+
108
+ Confirm the installation succeeded:
109
+
110
+ ```bash
111
+ tmux -V
112
+ ```
113
+
114
+ Expected output (version numbers may vary):
115
+
116
+ ```
117
+ tmux 3.6a
118
+ ```
119
+
120
+ Verify the Homebrew version is being used:
121
+
122
+ ```bash
123
+ which tmux
124
+ ```
125
+
126
+ Expected output for Apple Silicon Macs:
127
+
128
+ ```
129
+ /opt/homebrew/bin/tmux
130
+ ```
131
+
132
+ Expected output for Intel Macs:
133
+
134
+ ```
135
+ /usr/local/bin/tmux
136
+ ```
137
+
138
+ #### Troubleshooting
139
+
140
+ **Problem**: `tmux: command not found` after installation
141
+
142
+ **Solution**: Ensure Homebrew's bin directory is in your PATH:
143
+
144
+ ```bash
145
+ echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
146
+ source ~/.zshrc
147
+ ```
148
+
149
+ For Intel Macs, use `/usr/local/bin` instead of `/opt/homebrew/bin`.
150
+
151
+ **Problem**: `brew: command not found`
152
+
153
+ **Solution**: Homebrew is not installed or not in PATH. Install Homebrew first:
154
+
155
+ ```bash
156
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
157
+ ```
158
+
159
+ **Problem**: Outdated version of tmux
160
+
161
+ **Solution**: Update Homebrew and upgrade tmux:
162
+
163
+ ```bash
164
+ brew update && brew upgrade tmux
165
+ ```
166
+
167
+ **Problem**: Permission errors during installation
168
+
169
+ **Solution**: Homebrew should not require sudo. If you encounter permission errors, fix Homebrew permissions:
170
+
171
+ ```bash
172
+ sudo chown -R $(whoami) /opt/homebrew
173
+ ```
174
+
175
+ ---
176
+
177
+ ### Ubuntu/Debian (APT)
178
+
179
+ #### Prerequisites
180
+
181
+ - Ubuntu 20.04 LTS or later, or Debian 11 (Bullseye) or later
182
+ - sudo privileges
183
+ - Internet connectivity
184
+
185
+ Ubuntu and Debian include tmux in their default repositories. The repository version is stable and well-tested, though it may not be the absolute latest release.
186
+
187
+ #### Installation Steps
188
+
189
+ Run the following commands to install tmux:
190
+
191
+ ```bash
192
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
193
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tmux
194
+ ```
195
+
196
+ The `DEBIAN_FRONTEND=noninteractive` environment variable ensures no interactive prompts appear during installation, making this suitable for scripts and automation. The `-y` flag automatically confirms the installation.
197
+
198
+ #### Verification
199
+
200
+ Confirm the installation succeeded:
201
+
202
+ ```bash
203
+ tmux -V
204
+ ```
205
+
206
+ Expected output (version numbers may vary based on your distribution):
207
+
208
+ ```
209
+ tmux 3.4
210
+ ```
211
+
212
+ Verify the installation location:
213
+
214
+ ```bash
215
+ which tmux
216
+ ```
217
+
218
+ Expected output:
219
+
220
+ ```
221
+ /usr/bin/tmux
222
+ ```
223
+
224
+ #### Troubleshooting
225
+
226
+ **Problem**: `E: Unable to locate package tmux`
227
+
228
+ **Solution**: Update your package lists first:
229
+
230
+ ```bash
231
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
232
+ ```
233
+
234
+ **Problem**: Older version of tmux than expected
235
+
236
+ **Solution**: Ubuntu and Debian repositories prioritize stability over bleeding-edge versions. If you need the latest version, build from source. First, install the build dependencies:
237
+
238
+ ```bash
239
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git automake build-essential libevent-dev libncurses5-dev bison pkg-config
240
+ ```
241
+
242
+ Then build tmux:
243
+
244
+ ```bash
245
+ git clone https://github.com/tmux/tmux.git
246
+ cd tmux
247
+ sh autogen.sh
248
+ ./configure && make
249
+ sudo make install
250
+ ```
251
+
252
+ **Problem**: `tmux: need UTF-8 locale` error
253
+
254
+ **Solution**: Ensure your locale is set correctly:
255
+
256
+ ```bash
257
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y locales
258
+ sudo locale-gen en_US.UTF-8
259
+ export LANG=en_US.UTF-8
260
+ export LC_ALL=en_US.UTF-8
261
+ ```
262
+
263
+ **Problem**: Package conflicts or broken dependencies
264
+
265
+ **Solution**: Fix broken packages before installing:
266
+
267
+ ```bash
268
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -f
269
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tmux
270
+ ```
271
+
272
+ ---
273
+
274
+ ### Raspberry Pi OS (APT)
275
+
276
+ #### Prerequisites
277
+
278
+ - Raspberry Pi OS (Bookworm or Bullseye recommended)
279
+ - Raspberry Pi 3B+ or later (any model supported by Raspberry Pi OS)
280
+ - sudo privileges
281
+ - Internet connectivity
282
+
283
+ Raspberry Pi OS is based on Debian, so tmux installation follows the Debian/APT method. tmux is available in the default repositories and works on both 32-bit (armhf) and 64-bit (arm64) architectures.
284
+
285
+ #### Installation Steps
286
+
287
+ First, verify your architecture:
288
+
289
+ ```bash
290
+ uname -m
291
+ ```
292
+
293
+ - `aarch64` = 64-bit ARM
294
+ - `armv7l` = 32-bit ARM
295
+
296
+ Install tmux using APT:
297
+
298
+ ```bash
299
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
300
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tmux
301
+ ```
302
+
303
+ The installation command is identical for both 32-bit and 64-bit Raspberry Pi OS.
304
+
305
+ #### Verification
306
+
307
+ Confirm the installation succeeded:
308
+
309
+ ```bash
310
+ tmux -V
311
+ ```
312
+
313
+ Expected output (version numbers may vary):
314
+
315
+ ```
316
+ tmux 3.3a
317
+ ```
318
+
319
+ Note: Raspberry Pi OS repositories may contain a slightly older version than Ubuntu or Homebrew. This is expected and the version provided is fully functional.
320
+
321
+ Verify the installation location:
322
+
323
+ ```bash
324
+ which tmux
325
+ ```
326
+
327
+ Expected output:
328
+
329
+ ```
330
+ /usr/bin/tmux
331
+ ```
332
+
333
+ #### Troubleshooting
334
+
335
+ **Problem**: Installation is slow
336
+
337
+ **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.
338
+
339
+ **Problem**: `E: Unable to fetch some archives`
340
+
341
+ **Solution**: Network connectivity issues. Check your internet connection and retry:
342
+
343
+ ```bash
344
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
345
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tmux
346
+ ```
347
+
348
+ **Problem**: `tmux: invalid LC_ALL, LC_CTYPE or LANG` error
349
+
350
+ **Solution**: Reconfigure your locales:
351
+
352
+ ```bash
353
+ sudo dpkg-reconfigure locales
354
+ ```
355
+
356
+ If the error persists, set the locale manually:
357
+
358
+ ```bash
359
+ echo 'export LANG=en_US.UTF-8' >> ~/.bashrc
360
+ echo 'export LC_ALL=en_US.UTF-8' >> ~/.bashrc
361
+ source ~/.bashrc
362
+ ```
363
+
364
+ **Problem**: tmux version is very old
365
+
366
+ **Solution**: Ensure your Raspberry Pi OS is up to date:
367
+
368
+ ```bash
369
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
370
+ sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y
371
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tmux
372
+ ```
373
+
374
+ ---
375
+
376
+ ### Amazon Linux (DNF/YUM)
377
+
378
+ #### Prerequisites
379
+
380
+ - Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
381
+ - sudo privileges
382
+ - EC2 instance or compatible environment
383
+
384
+ Amazon Linux 2023 uses DNF as the default package manager. Amazon Linux 2 uses YUM. tmux is included in the default Amazon Linux repositories.
385
+
386
+ **Important**: Amazon Linux 2 reaches end of support on June 30, 2026. Migrate to Amazon Linux 2023 for long-term support.
387
+
388
+ #### Installation Steps
389
+
390
+ **For Amazon Linux 2023 (AL2023):**
391
+
392
+ ```bash
393
+ sudo dnf install -y tmux
394
+ ```
395
+
396
+ **For Amazon Linux 2 (AL2):**
397
+
398
+ ```bash
399
+ sudo yum install -y tmux
400
+ ```
401
+
402
+ The `-y` flag automatically confirms installation, enabling non-interactive execution suitable for automation and scripts.
403
+
404
+ #### Verification
405
+
406
+ Confirm the installation succeeded:
407
+
408
+ ```bash
409
+ tmux -V
410
+ ```
411
+
412
+ Expected output (version numbers may vary):
413
+
414
+ ```
415
+ tmux 3.2a
416
+ ```
417
+
418
+ Verify the installation location:
419
+
420
+ ```bash
421
+ which tmux
422
+ ```
423
+
424
+ Expected output:
425
+
426
+ ```
427
+ /usr/bin/tmux
428
+ ```
429
+
430
+ #### Troubleshooting
431
+
432
+ **Problem**: `No match for argument: tmux`
433
+
434
+ **Solution**: Update the package cache and retry:
435
+
436
+ ```bash
437
+ # For AL2023
438
+ sudo dnf makecache
439
+ sudo dnf install -y tmux
440
+
441
+ # For AL2
442
+ sudo yum makecache
443
+ sudo yum install -y tmux
444
+ ```
445
+
446
+ **Problem**: tmux version is older than expected
447
+
448
+ **Solution**: Amazon's repositories prioritize stability over bleeding-edge versions. If you need the latest version, build from source:
449
+
450
+ ```bash
451
+ # Install dependencies
452
+ sudo dnf install -y git automake gcc make libevent-devel ncurses-devel bison pkg-config
453
+
454
+ # Build tmux
455
+ git clone https://github.com/tmux/tmux.git
456
+ cd tmux
457
+ sh autogen.sh
458
+ ./configure && make
459
+ sudo make install
460
+ ```
461
+
462
+ For Amazon Linux 2, replace `dnf` with `yum` in the dependency installation command.
463
+
464
+ **Problem**: `Cannot find a valid baseurl for repo`
465
+
466
+ **Solution**: Network or repository configuration issue. Check connectivity:
467
+
468
+ ```bash
469
+ # For AL2023
470
+ sudo dnf check-update
471
+
472
+ # For AL2
473
+ sudo yum check-update
474
+ ```
475
+
476
+ **Problem**: Permission denied errors
477
+
478
+ **Solution**: Ensure you are using sudo:
479
+
480
+ ```bash
481
+ sudo dnf install -y tmux
482
+ ```
483
+
484
+ ---
485
+
486
+ ### Windows (WSL Recommended)
487
+
488
+ #### Prerequisites
489
+
490
+ - Windows 10 version 2004 or higher (Build 19041+), or Windows 11
491
+ - Administrator access to install WSL
492
+ - WSL 2 with Ubuntu distribution
493
+
494
+ **Important**: tmux is a Unix-native application and does not run natively on Windows. The recommended approach is to use Windows Subsystem for Linux (WSL), which provides a full Linux environment where tmux runs properly.
495
+
496
+ Native Windows alternatives like Cygwin or MSYS2 can run tmux, but WSL provides better integration and performance.
497
+
498
+ #### Installation Steps
499
+
500
+ **Step 1: Install WSL with Ubuntu**
501
+
502
+ Open PowerShell as Administrator and run:
503
+
504
+ ```powershell
505
+ wsl --install
506
+ ```
507
+
508
+ This command installs WSL 2 with Ubuntu as the default distribution. Restart your computer when prompted.
509
+
510
+ **Step 2: Set up Ubuntu**
511
+
512
+ After restart, Ubuntu will launch automatically. Complete the initial setup by creating a username and password.
513
+
514
+ **Step 3: Install tmux in WSL Ubuntu**
515
+
516
+ Open Ubuntu (from Start Menu or Windows Terminal) and run:
517
+
518
+ ```bash
519
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
520
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tmux
521
+ ```
522
+
523
+ #### Verification
524
+
525
+ Confirm the installation succeeded within WSL:
526
+
527
+ ```bash
528
+ tmux -V
529
+ ```
530
+
531
+ Expected output (version numbers may vary):
532
+
533
+ ```
534
+ tmux 3.4
535
+ ```
536
+
537
+ Start a tmux session to verify it works:
538
+
539
+ ```bash
540
+ tmux new-session -s test
541
+ ```
542
+
543
+ Press `Ctrl+b` then `d` to detach from the session.
544
+
545
+ #### Troubleshooting
546
+
547
+ **Problem**: `wsl --install` fails or WSL not available
548
+
549
+ **Solution**: Enable WSL manually:
550
+
551
+ ```powershell
552
+ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
553
+ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
554
+ ```
555
+
556
+ Restart your computer, then set WSL 2 as default:
557
+
558
+ ```powershell
559
+ wsl --set-default-version 2
560
+ ```
561
+
562
+ **Problem**: Ubuntu not installed with WSL
563
+
564
+ **Solution**: Install Ubuntu manually:
565
+
566
+ ```powershell
567
+ wsl --install -d Ubuntu
568
+ ```
569
+
570
+ **Problem**: tmux sessions not persisting after closing Windows Terminal
571
+
572
+ **Solution**: tmux sessions run inside WSL, which may shut down when no terminals are open. Keep WSL running in the background, or reattach to existing sessions:
573
+
574
+ ```bash
575
+ tmux attach-session -t test
576
+ ```
577
+
578
+ **Problem**: Display issues or terminal not rendering correctly
579
+
580
+ **Solution**: Windows Terminal provides the best tmux experience. Install it from the Microsoft Store or via winget:
581
+
582
+ ```powershell
583
+ winget install --id Microsoft.WindowsTerminal --silent --accept-package-agreements --accept-source-agreements
584
+ ```
585
+
586
+ ---
587
+
588
+ ### WSL (Ubuntu)
589
+
590
+ #### Prerequisites
591
+
592
+ - Windows 10 version 2004 or higher, or Windows 11
593
+ - WSL 2 enabled with Ubuntu distribution installed
594
+ - sudo privileges within WSL
595
+
596
+ WSL runs Ubuntu (or another Linux distribution) within Windows. tmux must be installed within WSL, as it does not share binaries with Windows.
597
+
598
+ #### Installation Steps
599
+
600
+ Open your WSL Ubuntu terminal and run:
601
+
602
+ ```bash
603
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
604
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tmux
605
+ ```
606
+
607
+ The `DEBIAN_FRONTEND=noninteractive` environment variable ensures no interactive prompts appear during installation.
608
+
609
+ #### Verification
610
+
611
+ Confirm the installation succeeded:
612
+
613
+ ```bash
614
+ tmux -V
615
+ ```
616
+
617
+ Expected output (version numbers may vary):
618
+
619
+ ```
620
+ tmux 3.4
621
+ ```
622
+
623
+ Verify the installation location:
624
+
625
+ ```bash
626
+ which tmux
627
+ ```
628
+
629
+ Expected output:
630
+
631
+ ```
632
+ /usr/bin/tmux
633
+ ```
634
+
635
+ Test tmux by creating a new session:
636
+
637
+ ```bash
638
+ tmux new-session -s test
639
+ ```
640
+
641
+ #### Troubleshooting
642
+
643
+ **Problem**: `Cannot connect to server` error when running tmux
644
+
645
+ **Solution**: The tmux server may not be running. This can happen if the `/tmp` directory has permission issues. Check permissions:
646
+
647
+ ```bash
648
+ ls -la /tmp
649
+ ```
650
+
651
+ If needed, fix permissions:
652
+
653
+ ```bash
654
+ sudo chmod 1777 /tmp
655
+ ```
656
+
657
+ **Problem**: tmux not persisting between WSL sessions
658
+
659
+ **Solution**: WSL may terminate background processes when all terminals are closed. Enable systemd in WSL to keep services running:
660
+
661
+ ```bash
662
+ echo -e "[boot]\nsystemd=true" | sudo tee /etc/wsl.conf
663
+ ```
664
+
665
+ Then restart WSL from PowerShell:
666
+
667
+ ```powershell
668
+ wsl --shutdown
669
+ ```
670
+
671
+ **Problem**: Copy/paste not working in tmux
672
+
673
+ **Solution**: Enable mouse mode and configure clipboard integration. Add to your `~/.tmux.conf`:
674
+
675
+ ```bash
676
+ set -g mouse on
677
+ set -g set-clipboard on
678
+ ```
679
+
680
+ **Problem**: Colors not displaying correctly
681
+
682
+ **Solution**: Ensure your terminal supports 256 colors. Add to your `~/.bashrc`:
683
+
684
+ ```bash
685
+ export TERM=xterm-256color
686
+ ```
687
+
688
+ Then reload:
689
+
690
+ ```bash
691
+ source ~/.bashrc
692
+ ```
693
+
694
+ ---
695
+
696
+ ### Git Bash (MSYS2 Method)
697
+
698
+ #### Prerequisites
699
+
700
+ - Windows 10 or Windows 11 (64-bit)
701
+ - Git for Windows installed (provides Git Bash)
702
+ - MSYS2 installed for obtaining tmux binaries
703
+ - Administrator access
704
+
705
+ **Important**: Git Bash is a minimal MSYS2 environment bundled with Git for Windows. It does not include tmux by default, but you can add tmux by copying binaries from a full MSYS2 installation. tmux only works with the MinTTY terminal (git-bash.exe), not with cmd.exe or PowerShell-based Git prompts.
706
+
707
+ #### Installation Steps
708
+
709
+ **Step 1: Install MSYS2**
710
+
711
+ Download and install MSYS2 from https://www.msys2.org/. Run the installer and complete the setup.
712
+
713
+ **Step 2: Install tmux in MSYS2**
714
+
715
+ Open the MSYS2 MSYS terminal and run:
716
+
717
+ ```bash
718
+ pacman -Sy --noconfirm tmux
719
+ ```
720
+
721
+ The `--noconfirm` flag enables non-interactive installation without prompts.
722
+
723
+ **Step 3: Copy tmux binaries to Git Bash**
724
+
725
+ Copy the tmux executable and required DLLs from MSYS2 to Git for Windows:
726
+
727
+ ```bash
728
+ # Run these commands in MSYS2 terminal
729
+ cp /usr/bin/tmux.exe "/c/Program Files/Git/usr/bin/"
730
+ cp /usr/bin/msys-event*.dll "/c/Program Files/Git/usr/bin/"
731
+ ```
732
+
733
+ Note: If your Git installation is in a different location, adjust the path accordingly.
734
+
735
+ **Step 4: Verify the copy**
736
+
737
+ Close and reopen Git Bash, then run:
738
+
739
+ ```bash
740
+ tmux -V
741
+ ```
742
+
743
+ #### Verification
744
+
745
+ Confirm tmux is accessible in Git Bash:
746
+
747
+ ```bash
748
+ tmux -V
749
+ ```
750
+
751
+ Expected output (version numbers may vary):
752
+
753
+ ```
754
+ tmux 3.6a
755
+ ```
756
+
757
+ Start a tmux session to verify it works:
758
+
759
+ ```bash
760
+ tmux new-session -s test
761
+ ```
762
+
763
+ #### Troubleshooting
764
+
765
+ **Problem**: `open terminal failed: not a terminal` error
766
+
767
+ **Solution**: tmux requires the MinTTY terminal. Launch Git Bash using `git-bash.exe` (the MinTTY-based terminal), not `bash.exe` or Git from cmd/PowerShell. Look for "Git Bash" in the Start Menu.
768
+
769
+ **Problem**: `tmux.exe - System Error: The code execution cannot proceed because msys-event-2-1-7.dll was not found`
770
+
771
+ **Solution**: Copy the missing DLL files from MSYS2. The exact DLL names may vary by version:
772
+
773
+ ```bash
774
+ # In MSYS2 terminal, list event DLLs
775
+ ls /usr/bin/msys-event*.dll
776
+
777
+ # Copy all event DLLs
778
+ cp /usr/bin/msys-event*.dll "/c/Program Files/Git/usr/bin/"
779
+ ```
780
+
781
+ **Problem**: `tmux: command not found` after copying files
782
+
783
+ **Solution**: Ensure you copied to the correct directory and restart Git Bash:
784
+
785
+ ```bash
786
+ # Verify tmux exists
787
+ ls "/c/Program Files/Git/usr/bin/tmux.exe"
788
+ ```
789
+
790
+ If the file exists, close all Git Bash windows and reopen.
791
+
792
+ **Problem**: tmux works but displays incorrectly
793
+
794
+ **Solution**: Set the TERM variable in your `~/.bashrc`:
795
+
796
+ ```bash
797
+ echo 'export TERM=xterm-256color' >> ~/.bashrc
798
+ source ~/.bashrc
799
+ ```
800
+
801
+ **Problem**: Copy/paste not working
802
+
803
+ **Solution**: MinTTY handles copy/paste differently. Use `Ctrl+Insert` to copy and `Shift+Insert` to paste, or enable mouse support in tmux:
804
+
805
+ ```bash
806
+ echo 'set -g mouse on' >> ~/.tmux.conf
807
+ ```
808
+
809
+ ---
810
+
811
+ ## Post-Installation Configuration
812
+
813
+ After installing tmux on any platform, consider these configurations to enhance your workflow.
814
+
815
+ ### Create a Configuration File
816
+
817
+ tmux reads configuration from `~/.tmux.conf`. Create this file to customize tmux behavior:
818
+
819
+ ```bash
820
+ touch ~/.tmux.conf
821
+ ```
822
+
823
+ ### Common Configuration Options
824
+
825
+ Add these settings to `~/.tmux.conf` for a better experience:
826
+
827
+ ```bash
828
+ # Enable mouse support
829
+ set -g mouse on
830
+
831
+ # Set prefix key to Ctrl+a (more ergonomic than default Ctrl+b)
832
+ unbind C-b
833
+ set -g prefix C-a
834
+ bind C-a send-prefix
835
+
836
+ # Start window numbering at 1 (easier to reach)
837
+ set -g base-index 1
838
+ setw -g pane-base-index 1
839
+
840
+ # Enable 256 color support
841
+ set -g default-terminal "screen-256color"
842
+
843
+ # Increase scrollback buffer size
844
+ set -g history-limit 10000
845
+
846
+ # Reduce escape time for faster command sequences
847
+ set -sg escape-time 10
848
+
849
+ # Enable focus events for terminals that support it
850
+ set -g focus-events on
851
+
852
+ # Reload configuration with prefix + r
853
+ bind r source-file ~/.tmux.conf \; display-message "Config reloaded"
854
+ ```
855
+
856
+ ### Reload Configuration
857
+
858
+ After editing `~/.tmux.conf`, reload without restarting tmux:
859
+
860
+ ```bash
861
+ tmux source-file ~/.tmux.conf
862
+ ```
863
+
864
+ Or, if you added the keybinding above, press `prefix + r`.
865
+
866
+ ### Basic tmux Commands
867
+
868
+ Start a new session:
869
+
870
+ ```bash
871
+ tmux new-session -s mysession
872
+ ```
873
+
874
+ List sessions:
875
+
876
+ ```bash
877
+ tmux list-sessions
878
+ ```
879
+
880
+ Attach to an existing session:
881
+
882
+ ```bash
883
+ tmux attach-session -t mysession
884
+ ```
885
+
886
+ Detach from a session (from within tmux):
887
+
888
+ Press `Ctrl+b` then `d`
889
+
890
+ Kill a session:
891
+
892
+ ```bash
893
+ tmux kill-session -t mysession
894
+ ```
895
+
896
+ ---
897
+
898
+ ## Common Issues
899
+
900
+ ### Issue: "no server running on /tmp/tmux-1000/default"
901
+
902
+ **Symptoms**: tmux commands fail with "no server running" error
903
+
904
+ **Solutions**:
905
+
906
+ - Start a new tmux session:
907
+
908
+ ```bash
909
+ tmux new-session
910
+ ```
911
+
912
+ - Check if the tmux socket directory exists and has correct permissions:
913
+
914
+ ```bash
915
+ ls -la /tmp/tmux-$(id -u)
916
+ ```
917
+
918
+ - If permissions are wrong, fix them:
919
+
920
+ ```bash
921
+ chmod 700 /tmp/tmux-$(id -u)
922
+ ```
923
+
924
+ ### Issue: "terminal not suitable" or "open terminal failed"
925
+
926
+ **Symptoms**: tmux refuses to start with terminal-related errors
927
+
928
+ **Solutions**:
929
+
930
+ - Ensure you are running tmux from a proper terminal emulator, not from a script or non-interactive shell
931
+
932
+ - Set the TERM variable:
933
+
934
+ ```bash
935
+ export TERM=xterm-256color
936
+ tmux
937
+ ```
938
+
939
+ - On Windows Git Bash, use MinTTY (git-bash.exe), not cmd.exe or PowerShell
940
+
941
+ ### Issue: Colors not displaying correctly
942
+
943
+ **Symptoms**: tmux shows wrong colors or no colors
944
+
945
+ **Solutions**:
946
+
947
+ - Set 256-color terminal in your shell profile:
948
+
949
+ ```bash
950
+ export TERM=xterm-256color
951
+ ```
952
+
953
+ - Add to `~/.tmux.conf`:
954
+
955
+ ```bash
956
+ set -g default-terminal "screen-256color"
957
+ ```
958
+
959
+ ### Issue: tmux session lost after SSH disconnect
960
+
961
+ **Symptoms**: Cannot reattach to tmux sessions after network interruption
962
+
963
+ **Solutions**:
964
+
965
+ - Ensure you detached properly before disconnecting. If the connection was interrupted, the session should still exist
966
+
967
+ - List existing sessions:
968
+
969
+ ```bash
970
+ tmux list-sessions
971
+ ```
972
+
973
+ - Reattach to the session:
974
+
975
+ ```bash
976
+ tmux attach-session -t 0
977
+ ```
978
+
979
+ - If sessions appear stale, kill and recreate:
980
+
981
+ ```bash
982
+ tmux kill-server
983
+ tmux new-session
984
+ ```
985
+
986
+ ### Issue: Keys not working correctly (especially on macOS)
987
+
988
+ **Symptoms**: Function keys, Home, End, or other special keys not working
989
+
990
+ **Solutions**:
991
+
992
+ - Add to `~/.tmux.conf`:
993
+
994
+ ```bash
995
+ set-window-option -g xterm-keys on
996
+ ```
997
+
998
+ - For macOS Terminal.app, enable "Use Option as Meta key" in Terminal preferences
999
+
1000
+ ### Issue: "sessions should be nested with care" warning
1001
+
1002
+ **Symptoms**: Warning appears when starting tmux inside an existing tmux session
1003
+
1004
+ **Solutions**:
1005
+
1006
+ - This is a safety warning to prevent accidental nesting. If you intentionally want nested sessions, use:
1007
+
1008
+ ```bash
1009
+ tmux new-session -t mysession
1010
+ ```
1011
+
1012
+ - To disable the warning, unset the TMUX variable (not recommended for beginners):
1013
+
1014
+ ```bash
1015
+ unset TMUX
1016
+ tmux
1017
+ ```
1018
+
1019
+ ---
1020
+
1021
+ ## References
1022
+
1023
+ - [tmux Official GitHub Repository](https://github.com/tmux/tmux)
1024
+ - [tmux Official Wiki](https://github.com/tmux/tmux/wiki)
1025
+ - [tmux Installation Guide](https://github.com/tmux/tmux/wiki/Installing)
1026
+ - [tmux Manual Page](https://man7.org/linux/man-pages/man1/tmux.1.html)
1027
+ - [Homebrew tmux Formula](https://formulae.brew.sh/formula/tmux)
1028
+ - [MSYS2 tmux Package](https://packages.msys2.org/packages/tmux)
1029
+ - [Ubuntu tmux Package](https://packages.ubuntu.com/search?keywords=tmux)
1030
+ - [Microsoft WSL Documentation](https://learn.microsoft.com/en-us/windows/wsl/)