Archive for February, 2017

macOS System Preferences Pane Missing Icons

19/02/2017

 

The problem I had a few days ago was about System Preferences. As you can see below, two of the icons are missing. That case is different than missing or hidden items. Here, the items are visibile but their icons are nonexistent. What can be the problem and how can we solve it? A note of importance: you will need an administrator account for the solution.

Missing Icons for Notifications and Accessibility

 

When I search for a solution, many suggestions were about cleaning the cache or rebuilding the preferences plist file. However, none of them solved my problem. I also tried to find what is missing by checking my Time Machine backups. Sometimes having a regular backup cannot help you. That seems to be the unfortunate case but a small change of approach put me on the right track back. Instead of  solving the missing icon problem, I searched for a way to change the icons in System Preferences. A discussion thread enlightened me. There, I learnt the locations where these .prefPane “files” live. It is /System/Library/PreferencePanes. But the much more detailed explanation can be found in Apple Developer Library. As it is stated there, the .prefPane is actually a bundle, like the .app “files”!

prefPane Bundle!

There are familiar folders and files inside Contents. The Mach-O binary is under the MacOS folder. It is the executable file. The icons are all inside the Resources folder. That is the very place we are looking for. The Info.plist file contains the key-value pairs. These pairs define the essential properties to represent and run the corresponding preference pane. 

Info.plist file

Key-value pairs

I opened the Info.plist file with BBEdit. The icon which is shown in the System Preferences is defined by NSPrefPaneIconFile. In my case, it is set to be NotificationsPref.tiff. Looking inside the Resources folder, I see this:

Notifications icon file

The quick look visualization of that tiff file seems problematic. However, there is exactly the same file, NotificationsPref-SLSRTL.tiff. This one is OK. Now I have two options. The first one is, change the value in Info.plist file to NotificationsPref-SLSRTL.tiff. I tried that solution but it did not respond the way I expected. It did not show the icon in System Preferences. The second choice is to copy that file over NotificationsPref.tiff. By this way, I decided to fix the icon file. Actually, that worked.

New NotificationsPref icon file

And here is the result in System Preferences:

Notifications Icon comes back

As you can see, the Notifications icon came back. There is one more corrupted file icon. That is the Accessibility. The bundle name of it is UniversalAccessPref. I located the Info.plist file of it as in the way as Notifications. This time, I edited the file with Xcode. It is much more easier to follow with it.

Accessibility

Frankly, my aim was to do the same procedure for Accessibility. But there exists a new problem: No uncorrupted icon under the Contents folder. So how can I replace the broken one? I searched for a proper icon and decided on the default one. You can choose anyone you like. Mine is this. I downloaded and later saved it under the Resources folder, replacing the broken one.

New Accessibility Icon FileAnd here is the final result:

All Done

 

Advertisements