Skip to content

Instantly share code, notes, and snippets.

@jspiro
Last active March 13, 2026 20:58
Show Gist options
  • Select an option

  • Save jspiro/66a284408d6c6b9f0924b08c272bde62 to your computer and use it in GitHub Desktop.

Select an option

Save jspiro/66a284408d6c6b9f0924b08c272bde62 to your computer and use it in GitHub Desktop.
Extract ICNS icons from Panic's CandyBar

Panic's CandyBar Icon Extractor

CandyBar no longer launches on the macOS Tahoe beta. This script extracts all your ICNS icons from the CandyBar/Pixadex data folder without needing to run the app.

CandyBar Screenshot

CandyBar's Pixadex icon library is at ~/Library/Application Support/CandyBar/.

It reads the Pixadex library database, preserves your folder organization, and pulls the ICNS data out of the macOS resource forks where CandyBar stored them.

Requirements

  • Python 3 (uses only the standard library)
  • Xcode Command Line Tools (optional, for preserving creation dates via SetFile)

Usage

# Preview what would be extracted (safe, no files written)
python3 extract_icons.py

# Extract everything
python3 extract_icons.py --no-dry-run -o ~/Desktop/CandyBar_Icons

# Skip the "My Icons" catchall and Trash folders
python3 extract_icons.py --no-dry-run --skip-my-icons --skip-trash -o ~/Desktop/CandyBar_Icons

# Point at a specific CandyBar data directory
python3 extract_icons.py -i "/path/to/CandyBar" --no-dry-run

The script auto-detects ~/Library/Application Support/CandyBar/ if you don't specify -i.

What it does

  • Parses Pixadex Icon Library.pixadex (NSKeyedArchiver binary plist) for folder names and icon references
  • Reads icon names from each .pxicon metadata file
  • Extracts ICNS data from the Mac resource fork of each .pxicon file
  • Writes .icns files into folders matching your CandyBar library sidebar
  • Preserves original creation and modification timestamps
  • Handles duplicate icon names and nested folders
View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment