icns

Easily create .icns files (Mac Icons) with this Go library or the included CLI.
Log | Files | Refs | LICENSE

DateCommit messageAuthorFiles+-
2026-09-21 10:41appicon: spell a specialised value the way the manifest doesJack Mordaunt3+73-37
2026-09-21 10:30appicon: arrange the oracle the way a shipping icon is arrangedJack Mordaunt2+58-40
2026-09-21 10:26appicon: hold the bundle against actoolJack Mordaunt1+156-0
2026-09-20 19:52appicon: record the compiler crash rather than guard against itJack Mordaunt1+15-0
2026-09-20 19:41appicon: vary a bundle by appearanceJack Mordaunt5+420-17
2026-09-20 19:36docs: describe the macOS 26 icon bundleJack Mordaunt1+33-0
2026-09-20 19:35icnsify: write an icon bundleJack Mordaunt3+45-11
2026-09-20 19:34appicon: write the icon bundle macOS 26 compilesJack Mordaunt3+498-0
2026-09-20 19:24icns: stop warning about ARGB paddingJack Mordaunt2+35-15
2026-09-20 19:04docs: describe reading icons out of binariesJack Mordaunt1+21-0
2026-09-20 19:04icnsify: read icons out of a Windows binaryJack Mordaunt3+96-14
2026-09-20 19:02exe: read the icons a Windows binary carriesJack Mordaunt7+491-0
2026-09-20 18:54docs: describe validationJack Mordaunt1+27-0
2026-09-20 18:54wasm: expose validation to the pageJack Mordaunt1+51-0
2026-09-20 18:54icnsify: check an icon from the command lineJack Mordaunt4+252-1
2026-09-20 18:41icns: report what macOS will make of a fileJack Mordaunt4+496-10
2026-09-20 18:35ico: report what Windows will make of a fileJack Mordaunt2+476-0
2026-09-20 10:47build: separate minting a tag from releasing oneJack Mordaunt1+71-10
2026-09-20 10:32ci: leave the winget job without an ambient tokenJack Mordaunt1+4-0
2026-09-20 10:23ci: pin govulncheck to a releaseJack Mordaunt1+1-1
2026-09-20 10:14ci: pin the actions to commit hashesJack Mordaunt2+16-16
2026-09-19 18:43build: move the release config to goreleaser v2Jack Mordaunt1+3-2
2026-09-19 18:30build: restore the shell extension's out-of-workspace buildJack Mordaunt1+5-3
2026-09-19 18:30build: take the published library in the command modulesJack Mordaunt4+6-13
2026-09-19 17:15ci: follow the winget releaser to its new ownerJack Mordaunt1+1-1
2026-09-18 20:09wasm: expose the converters to a web pageJack Mordaunt3+266-0
2026-09-18 20:09icnsify: write ico filesJack Mordaunt6+271-42
2026-09-18 20:09ico: check the format against Windows itselfJack Mordaunt2+152-1
2026-09-18 20:09ico: add a sibling package for the Windows icon formatJack Mordaunt7+1035-0
2026-09-18 20:09icns: move resampling into an internal packageJack Mordaunt4+123-97
2026-09-18 20:09icns: let registered decoders read the compressed elementsJack Mordaunt3+65-21
2026-09-18 20:09icns: pad compressed colour planes with a trailing byteJack Mordaunt4+55-11
2026-09-18 20:09build: annotate library test failuresJack Mordaunt1+11-1
2026-09-18 20:09build: vet each module where it can buildJack Mordaunt1+17-4
2026-09-18 20:09build: hold the package against iconutil on macOSJack Mordaunt2+180-0
2026-09-18 20:09docs: say how far back decoding reachesJack Mordaunt1+1-1
2026-09-18 20:09icns: decode the indexed colour icon typesJack Mordaunt5+415-3
2026-09-18 20:09icns: decode the ARGB sidebar and toolbar iconsJack Mordaunt5+158-7
2026-09-18 20:09cmd/icnsify: report the build with a version flagJack Mordaunt2+37-3
2026-09-18 20:09icns: sort with the slices packageJack Mordaunt2+14-17
2026-09-18 20:09build: drop the shell extension's out-of-workspace buildJack Mordaunt1+3-5
2026-09-18 20:09all: update x/image and x/netJack Mordaunt6+21-21
2026-09-18 20:09all: require Go 1.27Jack Mordaunt4+4-4
2026-09-18 20:09cmd/preview: move to Gio 0.10Jack Mordaunt7+301-169
2026-09-18 20:09docs: describe per-slot encoding and single icon decodingJack Mordaunt2+45-0
2026-09-18 20:09cmd/icnsify: convert an iconset directoryJack Mordaunt2+71-0
2026-09-18 20:09icns: encode from artwork supplied per slotJack Mordaunt3+367-18
2026-09-18 20:09cmd/shell-extension: decode only the icon it needsJack Mordaunt1+20-5
2026-09-18 20:09icns: decode one icon without decoding the restJack Mordaunt2+135-49
2026-09-18 20:09icns: write a table of contentsJack Mordaunt2+46-18
2026-09-18 20:09icns: write true 16 and 32 pixel iconsJack Mordaunt6+129-9
2026-09-18 20:09icns: let one icon occupy more than one elementJack Mordaunt1+30-61
2026-09-18 20:09icns: decode the legacy colour and mask icon typesJack Mordaunt5+453-58
2026-09-18 20:09icns: size the icon set from the types it will writeJack Mordaunt1+14-16
2026-09-18 20:09build: let dependabot watch every moduleJack Mordaunt1+10-3
2026-09-18 20:09build: test, fuzz and scan every module in CIJack Mordaunt2+140-0
2026-09-18 20:09icns: capture loop variables directly in the encoderJack Mordaunt1+9-8
2026-09-18 20:09icns: build element headers with encoding/binaryJack Mordaunt2+5-21
2026-09-18 20:09icns: take the interpolation function in resizeSquareJack Mordaunt2+4-5
2026-09-18 20:09all: keep doc comments to what the code doesJack Mordaunt6+10-20
2026-09-18 20:09cmd/shell-extension: resample with x/image/drawJack Mordaunt4+32-9
2026-09-18 20:09icns: resample with x/image/draw instead of nfnt/resizeJack Mordaunt9+171-15
2026-09-18 20:09icns: skip resampling when the source is already icon-sizedJack Mordaunt1+13-2
2026-09-17 15:55cmd: record icns v4.0.0 in the command modules' go.sumJack Mordaunt2+4-2
2026-09-17 15:55build: drop the go.work replace now that v4.0.0 is publishedJack Mordaunt3+4-8
2026-09-17 12:14docs: give the GOWORK override as a PowerShell commandJack Mordaunt1+5-1
2026-09-17 12:14all: fold the old master line into the historyJack Mordaunt0+0-0
2026-09-17 11:31docs: name each module when testing the workspaceJack Mordaunt1+7-1
2026-09-17 11:30docs: describe the v4 layout, install paths and release stepsJack Mordaunt1+24-5
2026-09-17 11:30build: ignore compiled binariesJack Mordaunt1+4-2
2026-09-17 01:44cmd/icnsify: fold into the root moduleJack Mordaunt3+0-22
2026-09-17 01:44cmd/icnsify: use the standard flag packageJack Mordaunt3+54-33
2026-09-17 01:44cmd/icnsify: use the os package instead of aferoJack Mordaunt2+3-8
2026-09-17 11:28icns: move the module to v4Jack Mordaunt9+13-10
2026-09-17 01:39build: add a go.work spanning the modulesJack Mordaunt2+11-0
2026-09-17 01:30cmd/icnsify: exit non-zero on failure and detect pipes reliablyJack Mordaunt2+54-38
2026-09-17 01:30cmd/preview: fix save-as extension and icon list resetJack Mordaunt1+2-2
2026-09-17 01:30shell-extension: recover from panics in COM callbacksJack Mordaunt3+54-29
2026-09-17 01:30icns: make tests assert what they claimJack Mordaunt1+45-25
2026-09-17 01:30icns: measure images by their dimensions, not their boundsJack Mordaunt2+5-9
2026-09-17 01:30icns: fall back to a decodable icon in DecodeJack Mordaunt2+32-11
2026-09-17 01:30icns: reject malformed elements in the decoderJack Mordaunt3+191-38
2026-09-17 01:08shell-extension: document build, install modes and diagnosticsJack Mordaunt2+93-0
2026-09-17 01:08shell-extension: test the DLL through raw COM vtablesJack Mordaunt1+402-0
2026-09-17 01:08shell-extension: export COM entry points and registry setupJack Mordaunt2+322-0
2026-09-17 01:08shell-extension: add icns thumbnail provider COM objectJack Mordaunt2+367-0
2026-09-17 01:08shell-extension: add COM primitives for a Go in-process serverJack Mordaunt4+267-0
2024-10-29 04:24go.*: update icns versionJack Mordaunt2+6-6
2024-10-29 04:12icns.Decode{All}: explicitly error on unsupported formatsJack Mordaunt1+6-0
2024-10-29 04:10cmd/icnsify: probe icns prior to decodeJack Mordaunt1+17-0
2024-10-29 04:09cmd/icnsify: use slog instead of logJack Mordaunt1+11-7
2024-10-29 04:08icns.Probe: allow probing for iconsJack Mordaunt1+35-13
2024-10-29 04:07icns.IconDescription: describe each icon (without icon data)Jack Mordaunt1+11-1
2024-10-29 03:22icns.ImageFormat: enumerate expected image formatsJack Mordaunt1+23-0
2024-10-29 02:58cmd/icnsify: use octal for file permissionJack Mordaunt1+1-1
2024-10-29 02:14icns.sizesFrom: omit second index in sliceJack Mordaunt1+1-1
2024-10-29 02:13icns: delete panicf (unused)Jack Mordaunt1+0-4
2024-10-29 02:12icns: remove use of deprecated ioutilJack Mordaunt2+8-10
2023-12-08 03:38docs: update install commandsJack Mordaunt1+2-2
2023-12-08 02:12all: restructure into separate modulesJack Mordaunt8+36-21
2023-12-06 03:16all: separate modules with workspaceJack Mordaunt8+183-71
2023-12-06 03:00cmd/preview: update to latest gioJack Mordaunt3+69-125
2023-12-06 02:52go.mod: bump go version and tidyJack Mordaunt2+8-35
2023-11-29 04:32cmd/preview: update depsJack Mordaunt3+35-66
2023-11-29 04:22goreleaser: use scoop.repository instead of scoop.bucketJack Mordaunt1+5-4
2023-11-29 04:20goreleaser: use brew.repository instead of brew.tapJack Mordaunt1+1-1
2023-11-29 04:10deps: upgrade afero and textJack Mordaunt2+6-445
2023-08-17 07:30ci: change Winget Releaser job to `ubuntu-latest`sitiom1+1-1
2023-08-03 11:42docs: update homebrew tap instructionsJack Mordaunt1+1-1
2023-05-04 03:20cmd/preview: update depsJack Mordaunt2+39-46
2023-05-04 03:20icns: updates depsJack Mordaunt2+11-12
2023-05-04 03:19icns: fix test to include 16 as smallest sizeJack Mordaunt1+3-3
2023-05-04 02:42cmd/preview: fixup module nameJack Mordaunt1+1-1
2023-03-03 00:37docs: add winget install instructionssitiom1+6-0
2023-03-03 00:34ci: add dependabotsitiom1+10-0
2023-03-03 00:32ci: add winget releaser workflowsitiom1+14-0
2023-02-27 05:23docs: [brew] add homebrew tapJack Mordaunt1+7-0
2023-02-27 05:22docs: [scoop] add personal bucketJack Mordaunt1+7-0
2023-02-27 05:08goreleaser: add scoop bucket descriptionJack Mordaunt1+4-0
2023-02-27 04:57goreleaser: add brew tap descriptionJack Mordaunt1+6-0
2023-02-27 03:41goreleaser: produce zip archives for windowsJack Mordaunt1+3-6
2023-02-27 03:24deps: update to Go 1.17Jack Mordaunt1+3-2
2023-02-27 03:22deps: upgrade gio versionJack Mordaunt3+54-458
2023-02-27 02:58deps: upgradeJack Mordaunt2+414-9
2023-02-25 16:06docs: add scoop installation instructionssitiom1+7-0
2023-02-23 07:05Bump golang.org/x/text from 0.3.6 to 0.3.8 in /cmd/previewdependabot[bot]2+17-4
2023-02-23 06:24Bump golang.org/x/text from 0.3.6 to 0.3.8dependabot[bot]2+21-3
2022-04-08 02:59build: release scriptJack Mordaunt1+15-0
2022-04-05 15:14Remove icon type icp4,icp5,icp6Lynwee.Hou1+0-3
2022-03-30 02:44Update the codes about generated icns files. (#10)Lynwee Hou1+29-20
2021-12-22 07:38cmd/preview: decouple preview from icnsJack Mordaunt6+507-130
2021-12-22 06:51Drop pkg/errors in favour of fmt error wrapping (#7)Jacob3+4-7
2021-05-29 13:26fix: sort images largest-firstJack Mordaunt1+12-7
2021-05-29 13:00docs: fix install commandJack Mordaunt1+4-2
2021-05-28 12:16build: migrate to v2Jack Mordaunt5+55-22
2021-05-28 05:54fix: update releaser configurationJack Mordaunt2+30-66
2021-05-07 03:18docs: remove completed todoJack Mordaunt1+0-5
2021-05-06 13:30feat: save as icns with ctrl-s hotkeyJack Mordaunt1+76-15
2021-05-06 12:48docs: screenshotJack Mordaunt1+3-1
2021-05-06 12:47feat(ux): cooporate with 'open with' entry pointJack Mordaunt1+53-15
2021-05-06 10:07docs: showcase preview guiJack Mordaunt2+17-1
2021-05-06 09:43ux: process icon concurrentlyJack Mordaunt1+58-26
2021-05-06 09:19feat(preview): gui for previewing icns icon filesJack Mordaunt5+378-17
2021-05-06 09:18feat(DecodeAll): export func that returns all decoded imagesJack Mordaunt1+43-24
2021-05-06 06:55feat: gui app skeletonJack Mordaunt1+6-0
2021-03-04 09:42coffee!Jack Mordaunt1+13-7
2020-04-13 11:01Mistakenly added unsupported image formats (#3)Andy Williams1+0-2
2020-04-13 10:21Fix parsing of some modern ICNS files (#2)Andy Williams1+18-5
2020-04-12 09:41Chore: Include Go version in mod file.Jack Mordaunt1+2-0
2020-04-12 09:40Fix: Add supported OS type to test.Jack Mordaunt1+1-1
2020-04-12 09:33Doc: Cleanup piping example.Jack Mordaunt2+3-3
2020-04-11 15:36Merge pull request #1 from andydotxyz/patch-1Jack Mordaunt1+4-0
2020-04-11 11:08Add supported icon typesAndy Williams1+4-0
2018-12-31 08:59[+] Create resized images in parallel.Jack Mordaunt2+19-8
2018-11-15 03:27[~] Compile for windows. Ignore 32 bit architectures.Jack Mordaunt1+1-2
2018-11-15 03:17[~] Stay up to date with goreleaser. (fpm was deprecated)Jack Mordaunt1+1-1
2018-11-15 03:05[!] Migrate to go modules.Jack Mordaunt4+19-95
2018-05-24 11:23[~] Added 128*128 size to the size list.Jack Mordaunt1+1-0
2018-02-18 15:22[+] Updated readme examples. Removed deprecated roadmap item.Jack Mordaunt1+6-3
2018-02-18 15:04[+] Encode direction based on input (icns -> png or png|jpg -> icns).Jack Mordaunt1+45-12
2018-02-18 15:00[-] ICNS does not support standard JPEG.Jack Mordaunt3+14-36
2018-02-18 14:44[*] Shorten the function call.Jack Mordaunt1+5-1
2018-02-18 14:43[*] Default to jpeg quality of 100 for best icon quality.Jack Mordaunt1+1-1
2018-02-17 23:19[+] Added errors as sanity checks.Jack Mordaunt1+8-3
2018-02-17 23:19[+] Added test case for icon image with weird size.Jack Mordaunt1+16-13
2018-02-17 22:59[*] Factored out read icons into a type for readability.Jack Mordaunt1+15-11
2018-02-17 22:48[+] Introduced Decoder func with unit test.Jack Mordaunt2+128-0
2018-02-17 22:48[*] Expanded the OsType to associate the types with their sizes.Jack Mordaunt2+39-26
2018-02-14 15:59[*] Targeting the package instead of main.goJack Mordaunt1+1-1
2018-02-14 15:59[+] Added version variable to be filled in by ldflags.Jack Mordaunt1+2-0
2018-02-14 15:55[+] Ignoring dist folders which contain build artifacts (goreleaser).Jack Mordaunt1+3-2
2018-02-14 15:51[*] Corrected author name and email.Jack Mordaunt1+4-4
2018-02-14 15:48[*] Moved .goreleaser.yml to top level directory.Jack Mordaunt2+69-69
2018-02-14 15:31[+] Using goreleaser to release binaries.Jack Mordaunt1+69-0
2018-02-14 15:14[+] Using dep for dependency management.Jack Mordaunt3+97-0
2018-02-14 15:13[-] Removed dependency on a local lib that isn't hosted anyhere yet.Jack Mordaunt2+3-3
2018-02-12 14:26[*] Fixed spacing in usage example.Jack Mordaunt1+17-17
2018-02-12 14:24[*] Typo fix.Jack Mordaunt1+1-1
2018-02-12 14:20Merge branch 'master' of https://github.com/jackmordaunt/icnsJack Mordaunt1+21-0
2018-02-12 14:11Merged in testing branch.Jack Mordaunt11+639-201
2018-02-12 14:05Initial commitJack Mordaunt1+21-0
2018-02-12 13:26[+] Added CLI usage and extra documentation.Jack Mordaunt1+19-2
2018-02-12 13:15[+] Documened the purpose of the lib and the included CLI app.Jack Mordaunt1+9-0
2018-02-12 13:03[*] Moved image to a param to match other encoding APIs.Jack Mordaunt2+13-15
2018-02-12 13:01[*] Exported Encoder fields.Jack Mordaunt1+12-12
2018-02-12 12:17[+] Tests for `encodeImage`.Jack Mordaunt1+92-0
2018-02-12 12:17[*] Pulled `Icon.encodeImage` into a func to make it easier to test.Jack Mordaunt1+15-7
2018-02-11 15:36[+] Added comment on icns types and how to use them.Jack Mordaunt1+9-0
2018-02-11 15:07[+] Moved to fluent API. Image format is now passed to the encoder.Jack Mordaunt1+5-6
2018-02-11 15:05[+] Introduced fluent API and an option for specifying the image format.Jack Mordaunt1+45-20
2018-02-11 14:40[+] Switch on image format to avoid lossy conversion.Jack Mordaunt1+15-6
2018-02-10 16:51[*] Moved `EncodeWithInterpolationFunction` closer to its usage.Jack Mordaunt2+24-27
2018-02-10 16:48[*] Moved Todo to readme.Jack Mordaunt1+0-7
2018-02-10 16:48[+] Added readme.Jack Mordaunt1+44-0
2018-02-10 14:30[+] Add test for `func Encode`.Jack Mordaunt1+74-0
2018-02-10 14:30[*] Added sanity checks.Jack Mordaunt2+8-8
2018-02-09 16:52[*] Typo fix.Jack Mordaunt1+1-1
2018-02-09 16:41[*] Moved declaration closer to its usage.Jack Mordaunt2+3-3
2018-02-09 16:07[*] Merged encoding implementations into a single file.Jack Mordaunt3+132-138
2018-02-09 13:16[*] Changed name to "icnsify".Jack Mordaunt1+1-1
2018-02-09 13:10[*] `getType` returns a boolean instead of panicking.Jack Mordaunt1+17-17
2018-02-09 12:59[*] `sizesFrom` now correctly handles bad sizes gracefully.Jack Mordaunt2+148-2
2018-02-09 12:51[*] Misc fixes.Jack Mordaunt2+27-2
2018-01-30 22:09[+] Add todo regarding image.Decode registration.Jack Mordaunt1+1-0
2018-01-30 21:58[*] Moved cmd to cmd/icns so that go build defaults to the correct name.Jack Mordaunt3+0-0
2018-01-30 16:30[+] Enable unix piping.Jack Mordaunt2+55-24
2018-01-30 16:30[+] More thorough usage message.Jack Mordaunt1+19-0
2018-01-30 12:44[+] Added flag to specify resize algorithm.Jack Mordaunt1+23-5
2018-01-29 18:32[*] Renamed file for clarity.Jack Mordaunt1+0-44
2018-01-29 18:32[*] Clarified documentation.Jack Mordaunt1+2-1
2018-01-29 18:31[*] Renamed file for clarity.Jack Mordaunt1+44-0
2018-01-29 18:30[*] Adjusted Todo's.Jack Mordaunt2+0-4
2018-01-29 18:28[+] Can now configure interpolation function.Jack Mordaunt1+44-0
2018-01-29 18:28[+] Can now configure interpolation function.Jack Mordaunt1+6-5
2018-01-29 18:07[+] Initial.Jack Mordaunt6+333-0