Decant: Liquid Glass icons reverse engineered

memalign1 pts0 comments

GitHub - kylebshr/decant: Liquid Glass icons, decanted for your enjoyment · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

kylebshr

decant

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star<br>21

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>3 Commits<br>3 Commits

.gitignore

.gitignore

README.md

README.md

build-icon.py

build-icon.py

decant

decant

icon-extract.m

icon-extract.m

View all files

Repository files navigation

decant

Decant reverse-engineers Apple's "Liquid Glass" app icons (the iOS/macOS 26+ .icon format) back into an editable .icon bundle you can open in Icon Composer — pouring a sealed, compiled icon back out into editable source. It reads the compiled icon straight out of an installed iOS simulator runtime (or a mounted IPSW) using the private CoreUI framework, recovers every layer (vector SVG / raster PNG) and its full material treatment — blend mode, opacity, translucency, specular, shadow, blur, refraction, glass, per-appearance (light/dark/tinted) fills, layer transforms, and the canvas background — then reassembles a faithful icon.json + Assets/ folder. Every export is verified by re-compiling it with actool.

It was built by reverse-engineering and then round-trip–calibrated : for each property the rebuilt icon is recompiled and re-extracted, and the values are diffed against Apple's original until they match exactly.

Quick start

git clone https://github.com/kylebshr/decant<br>cd decant<br>./decant # export ALL runtime icons → ./icons/<br>./decant --list # list every extractable icon in your iOS runtime<br>./decant Maps # just one → ./Maps.icon, then: open Maps.icon

The runtime location is discovered automatically — you only need an iOS 26+ simulator installed in the standard place (Xcode › Settings › Components). The extractor binary is compiled on first run.

Simulator or IPSW?

By default decant reads icons out of your installed iOS simulator runtime , which is the easy path and all you need for the great majority of system apps (Maps, Photos, Safari, Settings, Weather, …). No download, no mounting.

But Apple thins a handful of apps out of the simulator — their icons simply aren't in the runtime. The notable ones are App Store and Podcasts , plus some others that ship only on device. For those, the icon lives in an IPSW (the device restore image) instead. Point decant at a mounted IPSW with --root to pull them — and in fact to export everything a real device ships, including apps the simulator omits.

So: reach for an IPSW when you want an app the simulator doesn't have (App Store, Podcasts, …) or a complete device-accurate set; otherwise the simulator path is simpler and faster.

Extracting from an IPSW

Mount the IPSW's filesystem with blacktop's ipsw tool (brew install blacktop/tap/ipsw), which decrypts it and keeps it mounted while it runs:

ipsw mount fs MyDevice_27.0_Restore.ipsw # prints a /tmp/NNN.dmg.mount path; leave running

Then in another shell, point decant at that mountpoint:

./decant --root /tmp/NNN.dmg.mount --list # list every app in the image<br>./decant --root /tmp/NNN.dmg.mount AppStore # one icon → ./AppStore.icon<br>./decant --root /tmp/NNN.dmg.mount # export ALL → ./icons/

Press Ctrl-C on the ipsw mount when you're done to unmount. --root takes any mounted iOS filesystem; decant looks in private/var/staged_system_apps, System/Applications, and Applications.

Usage

[Stack] [out.icon] [--preview]<br>./decant --root … # source from a mounted IPSW (see above)">./decant # export ALL → ./icons<br>./decant --all [outdir] # export ALL → outdir<br>./decant --list # list available icons + stack names<br>./decant [Stack] [out.icon] [--preview]<br>./decant --root … # source from a mounted IPSW (see above)

AppName is a system app by name (Maps, Photos, Safari, Settings, …), resolved automatically inside the newest installed iOS simulator runtime; common friendly names are aliased to their real bundles (Safari→MobileSafari, Settings→Preferences, Messages→MobileSMS, Calendar→MobileCal, Wallet→Passbook), and --list shows the exact...

decant icon ipsw icons simulator runtime

Related Articles