Customising folders in Tahoe
macOS 26 Tahoe has many smaller enhancements to make life easier. Among them is a novel way of customising folder icons, as explained here.
Traditional custom folder icons
One of the most ancient features in macOS is adding a different icon to a file or folder, by pasting it into the top left of the Get Info dialog for that item. I have detailed how to do that, and how it works, in this article. While that still works, it has some significant limitations and is fiddly.
Another disappointing behaviour in previous macOS is the effect of adding coloured Finder tags to folders, which don’t change the colour of the folder as displayed.
Tahoe custom folders
macOS 26 changes the behaviour of folder icons in three ways:
- Default folder colour is now set in Appearance settings. In most cases, that will be left to use the Theme colour.
- Applying a coloured Finder tag to a folder now changes the colour of that folder, as well as displaying a coloured dot.
- Folders can be customised additionally using the Customise Folder… command in the Finder’s File or contextual menu.
The last of those merits further attention, and an explanation of how it works.
Customising folders
Rather than adding an arbitrary icon to a folder, Tahoe’s custom folders consist of a traditional folder icon with a symbol or emoji superimposed. These are selected from a wide range of vector graphic symbols drawn from Apple’s huge SF Symbols collection, or the standard range of Unicode emoji.
Symbols appear embossed with little difference in tone, so aren’t easy to distinguish unless the folder icon is quite large. This isn’t suitable for use in the Finder’s Column or List views.
The familiar range of emoji is usually clearer and readily distinguishable in most sizes.
Adding a coloured Finder tag to a customised folder makes it even more distinctive, and increases colour contrast with the emoji.
Not only does this look good, but it solves the problems associated with old-style custom folder icons. Copy that folder anywhere within your Mac, and its new look goes with it. Move it into iCloud Drive, and it goes there too. Although Macs and devices running older versions don’t show the custom folder in its full glory, those running OS 26 do. Yes, open Files on your iPhone and you’ll see the custom icon there too.
The only shortcoming that I can find is that, while you can search for specific Finder tags in Spotlight, you can’t search for the symbol or emoji displayed on the folder icon. There is a search attribute Custom Icon, but these folders aren’t considered to have that attribute.
How it works
Tahoe’s custom folders rely on a combination of two extended attributes (xattrs) attached to the folder:
- com.apple.FinderInfo, 32 bytes that is also used in other Finder settings;
- com.apple.icon.folder, new to Tahoe and containing details of the symbol or emoji to be displayed.
Both have to be attached to the folder for it to be displayed correctly.
com.apple.icon.folder is of particular interest, as it has an S flag, and is itself usually displayed as com.apple.icon.folder#S. The S tells macOS that xattr should be preserved during syncing with services such as iCloud Drive. A full list of xattr flags is given in the Appendix. This xattr contains a Unicode string such as{"emoji":"🔍"}
for an emoji, or{"sym":"person.crop.circle")
for one of the vector graphics in SF Symbols. The first is self-explanatory, while the second uses the name of that symbol in the SF Symbols library. This currently only supports a subset of the whole library, and my attempts to get it to use others from SF Symbols have so far failed.
Conclusion
macOS has succeeded because of its attention to detail. Tahoe’s new custom folders are an excellent example. Enjoy them!
Appendix: Xattr flags
Flags can be upper or lower case letters C, N, P, S or B, and invariably follow the # separator, which is presumably otherwise forbidden from use in a xattr’s name. Upper case sets or enables that property, while lower case clears or disables that property. There are currently five properties:
- C:
XATTR_FLAG_CONTENT_DEPENDENT
, which ties the flag and the file contents, so the xattr is rewritten when the file data changes. This is normally used for checksums and hashes, text encoding, and position information. The xattr is preserved for copy and share, but not in a safe save. - P:
XATTR_FLAG_NO_EXPORT
, which doesn’t export or share the xattr, but normally preserves it during copying. - N:
XATTR_FLAG_NEVER_PRESERVE
, which ensures the xattr is never copied, even when copying the file. - S:
XATTR_FLAG_SYNCABLE
, which ensures the xattr is preserved during syncing with services such as iCloud Drive. Default behaviour is for xattrs to be stripped during syncing, to minimise the amount of data to be transferred, but this will override that. - B:
XATTR_FLAG_ONLY_BACKUP
, which keeps the xattr only in backups, including Time Machine (added recently).
These operate within another general restriction of xattrs: their name cannot exceed a maximum of 127 UTF-8 characters.