A macOS app that assigns custom icons to external volumes — and remembers them across unmounts, reformats, and remounts.
Main window — sidebar lists mounted and remembered volumes, detail pane holds the drop zone and actions
Permission prompt — on macOS 13+, the first apply asks for Removable Volumes access; click Allow
Applied state — current icon fills the canvas, ready to reset or replace
Finder — custom icons persist on the volume, visible anywhere macOS shows drive icons
Remembered group — unmounted drives keep their assignment for silent re-apply on remount
- Apply custom icons from PNG, JPEG, HEIC, or
.icnsfiles via drag-and-drop or click-to-browse - Remember every assignment in a local database keyed by volume UUID
- Silent re-apply — plug a known drive back in and Sigil writes its icon back within 1–3 seconds, no clicks required
- Conflict detection — if the volume's icon changed outside Sigil, Sigil asks rather than clobbering
- Per-volume notes — tag what each drive is for; notes show in the Remembered group even when unplugged
- Reset — one click returns a volume to its default Finder icon
- Forget — one click removes Sigil's record of a volume entirely
macOS Finder stores a custom volume icon as a hidden .VolumeIcon.icns file on the volume itself. Reformat the drive and the icon's gone. Use it on another Mac and the icon's gone. Plug in a new drive and you get the generic silver icon forever. Sigil fixes all three by keeping the (UUID → icon) mapping locally and re-applying on remount.
- Download
Sigil-1.0.1.dmgfrom Releases - Open the DMG and drag Sigil to Applications
- Launch from Applications folder
The DMG is notarized by Apple — no Gatekeeper warning on first launch.
- Plug in an external volume
- Select it in the Mounted sidebar
- Drop or click an image onto the canvas
- Apply — the Finder icon updates within a second
Once applied, the assignment is remembered. Eject and replug the drive anytime — Sigil re-applies silently.
| Shortcut | Action |
|---|---|
| ⌘S | Apply |
| ⌘W | Close window |
| ⌘Q | Quit |
Every apply is a direct three-step write to the volume root:
- Write the rendered
.icnsto/Volumes/<Drive>/.VolumeIcon.icnsatomically - Set byte 8 of
com.apple.FinderInfoto0x04(thekHasCustomIconflag) viasetxattr(2) - Bump the volume's mtime with
utimesso Finder refreshes its icon cache
This bypasses NSWorkspace.setIcon(_:forFile:options:), which silently fails on volume roots since macOS 13.1. The .icns itself is generated by iconutil -c icns from a 10-file .iconset rendered at 16/32/128/256/512pt @1x and @2x.
Sigil stores:
~/Library/Application Support/Sigil/volumes.json— UUID, name, note, hash, timestamps, plus a rolling.bak~/Library/Application Support/Sigil/icons/{uuid}.icns— cached rendered icon for silent re-apply~/Library/Application Support/Sigil/icons/{uuid}.src.{ext}— cached source so the icon can be re-rendered without re-picking the file
Sigil does not run in the background. The mount watcher only operates while the app is open. If a drive is plugged in while Sigil is closed, its icon re-applies next time you open Sigil.
- macOS 14.0 (Sonoma) or later
- External volumes (USB, Thunderbolt, SD, or mounted disk image)
Requires Xcode 16+ and macOS 14.0+.
git clone https://github.com/Xpycode/Sigil.git
cd Sigil/01_Project
xcodebuild -scheme Sigil -configuration Release- SF Symbol / emoji icons
- iCloud sync
- Sparkle auto-update
- Mac App Store distribution
- Background process / launch at login
Open an issue with the output of:
log show --predicate 'subsystem == "com.lucesumbrarum.sigil"' --last 1h