-
-
Save fabiofl/5873100 to your computer and use it in GitHub Desktop.
sudo find /private/var/folders/ -name com.apple.dock.iconcache -exec rm {} \; |
The part about "it works on my machine" was missing.
The part about "it works on my machine" was missing.
😂 I guess, but there is nothing special about my machine. Have you tried my updated snippets for Zsh?
Seems like the zero bytes Icon?
is more than just filename change for the .icns file though.
To me that's a thing we should know if we're going to say this is a working / repeatable solution.
If we got that, I'd say it's at least an ok solution.
BTW wrt folders, is that what happens there too? An Icon?
file is placed inside the folder and the xattrs are patched in the same way?
Oh I didn't see your naming update.
So yeah, naming is one part but clearly Macos is not copying the icns to the Icon?
file.
So yeah, naming is one part but clearly Macos is not copying the icns to the
Icon?
file.
No, the resulted file is actually bigger in size compared to .icns
, so it’s definitely in a different format. As far as I know those Icon\r
files are date back to the oldest macOS releases, so surely someone figured out how they encoded by now.
For our purposes, however, it's not strictly necessary to know what format it is. I’ve just pre-converted icons that I need by dragging them and copy already encoded versions. Would be nice to be able to skip this step though, yeah.
BTW wrt folders, is that what happens there too? An Icon? file is placed inside the folder and the xattrs are patched in the same way?
I’m not familiar with wrt folders. But it’s the same with ordinary folders, makes no difference whether it’s an app bundle or a folder for macOS whatsoever.
Ah sorry.
WRT = with regard to
it's not strictly necessary to know what format it is. I’ve just pre-converted icons that I need by dragging them and copy already encoded versions. Would be nice to be able to skip this step though, yeah.
Ok so I missed the part where you can't use a icns file. TBH that pretty much defeats the purpose.
However If you can automate away that step maybe you have a workable solution.
Ok so I missed the part where you can't use a icns file. TBH that pretty much defeats the purpose.
Yeah, I guess I should've mentioned that I'm doing this to switch between dark/light variants of the app icon.
I better test to see if the touch method is still working in Catalina! but I hope you figure out why it's broken for you. Please do test more app bundles (if you haven't) because there do seem to be some challenging ones.
FYI tested touch
method in Catalina. (only one bundle tested, but working ok)
(The app bundle that failed on Mojave for me, still fails on Catalina. No big shock there.)
(The app bundle that failed on Mojave for me, still fails on Catalina. No big shock there.)
Interesting...
However If you can automate away that step maybe you have a workable solution.
I'll try to investigate how Icon\r
encoded, but knowing macOS it's probably some arbitrary binary nonsense😁
So are you also seeing these Icon\r
files as zero bytes after dragging? Because that's not really signalling encoding is it?
It signals some undocumented black magic voodoo. That's why I'm basically 100% out on this method.
But good luck!
So are you also seeing these
Icon\r
files as zero bytes after dragging?
No, they have non-zero size for me. Does an icon for the app changes with the dragging method for you when the size of Icon\r
is zero?
It signals some undocumented black magic voodoo. That's why I'm basically 100% out on this method.
I mean it is all undocumented black magic, unfortunately. Why touching an app bundle refreshes cache for example? Why it works for one app, but not for the other? More importantly, how can we sure it won’t break in the next macOS release? At least with Icon\r
method there is some level of confidence it won’t change the behavior between macOS versions simply because it’s part of the filesystem and it’s required to be backwards compatible.
But I see your point of course.
So are you also seeing these
Icon\r
files as zero bytes after dragging?No, they have non-zero size for me. Does an icon for the app changes with the dragging method for you when the size of
Icon\r
is zero?
That's right, but I'm several hours away from the last live test. It's something I can check again in the morning.
"in reality..." Uhmmm.
Tbh in reality all we know is that Finder's internal logic has embedded the icon somewhere. The trouble is, where. We know it's not really in that file Icon\r
because the actual file system doesn't register the file size.
The worst problem here is that neither representation is "in reality". They're both views through different abstraction layers, but it's safe to say only that those icon data bytes went "somewhere". Unfortunately that doesn't give us a thing to stand on.
All completely undocumented. All completely unreliable.
If you can script it somehow and make it reliable, applause for you.
On High Sierra, deleting com.apple.dock.plist
worked for me. However, a couple of native apps stubbornly refused to work. The Notes and Screen Sharing apps still have the default app icon.
Update:
I fixed those apps by removing them from the dock and then re-adding them. It worked after that.
@jasonm23 thanks
sudo rm -rfv /Library/Caches/com.apple.iconservices.store; sudo find /private/var/folders/ \( -name com.apple.dock.iconcache -or -name com.apple.iconservices \) -exec rm -rfv {} \; ; sleep 3;sudo touch /Applications/* ; killall Dock; killall Finder
after that restart your mac.
wahlaaah.. all restore and back to normal
This worked really well! Thank you @zigang93.
sudo rm -rfv /Library/Caches/com.apple.iconservices.store; sudo find /private/var/folders/ \( -name com.apple.dock.iconcache -or -name com.apple.iconservices \) -exec rm -rfv {} \; ; sleep 3;sudo touch /Applications/* ; killall Dock; killall Finder
after that restart your mac.
wahlaaah.. all restore and back to normalThis worked really well! Thank you @zigang93.
Works!
Here for better readable and discovering the shell-snippet again:
sudo rm -rfv /Library/Caches/com.apple.iconservices.store; sudo find /private/var/folders/ \( -name com.apple.dock.iconcache -or -name com.apple.iconservices \) -exec rm -rfv {} \; ; sleep 3;sudo touch /Applications/* ; killall Dock; killall Finder
@jasonm23 @andreiborisov i'm interested in changing icons via cli, doing some more debugging, found these articles:
- https://superuser.com/questions/298785/icon-file-on-os-x-desktop
- https://apple.stackexchange.com/questions/6901/how-can-i-change-a-file-or-folder-icon-using-the-terminal
The first one clarifies the 0 bytes size of Icon\r
: the file is actually stored in the resource fork
and finally this tool looks promising (although i haven't tested it myself) https://github.com/mklement0/fileicon
EDIT: i tried the tool and it works for me on Monterrey, although i still need to rebuild the cache and restart dock:
rm /var/folders/*/*/*/com.apple.dock.iconcache
killall Dock
Yep.
In my opinion it’s much better solution, because: