macOS CLI for managing custom icons for files and folders
Contents
fileiconis a macOS CLI for managing custom icons for files and folders, as a programmatic alternative to interactively using Finder.
fileiconallows assigning a custom icon to any file or folder, using any image file whose format is recognized by the system.
Caveat: Custom icons rely on extended attributes of the macOS filesystems, HFS+ and APFS. Therefore, custom icons are lost when copying files or folders to filesystems that don't support these attributes; for instance, custom icons cannot be stored in a Git repository.
When assigning an image file with
fileicon set, a set of icons in several resolutions is created and stored in the resource fork of the target file itself / of a hidden
Icon\rfile inside the target folder.
The icon with the highest resolution measures 512 x 512 pixels, and the input
image is scaled accordingly.
Note that input images that aren't square can result in distorted icons;
for best results, provide square images.
# Assign custom icon derived from image file 'img.png' to file 'foo': fileicon set foo img.pngRemove previously assigned custom icon from folder 'foodir':
fileicon rm foodir
Extract custom icon from file 'foo' to icon file 'foo.icns':
fileicon get foo
Test if folder 'foodir' has custom icon:
fileicon test foodir
Supported platforms:
With Homebrew installed, run the following:
brew install fileicon
Tip of the hat to @danielbayley for creating and submitting the formula.
With Node.js installed, install the package as follows:
[sudo] npm install fileicon -g
Note:
sudodepends on how you installed Node.js and whether you've changed permissions later; if you get an
EACCESerror, try again with
sudo.
-gensures global installation and is needed to put
fileiconin your system's
$PATH.
fileicon.
chmod +x fileicon.
$PATH, such as
/usr/local/bin(requires
sudo).
Find concise usage information below; for complete documentation, read the manual online, or, once installed, run
man fileicon(
fileicon --manif installed manually).
$ fileicon --help Manage custom icons for files and folders on macOS. SET a custom icon for a file or folder: fileicon set [] REMOVE a custom icon from a file or folder: fileicon rm GET a file or folder's custom icon: fileicon get [-f] [] -f ... force replacement of existing output file TEST if a file or folder has a custom icon: fileicon test All forms: option -q silences status output. Standard options: --help, --man, --version, --home
Copyright (c) 2015-2019 Michael Klement [email protected] (http://same2u.net), released under the MIT license.
This project gratefully depends on the following open-source components, according to the terms of their respective licenses.
npm dependencies below have optional suffixes denoting the type of dependency; the absence of a suffix denotes a required run-time dependency:
(D)denotes a development-time-only dependency,
(O)an optional dependency, and
(P)a peer dependency.
Versioning complies with semantic versioning (semver).
v0.2.4 (2019-12-10):
v0.2.3 (2019-11-01):
README.mdupdated with Homebrew installation instructions.
v0.2.2 (2018-03-05):
filecon setis now short for
filecon set; that is, you can now more conveniently make an image file use itself as its icon.
v0.2.1 (2018-01-13):
) in lieu of an actual image file, which is not supported.
v0.2.0 (2017-10-14):
sips -ifor icon creation to a Python-based Cocoa call to
NSWorkSpace.setIcon(_:forFile:options:), courtesy of https://apple.stackexchange.com/a/161984/28668 As a result, icons in multiple resolutions are now generated, with a top resolution of 512 x 512 pixels (previously: 128 x 128)
README.md.
v0.1.8 (2016-04-21):
TODO.mdadded.
v0.1.7 (2016-04-21):
v0.1.6 (2015-09-16):
v0.1.5 (2015-09-15):
v0.1.4 (2015-09-14):
fileicon --manon a system where the man page isn't installed.
v0.1.3 (2015-09-02):
v0.1.2 (2015-08-04):
v0.1.1 (2015-08-03):
v0.1.0 (2015-08-03):