Why don't folder icons sync?

I like to give my folders different icons, but if I do so in a folder that Syncthing is sharing, the other devices end up with an “Icon” file in the folder (visible in Finder) instead of having the icon applied to the folder.

OS specific attributes are not synced.

Technical limitation or design choice? Will it always be that way?

I am not sure, but I think it’s a design choice, as there is no way of representing these things sensibly cross platforms. Perhaps not even ways of reading these OS specific things from Go.

If you include the desktop.ini and copy the ico files you want to use to the other Windows OS, making sure they point to the same location, example C:\Windows\Icons\name-of-icon.ico files, and it should work for you.

Of course, the desktop.ini is a hidden file in every folder of Windows to tell the operating system how to display and customize the viewing of that specific folder.

The problem here is the syntax has changed from different versions of Windows over the years. If your using W7, it will work fine on W7, but XP to W7 most likely not. XP to XP fine, etcetera.

You can manually create your hidden attribute of desktop.ini using notepad file yourself. Assuming this if for Windows 7 English the code would be:


I feel that he is talking about OS X icons which are just extended attributes of the folder.

OS X keeps folder icons in the resource fork of the (hidden) file called “Icon”. Since we don’t handle resource forks, this is simply a zero byte file as far as syncthing is concerned. Whoever though it would be really neat to have the Icon file look like an empty file and have all the relevant data stashed somewhere in the spirit world is probably really happy with their cleverness here.

Supporting resource forks would be a bunch of work, and would only work on OS X. Windows has a similar concept (alternate data streams, or something like that) but doesn’t seem to use it for stupid shit like this. :) Other Unix filesystems generally lack the feature.

Just for comparison sake and as an example of a possible implementation, I believe BitTorrent Sync does support syncing xattrs on OS X and “alt streams” on Windows.

Clients that don’t support or a given “xattrs” (using that term for both OS X and Windows variants), e.g. Linux has a naming convention and Windows FAT32 doesn’t support them, do still keep the data synced in stub files in the .sync directory so they can propagate the changes to other clients.