@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,839 @@
1
+ # Installing Caffeine
2
+
3
+ ## Overview
4
+
5
+ Caffeine is a utility that prevents your computer from going to sleep, activating the screensaver, or dimming the screen. It is invaluable when you need your computer to stay awake during long-running processes like downloads, presentations, video playback, or software builds. Different implementations exist for each operating system, but they all serve the same core purpose: keeping your machine awake on demand.
6
+
7
+ On macOS, Caffeine is a lightweight menu bar application. On Linux, Caffeine is typically a GNOME Shell extension or a system tray indicator. On Windows, Caffeine is a portable utility that simulates keypresses to prevent idle detection.
8
+
9
+ ## Dependencies
10
+
11
+ ### macOS (Homebrew)
12
+ - **Required:**
13
+ - Homebrew - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or run `dev install homebrew`
14
+ - **Optional:** None
15
+ - **Auto-installed:** None
16
+
17
+ ### Ubuntu (APT/Snap)
18
+ - **Required:** None (systemd-inhibit is pre-installed on all systemd-based systems)
19
+ - **Optional:**
20
+ - GNOME Shell - Install via `sudo apt install gnome-shell` (required for gnome-shell-extension-caffeine)
21
+ - gnome-extensions CLI tool - Install via `sudo apt install gnome-shell-extensions` (required to enable the GNOME extension)
22
+ - **Auto-installed:** None
23
+
24
+ ### Raspberry Pi OS (APT/Snap)
25
+ - **Required:** None (xset and systemd-inhibit are pre-installed)
26
+ - **Optional:** None
27
+ - **Auto-installed:** None
28
+
29
+ ### Amazon Linux (DNF/YUM)
30
+ - **Required:** None (systemd-inhibit is pre-installed on all systemd-based systems)
31
+ - **Optional:**
32
+ - GNOME Shell - Install via `sudo dnf install gnome-shell` or `sudo yum install gnome-shell` (required for GNOME extension, if available in repositories)
33
+ - **Auto-installed:** None
34
+
35
+ ### Windows (Chocolatey/winget)
36
+ - **Required:**
37
+ - Chocolatey - Install via PowerShell as Administrator: `Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))`
38
+ - **Optional:** None
39
+ - **Auto-installed:** None
40
+
41
+ ### Git Bash (Manual/Portable)
42
+ - **Required:**
43
+ - Windows Caffeine installation - See Windows section above for installation via Chocolatey or manual download from https://www.zhornsoftware.co.uk/caffeine/
44
+ - **Optional:**
45
+ - Chocolatey - Install via PowerShell as Administrator (enables automated installation from Git Bash)
46
+ - **Auto-installed:** None
47
+
48
+ ## Prerequisites
49
+
50
+ Before installing Caffeine on any platform, ensure:
51
+
52
+ 1. **Internet connectivity** - Required to download the package or installer
53
+ 2. **Administrative privileges** - Required on most platforms for system-wide installation
54
+ 3. **Desktop environment** - Caffeine requires a graphical desktop environment on all platforms (it is not useful on headless servers)
55
+
56
+ ## Platform-Specific Installation
57
+
58
+ ### macOS (Homebrew)
59
+
60
+ #### Prerequisites
61
+
62
+ - macOS 11 (Big Sur) or later
63
+ - Homebrew package manager installed
64
+ - A graphical desktop session (not SSH-only)
65
+
66
+ If Homebrew is not installed, install it first:
67
+
68
+ ```bash
69
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
70
+ ```
71
+
72
+ #### Installation Steps
73
+
74
+ Run the following command to install Caffeine:
75
+
76
+ ```bash
77
+ brew install --cask --quiet caffeine
78
+ ```
79
+
80
+ The `--cask` flag specifies that this is a macOS application (not a command-line formula). The `--quiet` flag suppresses non-essential output, making the command suitable for automation scripts.
81
+
82
+ **Note**: macOS also includes a built-in command-line utility called `caffeinate` that provides similar functionality without requiring any installation. Use `caffeinate` in Terminal to prevent sleep while the command runs, or `caffeinate -d` to prevent display sleep specifically.
83
+
84
+ #### Verification
85
+
86
+ Confirm the installation succeeded by checking that the application exists:
87
+
88
+ ```bash
89
+ ls -la /Applications/Caffeine.app
90
+ ```
91
+
92
+ Expected output:
93
+
94
+ ```
95
+ drwxr-xr-x@ 3 user staff 96 Jan 1 12:00 /Applications/Caffeine.app
96
+ ```
97
+
98
+ Alternatively, launch Caffeine from Spotlight (Cmd+Space, then type "Caffeine") and verify a coffee cup icon appears in the menu bar.
99
+
100
+ #### Troubleshooting
101
+
102
+ **Problem**: `Error: Cask 'caffeine' is unavailable`
103
+
104
+ **Solution**: Update Homebrew to get the latest cask definitions:
105
+
106
+ ```bash
107
+ brew update
108
+ ```
109
+
110
+ **Problem**: Installation requires password but script cannot prompt
111
+
112
+ **Solution**: Homebrew cask installations may require authentication. Pre-authenticate with sudo before running:
113
+
114
+ ```bash
115
+ sudo -v && brew install --cask --quiet caffeine
116
+ ```
117
+
118
+ **Problem**: Caffeine does not appear in menu bar after installation
119
+
120
+ **Solution**: Launch the application manually:
121
+
122
+ ```bash
123
+ open /Applications/Caffeine.app
124
+ ```
125
+
126
+ To make Caffeine start automatically at login, add it to Login Items in System Preferences > Users & Groups > Login Items.
127
+
128
+ **Problem**: macOS Gatekeeper blocks the application
129
+
130
+ **Solution**: Approve the application in System Preferences > Security & Privacy > General, or run:
131
+
132
+ ```bash
133
+ xattr -dr com.apple.quarantine /Applications/Caffeine.app
134
+ ```
135
+
136
+ ---
137
+
138
+ ### Ubuntu/Debian (APT)
139
+
140
+ #### Prerequisites
141
+
142
+ - Ubuntu 20.04 or later, or Debian 10 or later
143
+ - GNOME desktop environment (GNOME Shell)
144
+ - sudo privileges
145
+
146
+ **Note**: The `gnome-shell-extension-caffeine` package is available in the Ubuntu Universe repository for Ubuntu 20.04 (Focal) and earlier. For Ubuntu 22.04+ and Debian 11+, use the command-line alternative `systemd-inhibit` documented below.
147
+
148
+ #### Installation Steps
149
+
150
+ For Ubuntu 20.04 LTS and Debian 10/11 with GNOME:
151
+
152
+ ```bash
153
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y gnome-shell-extension-caffeine
154
+ ```
155
+
156
+ After installation, enable the extension:
157
+
158
+ ```bash
159
+ gnome-extensions enable caffeine@patapon.info
160
+ ```
161
+
162
+ **Note**: You may need to log out and log back in for the extension to appear in the GNOME Shell top bar.
163
+
164
+ **For Ubuntu 22.04+ and newer Debian versions**, the GNOME Shell extension package may not be available or compatible. Use `systemd-inhibit` instead, which is pre-installed on all systemd-based systems:
165
+
166
+ ```bash
167
+ # Prevent sleep indefinitely (press Ctrl+C to stop)
168
+ systemd-inhibit --what=idle:sleep:shutdown sleep infinity
169
+ ```
170
+
171
+ For background usage in scripts:
172
+
173
+ ```bash
174
+ # Run a command while preventing sleep
175
+ systemd-inhibit --what=idle:sleep your-long-running-command
176
+ ```
177
+
178
+ #### Verification
179
+
180
+ For the GNOME extension, verify the extension is installed and enabled:
181
+
182
+ ```bash
183
+ gnome-extensions list | grep caffeine
184
+ ```
185
+
186
+ Expected output:
187
+
188
+ ```
189
+ caffeine@patapon.info
190
+ ```
191
+
192
+ Check extension status:
193
+
194
+ ```bash
195
+ gnome-extensions info caffeine@patapon.info
196
+ ```
197
+
198
+ For `systemd-inhibit`, verify it is available:
199
+
200
+ ```bash
201
+ which systemd-inhibit
202
+ ```
203
+
204
+ Expected output:
205
+
206
+ ```
207
+ /usr/bin/systemd-inhibit
208
+ ```
209
+
210
+ #### Troubleshooting
211
+
212
+ **Problem**: `E: Unable to locate package gnome-shell-extension-caffeine`
213
+
214
+ **Solution**: The package is in the Universe repository (Ubuntu) or main repository (Debian). Enable Universe on Ubuntu:
215
+
216
+ ```bash
217
+ sudo DEBIAN_FRONTEND=noninteractive add-apt-repository -y universe && sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
218
+ ```
219
+
220
+ If the package is still unavailable, your Ubuntu/Debian version may be too new. Use `systemd-inhibit` instead.
221
+
222
+ **Problem**: Extension installed but not visible in GNOME Shell
223
+
224
+ **Solution**: Restart GNOME Shell by logging out and logging back in. On Xorg sessions, you can restart the shell with Alt+F2, then type `r` and press Enter.
225
+
226
+ **Problem**: `gnome-extensions: command not found`
227
+
228
+ **Solution**: Install the GNOME extensions CLI tool:
229
+
230
+ ```bash
231
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y gnome-shell-extensions
232
+ ```
233
+
234
+ **Problem**: Extension does not work after GNOME upgrade
235
+
236
+ **Solution**: The extension may be incompatible with your GNOME Shell version. Check the extension version compatibility:
237
+
238
+ ```bash
239
+ gnome-shell --version
240
+ ```
241
+
242
+ If incompatible, use `systemd-inhibit` as the alternative.
243
+
244
+ ---
245
+
246
+ ### Raspberry Pi OS (APT)
247
+
248
+ #### Prerequisites
249
+
250
+ - Raspberry Pi OS with desktop (not Lite)
251
+ - Raspberry Pi 3B+ or later recommended
252
+ - sudo privileges
253
+
254
+ **Important**: Raspberry Pi OS uses the LXDE or Wayfire desktop environment by default, not GNOME. The GNOME Shell extension will not work. Use command-line alternatives instead.
255
+
256
+ #### Installation Steps
257
+
258
+ Raspberry Pi OS includes `xset` for managing display power settings and `systemd-inhibit` for preventing system sleep. No additional installation is required.
259
+
260
+ To prevent the display from sleeping, run:
261
+
262
+ ```bash
263
+ xset s off -dpms
264
+ ```
265
+
266
+ This command:
267
+ - `s off` - Disables the screensaver
268
+ - `-dpms` - Disables Display Power Management Signaling (prevents monitor sleep)
269
+
270
+ To prevent system sleep while running a long process:
271
+
272
+ ```bash
273
+ systemd-inhibit --what=idle:sleep your-long-running-command
274
+ ```
275
+
276
+ For persistent display-on settings, add the xset command to autostart. Create or edit the autostart file:
277
+
278
+ ```bash
279
+ mkdir -p ~/.config/lxsession/LXDE-pi
280
+ echo "@xset s off -dpms" >> ~/.config/lxsession/LXDE-pi/autostart
281
+ ```
282
+
283
+ #### Verification
284
+
285
+ Verify display power management is disabled:
286
+
287
+ ```bash
288
+ xset q | grep -A2 "DPMS"
289
+ ```
290
+
291
+ Expected output when DPMS is disabled:
292
+
293
+ ```
294
+ DPMS (Energy Star):
295
+ DPMS is Disabled
296
+ ```
297
+
298
+ Verify `systemd-inhibit` is available:
299
+
300
+ ```bash
301
+ which systemd-inhibit
302
+ ```
303
+
304
+ Expected output:
305
+
306
+ ```
307
+ /usr/bin/systemd-inhibit
308
+ ```
309
+
310
+ #### Troubleshooting
311
+
312
+ **Problem**: `xset: unable to open display ""`
313
+
314
+ **Solution**: You are running in a non-graphical session (SSH). The command must be run from the desktop environment. If you need to set this remotely, specify the display:
315
+
316
+ ```bash
317
+ DISPLAY=:0 xset s off -dpms
318
+ ```
319
+
320
+ **Problem**: Screen still blanks after running xset commands
321
+
322
+ **Solution**: Raspberry Pi OS may have additional blanking settings in the desktop preferences. Open Raspberry Pi Configuration > Display and disable "Screen Blanking", or run:
323
+
324
+ ```bash
325
+ sudo raspi-config nonint do_blanking 1
326
+ ```
327
+
328
+ (Note: `1` disables blanking in raspi-config)
329
+
330
+ **Problem**: Settings reset after reboot
331
+
332
+ **Solution**: Ensure the autostart file is correctly configured. Verify the file exists and contains the xset command:
333
+
334
+ ```bash
335
+ cat ~/.config/lxsession/LXDE-pi/autostart
336
+ ```
337
+
338
+ Alternatively, add to `/etc/xdg/lxsession/LXDE-pi/autostart` for system-wide settings (requires sudo).
339
+
340
+ ---
341
+
342
+ ### Amazon Linux (DNF/YUM)
343
+
344
+ #### Prerequisites
345
+
346
+ - Amazon Linux 2023 or Amazon Linux 2
347
+ - Desktop environment installed (Amazon Linux is typically headless by default)
348
+ - sudo privileges
349
+
350
+ **Important**: Amazon Linux is primarily designed for server workloads and does not typically include a desktop environment. If you are running Amazon Linux as a desktop or need to prevent system sleep on a server, use `systemd-inhibit`.
351
+
352
+ #### Installation Steps
353
+
354
+ Amazon Linux includes `systemd-inhibit` by default. No installation is required.
355
+
356
+ To prevent system sleep while running a command:
357
+
358
+ ```bash
359
+ systemd-inhibit --what=idle:sleep:shutdown your-long-running-command
360
+ ```
361
+
362
+ To prevent sleep indefinitely (useful during maintenance):
363
+
364
+ ```bash
365
+ systemd-inhibit --what=idle:sleep:shutdown sleep infinity &
366
+ ```
367
+
368
+ To run in the background and later stop:
369
+
370
+ ```bash
371
+ # Start inhibiting (save the PID)
372
+ systemd-inhibit --what=idle:sleep:shutdown sleep infinity &
373
+ INHIBIT_PID=$!
374
+
375
+ # Your long-running work here...
376
+
377
+ # Stop inhibiting
378
+ kill $INHIBIT_PID
379
+ ```
380
+
381
+ If you have a desktop environment installed (such as GNOME), you can install the GNOME extension:
382
+
383
+ ```bash
384
+ sudo dnf install -y gnome-shell-extension-caffeine 2>/dev/null || echo "GNOME extension not available, use systemd-inhibit"
385
+ ```
386
+
387
+ **Note**: The GNOME extension package may not be available in the default Amazon Linux repositories. Use `systemd-inhibit` as the primary method.
388
+
389
+ #### Verification
390
+
391
+ Verify `systemd-inhibit` is available:
392
+
393
+ ```bash
394
+ which systemd-inhibit
395
+ ```
396
+
397
+ Expected output:
398
+
399
+ ```
400
+ /usr/bin/systemd-inhibit
401
+ ```
402
+
403
+ List current inhibitors:
404
+
405
+ ```bash
406
+ systemd-inhibit --list
407
+ ```
408
+
409
+ This shows all processes currently preventing sleep or shutdown.
410
+
411
+ #### Troubleshooting
412
+
413
+ **Problem**: `systemd-inhibit: command not found`
414
+
415
+ **Solution**: This should not occur on Amazon Linux 2023 or AL2 as systemd is the init system. Verify systemd is running:
416
+
417
+ ```bash
418
+ ps -p 1 -o comm=
419
+ ```
420
+
421
+ Expected output: `systemd`
422
+
423
+ **Problem**: System still sleeps despite inhibitor
424
+
425
+ **Solution**: Check if the inhibitor is active:
426
+
427
+ ```bash
428
+ systemd-inhibit --list
429
+ ```
430
+
431
+ If your inhibitor is not listed, the process may have exited. Use `sleep infinity` to keep the inhibitor running.
432
+
433
+ **Problem**: Need to prevent sleep during EC2 instance maintenance
434
+
435
+ **Solution**: EC2 instances do not have traditional sleep/suspend mechanisms. The instance will remain running unless explicitly stopped. For long-running processes, use `nohup` or `screen`/`tmux` instead:
436
+
437
+ ```bash
438
+ nohup your-long-running-command &
439
+ ```
440
+
441
+ ---
442
+
443
+ ### Windows (Chocolatey)
444
+
445
+ #### Prerequisites
446
+
447
+ - Windows 10 or Windows 11
448
+ - Chocolatey package manager installed
449
+ - Administrator PowerShell or Command Prompt
450
+
451
+ If Chocolatey is not installed, install it first by running this command in an Administrator PowerShell:
452
+
453
+ ```powershell
454
+ Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
455
+ ```
456
+
457
+ #### Installation Steps
458
+
459
+ Run the following command in an Administrator PowerShell or Command Prompt:
460
+
461
+ ```powershell
462
+ choco install caffeine -y
463
+ ```
464
+
465
+ The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation.
466
+
467
+ Caffeine will be installed to `C:\ProgramData\chocolatey\lib\caffeine\tools\` and a shortcut may be created in the Start Menu.
468
+
469
+ #### Verification
470
+
471
+ Confirm the installation succeeded:
472
+
473
+ ```powershell
474
+ choco list --local-only | findstr caffeine
475
+ ```
476
+
477
+ Expected output:
478
+
479
+ ```
480
+ caffeine 1.98.0
481
+ ```
482
+
483
+ Verify the executable exists:
484
+
485
+ ```powershell
486
+ dir "C:\ProgramData\chocolatey\lib\caffeine\tools\caffeine.exe"
487
+ ```
488
+
489
+ Launch Caffeine to verify it works:
490
+
491
+ ```powershell
492
+ Start-Process "C:\ProgramData\chocolatey\lib\caffeine\tools\caffeine.exe"
493
+ ```
494
+
495
+ A coffee cup icon should appear in the system tray.
496
+
497
+ #### Troubleshooting
498
+
499
+ **Problem**: `choco: The term 'choco' is not recognized`
500
+
501
+ **Solution**: Chocolatey is not installed or not in PATH. Close all terminal windows, open a new Administrator PowerShell, and verify Chocolatey is installed:
502
+
503
+ ```powershell
504
+ Get-Command choco
505
+ ```
506
+
507
+ **Problem**: Installation fails with access denied
508
+
509
+ **Solution**: Ensure you are running PowerShell as Administrator. Right-click PowerShell and select "Run as administrator".
510
+
511
+ **Problem**: Caffeine does not appear in system tray after launching
512
+
513
+ **Solution**: The system tray may be hiding the icon. Click the up arrow (^) in the system tray to show hidden icons. To always show the Caffeine icon, right-click the taskbar > Taskbar settings > Select which icons appear on the taskbar.
514
+
515
+ **Problem**: Caffeine does not prevent sleep on corporate/managed computers
516
+
517
+ **Solution**: Group Policy may override Caffeine's ability to prevent sleep. Contact your IT administrator, or use the built-in PowerShell command as an alternative:
518
+
519
+ ```powershell
520
+ # Prevent sleep for 8 hours (28800 seconds)
521
+ powercfg -change -standby-timeout-ac 0
522
+ ```
523
+
524
+ ---
525
+
526
+ ### WSL (Ubuntu)
527
+
528
+ #### Prerequisites
529
+
530
+ - Windows Subsystem for Linux with Ubuntu installed
531
+ - WSL 2 recommended
532
+ - sudo privileges within WSL
533
+
534
+ **Important**: WSL runs in a virtualized Linux environment that does not have direct control over Windows power management. To prevent your Windows host from sleeping, you must use Windows-native tools (see Windows section). WSL tools like `systemd-inhibit` will only affect the WSL environment, not the host.
535
+
536
+ #### Installation Steps
537
+
538
+ If you need to prevent the WSL session itself from timing out or being affected by Windows sleep, install `systemd-inhibit` support:
539
+
540
+ ```bash
541
+ # Ensure systemd is enabled in WSL (WSL 2 only)
542
+ # Check if systemd is running:
543
+ ps -p 1 -o comm=
544
+ ```
545
+
546
+ If the output is `systemd`, you can use `systemd-inhibit`:
547
+
548
+ ```bash
549
+ systemd-inhibit --what=idle:sleep your-long-running-command
550
+ ```
551
+
552
+ If systemd is not running (output is `init`), enable it by creating or editing `/etc/wsl.conf`:
553
+
554
+ ```bash
555
+ sudo tee /etc/wsl.conf > /dev/null << 'EOF'
556
+ [boot]
557
+ systemd=true
558
+ EOF
559
+ ```
560
+
561
+ Then restart WSL from PowerShell:
562
+
563
+ ```powershell
564
+ wsl --shutdown
565
+ ```
566
+
567
+ After restarting WSL, `systemd-inhibit` will be available.
568
+
569
+ **For preventing Windows host sleep from WSL**, call the Windows Caffeine executable:
570
+
571
+ ```bash
572
+ # If Caffeine is installed on Windows via Chocolatey:
573
+ /mnt/c/ProgramData/chocolatey/lib/caffeine/tools/caffeine.exe &
574
+ ```
575
+
576
+ #### Verification
577
+
578
+ Verify systemd is running:
579
+
580
+ ```bash
581
+ ps -p 1 -o comm=
582
+ ```
583
+
584
+ Expected output for systemd-enabled WSL:
585
+
586
+ ```
587
+ systemd
588
+ ```
589
+
590
+ Verify `systemd-inhibit` is available:
591
+
592
+ ```bash
593
+ which systemd-inhibit
594
+ ```
595
+
596
+ Expected output:
597
+
598
+ ```
599
+ /usr/bin/systemd-inhibit
600
+ ```
601
+
602
+ #### Troubleshooting
603
+
604
+ **Problem**: `systemd-inhibit: command not found`
605
+
606
+ **Solution**: Systemd is not enabled in WSL. Follow the steps above to enable systemd in `/etc/wsl.conf` and restart WSL.
607
+
608
+ **Problem**: Windows still sleeps even with WSL inhibitor active
609
+
610
+ **Solution**: WSL inhibitors do not affect the Windows host. Install and run Caffeine on Windows (see Windows section), or use Windows power settings to disable sleep.
611
+
612
+ **Problem**: WSL session terminates when Windows sleeps
613
+
614
+ **Solution**: Configure Windows to never sleep when on AC power:
615
+
616
+ ```powershell
617
+ # Run in Windows PowerShell as Administrator
618
+ powercfg -change -standby-timeout-ac 0
619
+ ```
620
+
621
+ Or install Windows Caffeine and run it before starting long WSL processes.
622
+
623
+ ---
624
+
625
+ ### Git Bash (Windows Installation)
626
+
627
+ #### Prerequisites
628
+
629
+ - Windows 10 or Windows 11
630
+ - Git Bash installed (comes with Git for Windows)
631
+ - Caffeine installed on Windows (see Windows section above)
632
+
633
+ **Note**: Git Bash runs on Windows and does not have its own power management. Use Windows Caffeine, which will be accessible from Git Bash once installed.
634
+
635
+ #### Installation Steps
636
+
637
+ Git Bash inherits the Windows PATH and can access Windows executables. First, install Caffeine on Windows using Chocolatey (from an Administrator Command Prompt or PowerShell):
638
+
639
+ ```bash
640
+ # From Git Bash, call Windows choco.exe
641
+ /c/ProgramData/chocolatey/bin/choco.exe install caffeine -y
642
+ ```
643
+
644
+ Alternatively, download Caffeine manually:
645
+
646
+ ```bash
647
+ # Download Caffeine to a local directory
648
+ curl -L -o ~/caffeine.zip "https://www.zhornsoftware.co.uk/caffeine/caffeine.zip"
649
+
650
+ # Extract (requires unzip or use Windows built-in)
651
+ mkdir -p ~/bin
652
+ unzip -o ~/caffeine.zip -d ~/bin/
653
+
654
+ # The executable is now at ~/bin/caffeine64.exe or ~/bin/caffeine.exe
655
+ ```
656
+
657
+ After installation, you can launch Caffeine from Git Bash:
658
+
659
+ ```bash
660
+ # If installed via Chocolatey:
661
+ /c/ProgramData/chocolatey/lib/caffeine/tools/caffeine.exe &
662
+
663
+ # If downloaded manually:
664
+ ~/bin/caffeine64.exe &
665
+ ```
666
+
667
+ #### Verification
668
+
669
+ Verify Caffeine is accessible from Git Bash:
670
+
671
+ ```bash
672
+ # Check if Chocolatey version exists:
673
+ ls -la /c/ProgramData/chocolatey/lib/caffeine/tools/caffeine.exe
674
+
675
+ # Or check manual download:
676
+ ls -la ~/bin/caffeine*.exe
677
+ ```
678
+
679
+ Launch Caffeine and verify the system tray icon appears:
680
+
681
+ ```bash
682
+ /c/ProgramData/chocolatey/lib/caffeine/tools/caffeine.exe &
683
+ ```
684
+
685
+ #### Troubleshooting
686
+
687
+ **Problem**: `No such file or directory` when launching caffeine.exe
688
+
689
+ **Solution**: Caffeine may not be installed. Install via Chocolatey from an Administrator prompt:
690
+
691
+ ```bash
692
+ # Open Windows Command Prompt as Administrator and run:
693
+ choco install caffeine -y
694
+ ```
695
+
696
+ Then retry from Git Bash.
697
+
698
+ **Problem**: Git Bash cannot find Windows executables
699
+
700
+ **Solution**: Ensure Windows PATH is inherited. Check your Git Bash PATH:
701
+
702
+ ```bash
703
+ echo $PATH | tr ':' '\n' | grep -i windows
704
+ ```
705
+
706
+ If Windows paths are not present, add them to your `~/.bashrc`:
707
+
708
+ ```bash
709
+ echo 'export PATH=$PATH:/c/ProgramData/chocolatey/bin' >> ~/.bashrc
710
+ source ~/.bashrc
711
+ ```
712
+
713
+ **Problem**: Caffeine runs but does not prevent sleep
714
+
715
+ **Solution**: Caffeine must remain running to prevent sleep. Use the `&` to background the process, or launch it from Windows Start Menu for persistent operation. To run at startup, add Caffeine to Windows Startup folder.
716
+
717
+ **Problem**: Want command-line control without GUI
718
+
719
+ **Solution**: Windows Caffeine supports command-line arguments. Run with `-startoff` to start disabled, or specify a timeout:
720
+
721
+ ```bash
722
+ # Start Caffeine but disabled (click icon to enable)
723
+ /c/ProgramData/chocolatey/lib/caffeine/tools/caffeine.exe -startoff &
724
+
725
+ # Run for 2 hours then exit (7200 seconds)
726
+ /c/ProgramData/chocolatey/lib/caffeine/tools/caffeine.exe -exitafter:120 &
727
+ ```
728
+
729
+ ---
730
+
731
+ ## Post-Installation Configuration
732
+
733
+ ### macOS
734
+
735
+ To make Caffeine start automatically at login:
736
+
737
+ 1. Open System Preferences > Users & Groups
738
+ 2. Select your user account
739
+ 3. Click the "Login Items" tab
740
+ 4. Click the "+" button and add `/Applications/Caffeine.app`
741
+
742
+ Alternatively, use the command line:
743
+
744
+ ```bash
745
+ osascript -e 'tell application "System Events" to make login item at end with properties {path:"/Applications/Caffeine.app", hidden:false}'
746
+ ```
747
+
748
+ ### Linux (GNOME Extension)
749
+
750
+ The GNOME Caffeine extension can be configured to automatically activate when certain applications are running (e.g., video players). Access settings via:
751
+
752
+ ```bash
753
+ gnome-extensions prefs caffeine@patapon.info
754
+ ```
755
+
756
+ Or through GNOME Extensions application if installed.
757
+
758
+ ### Windows
759
+
760
+ To make Caffeine start automatically at login:
761
+
762
+ 1. Press Win+R, type `shell:startup`, and press Enter
763
+ 2. Create a shortcut to `C:\ProgramData\chocolatey\lib\caffeine\tools\caffeine.exe` in this folder
764
+
765
+ Or use the command line in an Administrator PowerShell:
766
+
767
+ ```powershell
768
+ $WshShell = New-Object -comObject WScript.Shell
769
+ $Shortcut = $WshShell.CreateShortcut("$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup\Caffeine.lnk")
770
+ $Shortcut.TargetPath = "C:\ProgramData\chocolatey\lib\caffeine\tools\caffeine.exe"
771
+ $Shortcut.Save()
772
+ ```
773
+
774
+ ---
775
+
776
+ ## Common Issues
777
+
778
+ ### Issue: Computer Still Sleeps Despite Caffeine Running
779
+
780
+ **Symptoms**: Caffeine appears to be active, but the computer still enters sleep mode.
781
+
782
+ **Solution**:
783
+ 1. Verify Caffeine is actually running and enabled (check for active/full coffee cup icon)
784
+ 2. On macOS, check System Preferences > Battery > Power Adapter and ensure sleep timer is not overriding Caffeine
785
+ 3. On Windows, check Power Options in Control Panel for conflicting settings
786
+ 4. On Linux, check if another power management service is overriding the inhibitor
787
+
788
+ ### Issue: Caffeine Prevents Sleep Even When Disabled
789
+
790
+ **Symptoms**: After disabling Caffeine, the computer still does not sleep.
791
+
792
+ **Solution**:
793
+ 1. Completely quit/exit Caffeine (not just disable)
794
+ 2. On macOS, use Cmd+Q or right-click the menu bar icon and select "Quit"
795
+ 3. On Windows, right-click the system tray icon and select "Exit"
796
+ 4. On Linux, disable the extension or kill the process: `killall caffeine`
797
+
798
+ ### Issue: Multiple Caffeine-Like Tools Conflicting
799
+
800
+ **Symptoms**: Inconsistent behavior, multiple icons in system tray/menu bar.
801
+
802
+ **Solution**: Use only one sleep-prevention tool at a time. Remove or disable others:
803
+
804
+ ```bash
805
+ # macOS - list running caffeine-like apps
806
+ ps aux | grep -i caffeine
807
+
808
+ # Linux - check active inhibitors
809
+ systemd-inhibit --list
810
+
811
+ # Windows - check system tray for multiple icons
812
+ ```
813
+
814
+ ### Issue: High CPU Usage from Caffeine
815
+
816
+ **Symptoms**: Caffeine process consuming excessive CPU.
817
+
818
+ **Solution**: This is rare but can happen with older versions. Update to the latest version:
819
+
820
+ ```bash
821
+ # macOS
822
+ brew upgrade --cask caffeine
823
+
824
+ # Windows
825
+ choco upgrade caffeine -y
826
+ ```
827
+
828
+ ---
829
+
830
+ ## References
831
+
832
+ - [Caffeine for macOS - Homebrew Formulae](https://formulae.brew.sh/cask/caffeine)
833
+ - [macOS caffeinate command - Apple Developer Documentation](https://developer.apple.com/library/archive/documentation/Darwin/Reference/ManPages/man8/caffeinate.8.html)
834
+ - [GNOME Shell Extension Caffeine](https://extensions.gnome.org/extension/517/caffeine/)
835
+ - [GNOME Shell Extension Caffeine - GitHub](https://github.com/eonpatapon/gnome-shell-extension-caffeine)
836
+ - [systemd-inhibit Manual Page](https://www.freedesktop.org/software/systemd/man/latest/systemd-inhibit.html)
837
+ - [Caffeine for Windows - Zhorn Software](https://www.zhornsoftware.co.uk/caffeine/)
838
+ - [Caffeine for Windows - Chocolatey Package](https://community.chocolatey.org/packages/caffeine)
839
+ - [Raspberry Pi Display Power Management](https://www.raspberrypi.com/documentation/computers/configuration.html)