Add custom network device icons in Mac OS X Finder?
Solution 1
Seems that I was very close, I just wasn't getting my machine to advertise itself properly.
I finally got it to work:
The method I used is below:
First, on the Mac, I created a custom bundle which I called "ComputerTypes" by copying and pasting an existing bundle such as MobileDevices.bundle or MachineTypes.bundle in the
/System/Library/CoreServices/CoreTypes.bundle/Contents/Library
folder.I then opened
Contents/Info.plist
with XCode Plist Editor and edited all the details to create a custom bundle, changing the Bundle Identifier, Name, etc.I removed all the existing entries in the "UTExportedTypeDeclarations" key then created a new entry per device. Each device entry has a "UTTypeConformsTo", "UTTypeDescription", "UTTypeIconFile", "UTTypeIdentifier" and "UTTagSpecification", where the "UTTagSpecification" dictorinary contains an Array in the key "com.apple.device-model-code" with all of the mDNS _device-info._tcp identifiers to accept. UTTypeIconFile refers to a icns file in the Resources folder.
I then saved the bundle to
/System/Library/CoreServices/CoreTypes.bundle/Contents/Library
folder and rebooted.On the other machine, I needed to set up to advertise a _smb._tcp service as well as the _device-info._tcp TXT record, as usual except using a custom model name rather than a Mac product name.
After rebooting the Mac, it should appear like the picture above.
I uploaded the finished bundle to http://dl.dropbox.com/u/4140005/ComputerTypes.bundle.zip as an example.
Solution 2
This is probably only worthy of being a comment to Adam's answer, but I need formatting.
In Windows, assuming iTunes or Bonjour for Windows is installed, you can advertise a samba share with the following:
- Open two cmd prompts.
-
Run the following commands (in different consoles):
dns-sd -R ComputerName _device-info._tcp local 445 model=Xserve3,1
dns-sd -R ComputerName _smb._tcp local 445
Dns-sd won't exit, and if you Ctrl-C or close cmd, the share will disappear from Finder. I can only manage to use the default OSX icons, despite Adam's helpful sample file (it might be a 10.6 vs. 10.8 issue... there are plist differences between his and 10.8's). Also, I'm having a heck of a time figuring out how to get windows to run this command and shut it down at poweron/poweroff and wake/sleep (though, to shut down dns-sd from a bat script you'd just use taskkill).
Related videos on Youtube
Adam M-W
Updated on September 18, 2022Comments
-
Adam M-W over 1 year
Mac OS X Finder is smug enough to display any non-Mac device as a picture of a PC with a BSOD, but I'm wondering if it's possible to add other devices, so my Ubuntu machine is detected and has a picture of a Ubuntu PC, and my Windows PCs has a picture of Windows crashing, etc.
I know that public.generic-pc.icns exists and can be replaced but I'm not interested in replacing it per se, more interested in getting finder to recognise other devices (or learn how it recognises other Apple devices) and map custom icons to them.
Any clue?
-
Admin over 12 yearsThere needs to be a way to distinguish between the machines, and I don't think samba will purposely behave different from windows to be recognised as such...
-
Admin over 12 yearsAccording to this, you can advertise a server as an Xserve or other device. Looking in CoreType.bundle, I can see that there is a mapping of these names (for example Xserve or RackMac is mapped to com.apple.xserve (.icns) by using the com.apple.device-model-code Equivalent Types. Extending from this, I'd assume that creating a custom one would be adding another entry, but I can't get it to work.
-
Admin over 12 yearsI'd argue this belongs to SO because I don't believe there's any tweak that would allow that without any heavy programming. But then again, I'm just guessing here in hope to shed a light. :P
-
-
HikeMike about 12 yearsVery nice. How'd you accomplish step 5? Samba configuration?
-
Adam M-W about 12 yearsStep 5 is just about setting
avahi-daemon
to advertise a_smb._tcp
service and a_device-info._tcp
txt record. The howto linked above if you scroll down to step 5 should help, except change _afpovertcp to _smb and change to port 445, and change the model to your custom value. -
John O over 11 yearsHas anyone gotten this to work on a windows machine? Is there even a Bonjour implementation on Windows that can do the advertisement?
-
Alex Gittemeier about 11 yearscould you just run the batch as a service?
-
yass about 7 yearsDon't forget the question was asked 5 years ago and the comments are old also, at that time it was fine
-
Tetsujin about 2 years…and another 5 years later, even disabling SIP won't let you change anything on the boot drive. It's now encrypted & hashed.