@fredlackey/devutils 0.0.18 → 0.1.0

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