@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,896 @@
1
+ # Installing Pngyu
2
+
3
+ ## Overview
4
+
5
+ Pngyu is a simple PNG image compression tool that provides a graphical user interface for pngquant, allowing you to batch compress multiple PNG files with drag-and-drop simplicity. It achieves significant file size reduction (often 60-80% smaller) by converting 24-bit/32-bit full-color PNG files to 8-bit indexed color using an excellent color reduction algorithm.
6
+
7
+ Key capabilities include:
8
+
9
+ - **Batch Processing**: Compress multiple PNG files simultaneously with drag-and-drop
10
+ - **Quality Control**: Adjust compression quality and color palette settings
11
+ - **Preview Function**: Review compression results before finalizing
12
+ - **pngquant Engine**: Uses the same compression engine as ImageAlpha and TinyPNG
13
+
14
+ **Important Platform Note**: Pngyu is a GUI application officially available only for macOS and Windows. For Linux distributions (Ubuntu, Raspberry Pi OS, Amazon Linux), WSL, and Git Bash environments, this guide documents the installation of pngquant, the underlying command-line tool that Pngyu wraps. pngquant provides identical compression capabilities through a terminal interface.
15
+
16
+ **Important macOS Compatibility Note**: Pngyu is not compatible with macOS 15 Sequoia and later. On these newer macOS versions, use pngquant (command-line) as the recommended alternative.
17
+
18
+ **Warning**: PNG compression with pngquant is a lossy process involving color reduction. It is impossible to restore the original image after compression. Always backup important files before compressing.
19
+
20
+ ## Dependencies
21
+
22
+ ### macOS (Homebrew)
23
+ - **Required:**
24
+ - `homebrew` - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or `dev install homebrew`
25
+ - **Optional:**
26
+ - `rosetta2` - Install via `softwareupdate --install-rosetta --agree-to-license` (only needed on Apple Silicon Macs for Pngyu GUI on macOS 14 and earlier)
27
+ - **Auto-installed:** None
28
+
29
+ ### Ubuntu (APT/Snap)
30
+ - **Required:** None (APT package manager is built into Ubuntu)
31
+ - **Optional:** None
32
+ - **Auto-installed:** None
33
+
34
+ ### Raspberry Pi OS (APT/Snap)
35
+ - **Required:** None (APT package manager is built into Raspberry Pi OS)
36
+ - **Optional:** None
37
+ - **Auto-installed:** None
38
+
39
+ ### Amazon Linux (DNF/YUM)
40
+ - **Required (for Amazon Linux 2 via EPEL):**
41
+ - `epel` repository - Install via `sudo amazon-linux-extras install epel -y`
42
+ - **Required (for source compilation on Amazon Linux 2023 or when EPEL fails):**
43
+ - `Development Tools` group - Install via `sudo dnf groupinstall -y "Development Tools"` or `sudo yum groupinstall -y "Development Tools"`
44
+ - `libpng-devel` - Install via `sudo dnf install -y libpng-devel` or `sudo yum install -y libpng-devel`
45
+ - `cmake` - Install via `sudo dnf install -y cmake` or `sudo yum install -y cmake`
46
+ - `git` - Install via `sudo dnf install -y git` or `sudo yum install -y git` or `dev install git`
47
+ - `rust/cargo` - Install via `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y` or `dev install rust`
48
+ - **Optional:** None
49
+ - **Auto-installed:** None
50
+
51
+ ### Windows (Chocolatey)
52
+ - **Required:**
53
+ - `chocolatey` - Install via PowerShell: `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'))` or `dev install chocolatey`
54
+ - **Optional:** None
55
+ - **Auto-installed:** None
56
+
57
+ ### Git Bash (Manual/Portable)
58
+ - **Required:**
59
+ - `curl` - Pre-installed with Git for Windows
60
+ - `unzip` or `powershell` - For extracting downloaded archives (unzip may not be included; PowerShell is always available on Windows)
61
+ - **Optional:** None
62
+ - **Auto-installed:** None
63
+
64
+ ## Prerequisites
65
+
66
+ Before installing Pngyu or pngquant on any platform, ensure:
67
+
68
+ 1. **Internet connectivity** - Required to download packages
69
+ 2. **Administrative privileges** - Required for system-wide installation
70
+ 3. **Sufficient disk space** - At least 50 MB for installation with dependencies (up to 100 MB for Amazon Linux source compilation)
71
+
72
+ ## Platform-Specific Installation
73
+
74
+ ### macOS (Homebrew)
75
+
76
+ #### Prerequisites
77
+
78
+ - macOS 10.15 (Catalina) through macOS 14 (Sonoma)
79
+ - Homebrew package manager installed
80
+ - For Apple Silicon Macs: Rosetta 2 installed (Pngyu is Intel-only)
81
+
82
+ **Critical Compatibility Warning**: Pngyu does not work on macOS 15 Sequoia or later. If you are running macOS 15+, skip the Pngyu installation and install pngquant instead (see "Alternative for macOS 15+" section below).
83
+
84
+ If Homebrew is not installed, install it first:
85
+
86
+ ```bash
87
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
88
+ ```
89
+
90
+ For Apple Silicon Macs (M1/M2/M3/M4), install Rosetta 2:
91
+
92
+ ```bash
93
+ softwareupdate --install-rosetta --agree-to-license
94
+ ```
95
+
96
+ #### Installation Steps
97
+
98
+ Run the following command to install Pngyu:
99
+
100
+ ```bash
101
+ brew install --cask --quiet pngyu
102
+ ```
103
+
104
+ The `--quiet` flag suppresses non-essential output for cleaner automation. Pngyu requires Rosetta 2 on Apple Silicon Macs because it is built for Intel architecture.
105
+
106
+ **Alternative for macOS 15+ (Sequoia and later):**
107
+
108
+ Since Pngyu is incompatible with macOS 15 Sequoia, install pngquant directly for command-line PNG compression:
109
+
110
+ ```bash
111
+ brew install --quiet pngquant
112
+ ```
113
+
114
+ #### Verification
115
+
116
+ For Pngyu (macOS 14 and earlier):
117
+
118
+ ```bash
119
+ ls /Applications/Pngyu.app && echo "Pngyu installed successfully"
120
+ ```
121
+
122
+ Expected output:
123
+
124
+ ```
125
+ /Applications/Pngyu.app
126
+ Pngyu installed successfully
127
+ ```
128
+
129
+ For pngquant (all macOS versions):
130
+
131
+ ```bash
132
+ pngquant --version
133
+ ```
134
+
135
+ Expected output (version numbers may vary):
136
+
137
+ ```
138
+ 3.0.3 (January 2024)
139
+ ```
140
+
141
+ #### Troubleshooting
142
+
143
+ **Problem**: `Error: Cask 'pngyu' is unavailable: disabled because it is discontinued upstream`
144
+
145
+ **Solution**: The Pngyu cask has been disabled in Homebrew. Install pngquant instead:
146
+
147
+ ```bash
148
+ brew install --quiet pngquant
149
+ ```
150
+
151
+ **Problem**: Pngyu crashes or fails to launch on macOS 15 Sequoia
152
+
153
+ **Solution**: Pngyu is not compatible with macOS 15. Use pngquant from the command line:
154
+
155
+ ```bash
156
+ brew install --quiet pngquant
157
+ pngquant --quality=80-90 image.png
158
+ ```
159
+
160
+ **Problem**: "Pngyu can't be opened because Apple cannot check it for malicious software"
161
+
162
+ **Solution**: Allow Pngyu in System Settings:
163
+
164
+ 1. Open System Settings > Privacy & Security
165
+ 2. Scroll down to find the message about Pngyu
166
+ 3. Click "Open Anyway"
167
+
168
+ Or via command line:
169
+
170
+ ```bash
171
+ xattr -d com.apple.quarantine /Applications/Pngyu.app
172
+ ```
173
+
174
+ **Problem**: Pngyu is slow on Apple Silicon Mac
175
+
176
+ **Solution**: Pngyu runs through Rosetta 2 translation on Apple Silicon, which adds overhead. For better performance, use native pngquant:
177
+
178
+ ```bash
179
+ brew install --quiet pngquant
180
+ pngquant --quality=80-90 --speed 1 image.png
181
+ ```
182
+
183
+ ---
184
+
185
+ ### Ubuntu/Debian (APT)
186
+
187
+ #### Prerequisites
188
+
189
+ - Ubuntu 20.04 LTS or later, or Debian 11 (Bullseye) or later
190
+ - sudo privileges
191
+ - At least 50 MB free disk space
192
+
193
+ **Note**: Pngyu is not available for Linux. This section installs pngquant, the command-line tool that Pngyu wraps. pngquant provides identical compression capabilities through the terminal.
194
+
195
+ #### Installation Steps
196
+
197
+ Run the following commands to install pngquant:
198
+
199
+ ```bash
200
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
201
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y pngquant
202
+ ```
203
+
204
+ The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully unattended installation without prompts.
205
+
206
+ #### Verification
207
+
208
+ Confirm pngquant installed successfully:
209
+
210
+ ```bash
211
+ pngquant --version
212
+ ```
213
+
214
+ Expected output (version numbers may vary):
215
+
216
+ ```
217
+ 2.17.0 (December 2021)
218
+ ```
219
+
220
+ Test compression on a sample PNG:
221
+
222
+ ```bash
223
+ # Create a test PNG (requires ImageMagick, optional)
224
+ convert -size 100x100 xc:red test.png 2>/dev/null || echo "ImageMagick not installed - use existing PNG"
225
+
226
+ # Compress a PNG file (creates filename-fs8.png or filename-or8.png)
227
+ pngquant --quality=80-90 test.png 2>/dev/null && echo "pngquant working correctly"
228
+ ```
229
+
230
+ #### Troubleshooting
231
+
232
+ **Problem**: `E: Unable to locate package pngquant`
233
+
234
+ **Solution**: Update the package index:
235
+
236
+ ```bash
237
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
238
+ ```
239
+
240
+ **Problem**: pngquant version is outdated (version 1.x)
241
+
242
+ **Solution**: The pngquant website warns against using version 1.0 due to significant quality and compression differences. Check version and compile from source if needed:
243
+
244
+ ```bash
245
+ pngquant --version
246
+ # If version is 1.x, compile from source:
247
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential libpng-dev
248
+ cd /tmp
249
+ git clone --recursive https://github.com/kornelski/pngquant.git
250
+ cd pngquant
251
+ make
252
+ sudo make install
253
+ ```
254
+
255
+ **Problem**: Output file not created
256
+
257
+ **Solution**: By default, pngquant skips files if the output would be larger. Use `--force` to always create output:
258
+
259
+ ```bash
260
+ pngquant --force --quality=80-90 image.png
261
+ ```
262
+
263
+ ---
264
+
265
+ ### Raspberry Pi OS (APT)
266
+
267
+ #### Prerequisites
268
+
269
+ - Raspberry Pi OS (Bookworm or Bullseye), 32-bit or 64-bit
270
+ - Raspberry Pi 3 or later (earlier models have limited performance for image processing)
271
+ - sudo privileges
272
+ - At least 50 MB free disk space
273
+
274
+ **Note on ARM Architecture**: Raspberry Pi OS is Debian-based, and pngquant is available pre-compiled for ARM architecture. No special configuration is required.
275
+
276
+ **Note**: Pngyu is not available for Raspberry Pi. This section installs pngquant, the command-line compression tool.
277
+
278
+ #### Installation Steps
279
+
280
+ Run the following commands to install pngquant:
281
+
282
+ ```bash
283
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
284
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y pngquant
285
+ ```
286
+
287
+ #### Verification
288
+
289
+ Confirm the installation succeeded:
290
+
291
+ ```bash
292
+ pngquant --version
293
+ ```
294
+
295
+ Expected output (version numbers may vary):
296
+
297
+ ```
298
+ 2.17.0 (December 2021)
299
+ ```
300
+
301
+ Test compression:
302
+
303
+ ```bash
304
+ # Compress a PNG (replace with your actual file)
305
+ pngquant --quality=80-90 --output test-compressed.png test.png
306
+ ```
307
+
308
+ #### Troubleshooting
309
+
310
+ **Problem**: Compression is very slow on Raspberry Pi
311
+
312
+ **Solution**: Use higher speed settings (1=slowest/best, 11=fastest):
313
+
314
+ ```bash
315
+ pngquant --speed 10 --quality=80-90 image.png
316
+ ```
317
+
318
+ **Problem**: Out of memory during batch compression
319
+
320
+ **Solution**: Process images one at a time and consider adding swap space:
321
+
322
+ ```bash
323
+ sudo fallocate -l 1G /swapfile
324
+ sudo chmod 600 /swapfile
325
+ sudo mkswap /swapfile
326
+ sudo swapon /swapfile
327
+ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
328
+ ```
329
+
330
+ **Problem**: pngquant version is very old
331
+
332
+ **Solution**: Compile from source for the latest version. Install Rust first (required for pngquant 3.x):
333
+
334
+ ```bash
335
+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
336
+ source ~/.cargo/env
337
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y libpng-dev
338
+ cd /tmp
339
+ git clone --recursive https://github.com/kornelski/pngquant.git
340
+ cd pngquant
341
+ cargo build --release
342
+ sudo cp target/release/pngquant /usr/local/bin/
343
+ ```
344
+
345
+ ---
346
+
347
+ ### Amazon Linux (DNF/YUM)
348
+
349
+ #### Prerequisites
350
+
351
+ - Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
352
+ - sudo privileges
353
+ - At least 100 MB free disk space (includes build dependencies)
354
+
355
+ **Important**: pngquant is not available in standard Amazon Linux repositories. On Amazon Linux 2, you can enable EPEL. On Amazon Linux 2023, EPEL is not fully supported, so compilation from source is required.
356
+
357
+ **Note**: Pngyu is not available for Amazon Linux. This section installs pngquant, the command-line compression tool.
358
+
359
+ #### Installation Steps
360
+
361
+ **For Amazon Linux 2 (using EPEL):**
362
+
363
+ ```bash
364
+ sudo amazon-linux-extras install epel -y
365
+ sudo yum install -y pngquant
366
+ ```
367
+
368
+ **For Amazon Linux 2023 (compile from source):**
369
+
370
+ Since EPEL is not fully supported on AL2023, install build tools and compile from source:
371
+
372
+ **Step 1: Install build dependencies**
373
+
374
+ ```bash
375
+ sudo dnf groupinstall -y "Development Tools"
376
+ sudo dnf install -y libpng-devel cmake git
377
+ ```
378
+
379
+ **Step 2: Install Rust (required for pngquant 3.x)**
380
+
381
+ ```bash
382
+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
383
+ source ~/.cargo/env
384
+ ```
385
+
386
+ **Step 3: Clone and build pngquant**
387
+
388
+ ```bash
389
+ cd /tmp
390
+ git clone --recursive https://github.com/kornelski/pngquant.git
391
+ cd pngquant
392
+ cargo build --release
393
+ sudo cp target/release/pngquant /usr/local/bin/
394
+ cd /tmp && rm -rf pngquant
395
+ ```
396
+
397
+ #### Verification
398
+
399
+ Confirm the installation succeeded:
400
+
401
+ ```bash
402
+ pngquant --version
403
+ ```
404
+
405
+ Expected output (version numbers may vary):
406
+
407
+ ```
408
+ 3.0.3 (January 2024)
409
+ ```
410
+
411
+ Test compression:
412
+
413
+ ```bash
414
+ pngquant --quality=80-90 --output test-compressed.png test.png
415
+ ```
416
+
417
+ #### Troubleshooting
418
+
419
+ **Problem**: `pngquant: command not found` after compilation
420
+
421
+ **Solution**: The installation path is `/usr/local/bin`. Ensure this directory is in your PATH:
422
+
423
+ ```bash
424
+ echo $PATH | grep -q '/usr/local/bin' && echo "PATH OK" || echo "PATH missing /usr/local/bin"
425
+ ```
426
+
427
+ If missing, add it:
428
+
429
+ ```bash
430
+ echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
431
+ source ~/.bashrc
432
+ ```
433
+
434
+ **Problem**: Rust installation fails
435
+
436
+ **Solution**: Verify curl and network access, then try again:
437
+
438
+ ```bash
439
+ curl --version
440
+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
441
+ ```
442
+
443
+ **Problem**: Compilation fails with "libpng not found"
444
+
445
+ **Solution**: Install the libpng development package:
446
+
447
+ ```bash
448
+ sudo dnf install -y libpng-devel
449
+ ```
450
+
451
+ ---
452
+
453
+ ### Windows (Chocolatey)
454
+
455
+ #### Prerequisites
456
+
457
+ - Windows 10 or later (64-bit)
458
+ - Administrator PowerShell or Command Prompt
459
+ - Chocolatey package manager installed
460
+
461
+ If Chocolatey is not installed, install it first by running this command in an Administrator PowerShell:
462
+
463
+ ```powershell
464
+ 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'))
465
+ ```
466
+
467
+ #### Installation Steps
468
+
469
+ Run the following command in an Administrator PowerShell or Command Prompt to install Pngyu:
470
+
471
+ ```powershell
472
+ choco install pngyu -y
473
+ ```
474
+
475
+ The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation.
476
+
477
+ **Alternative**: Install pngquant for command-line usage:
478
+
479
+ ```powershell
480
+ choco install pngquant -y
481
+ ```
482
+
483
+ #### Verification
484
+
485
+ For Pngyu GUI:
486
+
487
+ Open Windows Start menu and search for "Pngyu", or verify the installation path:
488
+
489
+ ```powershell
490
+ Test-Path "$env:ProgramFiles\Pngyu\Pngyu.exe" -or Test-Path "${env:ProgramFiles(x86)}\Pngyu\Pngyu.exe"
491
+ ```
492
+
493
+ For pngquant CLI (open a new terminal first):
494
+
495
+ ```powershell
496
+ pngquant --version
497
+ ```
498
+
499
+ Expected output:
500
+
501
+ ```
502
+ 3.0.3 (January 2024)
503
+ ```
504
+
505
+ #### Troubleshooting
506
+
507
+ **Problem**: `pngquant: The term 'pngquant' is not recognized`
508
+
509
+ **Solution**: Open a new terminal window. Chocolatey updates PATH during installation, but existing terminals do not pick up the change. Alternatively, refresh the environment:
510
+
511
+ ```powershell
512
+ refreshenv
513
+ ```
514
+
515
+ **Problem**: Pngyu does not appear in Start menu
516
+
517
+ **Solution**: Chocolatey may install Pngyu to a different location. Search your system:
518
+
519
+ ```powershell
520
+ Get-ChildItem -Path "C:\ProgramData\chocolatey\lib" -Filter "Pngyu.exe" -Recurse
521
+ ```
522
+
523
+ **Problem**: Windows Defender blocks installation
524
+
525
+ **Solution**: Chocolatey downloads from trusted sources. Add an exception for the Chocolatey directory or temporarily disable real-time protection during installation.
526
+
527
+ **Problem**: Need to use pngquant from command line
528
+
529
+ **Solution**: If you installed Pngyu but need CLI access, install pngquant separately:
530
+
531
+ ```powershell
532
+ choco install pngquant -y
533
+ ```
534
+
535
+ ---
536
+
537
+ ### WSL (Ubuntu)
538
+
539
+ #### Prerequisites
540
+
541
+ - Windows 10 version 2004 or higher, or Windows 11
542
+ - WSL 2 enabled with Ubuntu distribution installed
543
+ - sudo privileges within WSL
544
+
545
+ **Note**: Pngyu is a Windows/macOS GUI application and cannot run in WSL. This section installs pngquant within your WSL Ubuntu environment for command-line PNG compression.
546
+
547
+ #### Installation Steps
548
+
549
+ Open your WSL Ubuntu terminal and run:
550
+
551
+ ```bash
552
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
553
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y pngquant
554
+ ```
555
+
556
+ The installation is identical to native Ubuntu since WSL Ubuntu uses the same package repositories.
557
+
558
+ #### Verification
559
+
560
+ Confirm the installation succeeded:
561
+
562
+ ```bash
563
+ pngquant --version
564
+ ```
565
+
566
+ Expected output:
567
+
568
+ ```
569
+ 2.17.0 (December 2021)
570
+ ```
571
+
572
+ Test compression on a Windows file:
573
+
574
+ ```bash
575
+ # Access a PNG on Windows filesystem
576
+ pngquant --quality=80-90 /mnt/c/Users/YourUsername/Pictures/image.png
577
+ ```
578
+
579
+ #### Troubleshooting
580
+
581
+ **Problem**: Package installation fails with network errors
582
+
583
+ **Solution**: WSL may have DNS issues. Update resolv.conf:
584
+
585
+ ```bash
586
+ echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null
587
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
588
+ ```
589
+
590
+ **Problem**: Cannot find output file after compression
591
+
592
+ **Solution**: pngquant creates output files with `-fs8.png` or `-or8.png` suffix by default. Use `--output` to specify the output filename:
593
+
594
+ ```bash
595
+ pngquant --quality=80-90 --output /mnt/c/Users/YourUsername/Pictures/compressed.png /mnt/c/Users/YourUsername/Pictures/original.png
596
+ ```
597
+
598
+ **Problem**: Compression is slow on files in `/mnt/c/`
599
+
600
+ **Solution**: Files accessed through `/mnt/c/` have slower I/O. Copy to Linux filesystem, compress, then copy back:
601
+
602
+ ```bash
603
+ cp /mnt/c/Users/YourUsername/Pictures/image.png ~/
604
+ pngquant --quality=80-90 --output ~/compressed.png ~/image.png
605
+ cp ~/compressed.png /mnt/c/Users/YourUsername/Pictures/
606
+ ```
607
+
608
+ ---
609
+
610
+ ### Git Bash (Manual/Portable)
611
+
612
+ #### Prerequisites
613
+
614
+ - Windows 10 or later (64-bit)
615
+ - Git Bash installed (comes with Git for Windows)
616
+ - Internet access to download binaries
617
+
618
+ **Note**: Git Bash runs in a MinGW environment on Windows. This guide downloads portable pngquant Windows binaries that work directly in Git Bash.
619
+
620
+ #### Installation Steps
621
+
622
+ **Step 1: Create a directory for the tool**
623
+
624
+ Open Git Bash and run:
625
+
626
+ ```bash
627
+ mkdir -p ~/bin
628
+ ```
629
+
630
+ **Step 2: Download pngquant Windows binary**
631
+
632
+ ```bash
633
+ cd /tmp
634
+ curl -L -o pngquant.zip "https://pngquant.org/pngquant-windows.zip"
635
+ unzip -q pngquant.zip -d /tmp/pngquant-extract
636
+ mv /tmp/pngquant-extract/pngquant.exe ~/bin/
637
+ rm -rf /tmp/pngquant.zip /tmp/pngquant-extract
638
+ ```
639
+
640
+ **Step 3: Add to PATH**
641
+
642
+ ```bash
643
+ echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
644
+ source ~/.bashrc
645
+ ```
646
+
647
+ #### Verification
648
+
649
+ Confirm the installation succeeded:
650
+
651
+ ```bash
652
+ pngquant --version
653
+ ```
654
+
655
+ Expected output:
656
+
657
+ ```
658
+ 3.0.3 (January 2024)
659
+ ```
660
+
661
+ Test with a sample compression:
662
+
663
+ ```bash
664
+ pngquant --quality=80-90 --output ~/test-compressed.png ~/test.png 2>/dev/null && echo "pngquant working"
665
+ ```
666
+
667
+ #### Troubleshooting
668
+
669
+ **Problem**: `pngquant: command not found`
670
+
671
+ **Solution**: Verify PATH includes `~/bin`:
672
+
673
+ ```bash
674
+ echo $PATH | grep -q "$HOME/bin" && echo "PATH OK" || echo "Missing from PATH"
675
+ ```
676
+
677
+ If missing, add it:
678
+
679
+ ```bash
680
+ echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
681
+ source ~/.bashrc
682
+ ```
683
+
684
+ **Problem**: Download fails with certificate errors
685
+
686
+ **Solution**: Update ca-certificates or use the `-k` flag (less secure):
687
+
688
+ ```bash
689
+ curl -L -k -o pngquant.zip "https://pngquant.org/pngquant-windows.zip"
690
+ ```
691
+
692
+ **Problem**: `unzip: command not found`
693
+
694
+ **Solution**: Git Bash may not include unzip. Use PowerShell to extract:
695
+
696
+ ```bash
697
+ powershell -command "Expand-Archive -Path '/tmp/pngquant.zip' -DestinationPath '/tmp/pngquant-extract'"
698
+ ```
699
+
700
+ **Problem**: Path conversion issues with Windows-style paths
701
+
702
+ **Solution**: Use forward slashes and the MSYS_NO_PATHCONV environment variable:
703
+
704
+ ```bash
705
+ MSYS_NO_PATHCONV=1 pngquant "C:/Users/Me/Pictures/image.png"
706
+ ```
707
+
708
+ Or use Unix-style paths:
709
+
710
+ ```bash
711
+ pngquant "/c/Users/Me/Pictures/image.png"
712
+ ```
713
+
714
+ ---
715
+
716
+ ## Post-Installation Configuration
717
+
718
+ After installing Pngyu or pngquant on any platform, consider these optional but useful configurations.
719
+
720
+ ### Using Pngyu GUI (macOS/Windows)
721
+
722
+ 1. Launch Pngyu from Applications (macOS) or Start Menu (Windows)
723
+ 2. Drag and drop PNG files into the "Drop here" area
724
+ 3. Adjust compression settings in Output Options and Compress Options
725
+ 4. Use the preview feature to verify quality before compressing
726
+ 5. Click "Compress Start" to process files
727
+
728
+ ### Basic pngquant Command-Line Usage
729
+
730
+ **Compress a single PNG file:**
731
+
732
+ ```bash
733
+ pngquant --quality=80-90 image.png
734
+ ```
735
+
736
+ This creates `image-fs8.png` (Floyd-Steinberg dithering) or `image-or8.png` (ordered dithering).
737
+
738
+ **Compress with custom output filename:**
739
+
740
+ ```bash
741
+ pngquant --quality=80-90 --output compressed.png image.png
742
+ ```
743
+
744
+ **Compress and overwrite original (use with caution):**
745
+
746
+ ```bash
747
+ pngquant --quality=80-90 --force --ext .png image.png
748
+ ```
749
+
750
+ **Quality settings explained:**
751
+ - `--quality=min-max`: Sets minimum and maximum quality (0-100)
752
+ - Lower minimum = smaller files but potentially visible quality loss
753
+ - Recommended: `--quality=80-90` for web images, `--quality=90-100` for high quality
754
+
755
+ ### Batch Processing
756
+
757
+ **Compress all PNGs in a directory (Linux/macOS/WSL/Git Bash):**
758
+
759
+ ```bash
760
+ find . -name "*.png" -exec pngquant --quality=80-90 --force --ext .png {} \;
761
+ ```
762
+
763
+ **Compress with parallel processing for speed:**
764
+
765
+ ```bash
766
+ find . -name "*.png" -print0 | xargs -0 -P 4 -I {} pngquant --quality=80-90 --force --ext .png {}
767
+ ```
768
+
769
+ ### Creating Shell Aliases
770
+
771
+ Add these to your `~/.bashrc` or `~/.zshrc` for convenience:
772
+
773
+ ```bash
774
+ # Quick PNG compression (web quality)
775
+ alias pngweb='pngquant --quality=80-90 --force --ext .png'
776
+
777
+ # Quick PNG compression (high quality)
778
+ alias pnghq='pngquant --quality=90-100 --force --ext .png'
779
+
780
+ # Compress all PNGs in current directory
781
+ alias pngall='find . -name "*.png" -exec pngquant --quality=80-90 --force --ext .png {} \;'
782
+ ```
783
+
784
+ ---
785
+
786
+ ## Common Issues
787
+
788
+ ### Issue: "File not changed" or No Size Reduction
789
+
790
+ **Symptoms**: pngquant reports the file was skipped or output is same size
791
+
792
+ **Solutions**:
793
+
794
+ - The file may already be optimized or is smaller than 8-bit can represent
795
+ - Use `--force` to always create output even if larger
796
+ - Try lower quality settings:
797
+
798
+ ```bash
799
+ pngquant --quality=60-80 --force image.png
800
+ ```
801
+
802
+ ### Issue: Quality Loss is Too Visible
803
+
804
+ **Symptoms**: Compressed images show noticeable banding or color shifts
805
+
806
+ **Solutions**:
807
+
808
+ - Increase minimum quality setting:
809
+
810
+ ```bash
811
+ pngquant --quality=90-100 image.png
812
+ ```
813
+
814
+ - pngquant compression is lossy and may not be suitable for all images
815
+ - Consider lossless optimization with optipng instead:
816
+
817
+ ```bash
818
+ optipng -o2 image.png # Lossless, smaller size reduction
819
+ ```
820
+
821
+ ### Issue: Output File Has Different Name
822
+
823
+ **Symptoms**: Original file unchanged, new file created with `-fs8.png` suffix
824
+
825
+ **Solutions**:
826
+
827
+ - This is default behavior to prevent accidental data loss
828
+ - To overwrite original file (backup first!):
829
+
830
+ ```bash
831
+ pngquant --force --ext .png image.png
832
+ ```
833
+
834
+ - To specify custom output name:
835
+
836
+ ```bash
837
+ pngquant --output compressed.png image.png
838
+ ```
839
+
840
+ ### Issue: Command Not Found After Installation
841
+
842
+ **Symptoms**: Terminal cannot find pngquant command
843
+
844
+ **Solutions**:
845
+
846
+ - Open a new terminal window to refresh PATH
847
+ - Verify installation location:
848
+
849
+ ```bash
850
+ which pngquant
851
+ type pngquant
852
+ ```
853
+
854
+ - On macOS, ensure Homebrew is in PATH:
855
+
856
+ ```bash
857
+ eval "$(/opt/homebrew/bin/brew shellenv)" # Apple Silicon
858
+ eval "$(/usr/local/bin/brew shellenv)" # Intel
859
+ ```
860
+
861
+ ### Issue: Permission Denied Errors
862
+
863
+ **Symptoms**: Cannot write output file or access source file
864
+
865
+ **Solutions**:
866
+
867
+ - Check file permissions:
868
+
869
+ ```bash
870
+ ls -la image.png
871
+ ```
872
+
873
+ - Ensure you have write access to the directory:
874
+
875
+ ```bash
876
+ chmod 644 image.png
877
+ chmod 755 .
878
+ ```
879
+
880
+ - On Windows, ensure the file is not open in another application
881
+
882
+ ---
883
+
884
+ ## References
885
+
886
+ - [Pngyu Official Website](https://nukesaq88.github.io/Pngyu/)
887
+ - [Pngyu GitHub Repository](https://github.com/nukesaq88/Pngyu)
888
+ - [Pngyu Homebrew Cask](https://formulae.brew.sh/cask/pngyu)
889
+ - [Pngyu Chocolatey Package](https://community.chocolatey.org/packages/pngyu)
890
+ - [pngquant Official Website](https://pngquant.org/)
891
+ - [pngquant GitHub Repository](https://github.com/kornelski/pngquant)
892
+ - [pngquant Installation Guide](https://pngquant.org/install.html)
893
+ - [pngquant Homebrew Formula](https://formulae.brew.sh/formula/pngquant)
894
+ - [pngquant Chocolatey Package](https://community.chocolatey.org/packages/pngquant)
895
+ - [pngquant Ubuntu Package](https://packages.ubuntu.com/search?keywords=pngquant)
896
+ - [PNGpng - Pngyu Alternative for macOS 15 Sequoia](https://i-icc.github.io/png-png/en.html)