macOS

Edit Hardcoded Finder Menus

Intro

Finder has many contextual menu options, some only show for folders, others only show when you have more than one item selected, etc. Unfortunately there is no option to remove or edit these menu entries under System Preferences, as they are "hardcoded" into Finder.

But this doesn't mean you can't modify them! Don't attempt this this little hack unless you know what you are doing, this is not a tip for the average Mac user. MAKE BACKUPS! You've been warned!

Original Menus

Anyway, these are Finder's original contextual menus (for El Capitan).

menu dirty

Modded Menus

After removing a lot of useless and redundant things this are the "new" menus.

menu clean

Below is a list of options I've removed from Finder's file and desktop context menus, and the reason I did it.

  • Open [ Same as CMD + O or double click ]
  • Move To Trash [ Same as Drag to Trash, or CMD + DELETE ]
  • Rename [ Same as Enter\Return ]
  • Burn to Disc [ I use Toast for burning ]
  • Duplicate [ Same as OPTION + Drag ]
  • Make Alias [ Same as OPTION + CMD + Drag. And I use ln more often ]
  • Quick Look [ Same as Space Bar with item selected ]
  • Copy [ Same as CMD + C ]
  • Clean Up Selection [ I never use this, I do my own cleaning! But left one just in case. ]
  • Show View Options [ Same as CMD + J (removed from file and desktop menus) ]
  • Compress X Item [ Changed to "Deflate .zip" to match my .7z and .tar.gz services ]
  • Change Desktop Background... [ Changed to something shorter, as this very_long_long_useless_phrase was widening the menu. So I've changed to "Background..." ]

Modding the Menu

First things first, if you are using El Capitan or any newer macOS you need to disable SIP or you won't be able to edit the files that need to be edited, I am guessing you know how to do that.

We'll use Terminal.app and any decent text editor. I'll use Sublime.

The trick is done by neutering (erasing) the desired values for some entries inside the .string file. This .string localization file resides inside the Finder.app. You have to edit the one inside the folder of the language you are using as display language.

For instance if your display language is French, you have to edit the .strings file that is inside the French.lproj folder (instead of English.lproj).

(1) Make the Backup!

Open Terminal and cd into the directory where the strings file for your language is located:

cd /System/Library/CoreServices/Finder.app/Contents/Resources/English.lproj/

The file we want to edit is called Localizable.strings.

We need to make a backup of this file:

sudo cp Localizable.strings Localizable.strings.bkp

(2) Convert from Binary to XML

If you wish you can edit the file as binary, without converting by using either PListEdit Pro or plist Editor. We'll convert and use Sublime. Don't use TextEdit.app!

Now convert the file from binary to xml so is editable by any (decent) text editor:

sudo plutil -convert xml1 Localizable.strings

(3) Open the File as Root

You can open the file as root using your favorite editor if you invoke the binary of the app directly, like this:

sudo /Application/Sublime.app/Contents/MacOS/Sublime\ Text

or

sudo /Applications/PlistEdit\ Pro.app/Contents/MacOS/PlistEdit\ Pro

Then open the Localizable.strings file as you normally would, with File > Open. You can use the regular CMD + SHIFT + G to reach the file's path in the open dialog, and CMD + S to save it too (root is the owner of both, the file and the editor's process).

(4) Editing the .strings File

This can be tricky as names for stuff we want to remove can occur more than once. So my advise is to make one change at a time and check the results by reloading finder. Also do not delete the entire key just it's strong value. If the key is missing the system will display the key's name instead, like BN50_V1.

To be extra sure of what I am doing instead of removing the name right away I usually add something to the name to identify it in the GUI.

For example if I want to remove the option Show View Options I change that to Show View Options MEH and reload Finder. If the option I want to remove is changed in the GUI then that entry is the one that has to go, if not I revert back to it's original value and try the next occurrence.

Here are some portions of that file's XML. We'll use the entry Burn to Disc… as an example and remove it.

Before Editing:
<key>BN50_V1</key>
<string>Burn to Disc…</string>
<key>BN50_V2</key>
<string>Burn “^1” to Disc…</string>
After Editing:
<key>BN50_V1</key>
<string></string>
<key>BN50_V2</key>
<string></string>

I've used this particular key as an example because it has a fallback. In the absence of the BN50_V1 string it displays the BN50_V2 one, so I had remove both of them. Some other keys will have a fallback too, and you'll have to trial and error this through.

Additionally you can edit things too. One thing that always bugged me is the template name for a new folder. The name untitled folder is not cool at all! So I've changed that one too.

Before Editing:
<key>N2</key>
<string>untitled folder</string>
After Editing:
<key>N2</key>
<string>Folder</string>

(5) Reloading Finder.app

As advised before, after each change reload Finder and check the results. To reload Finder issue this command:

killall -HUP Finder

(6) Convert Back to Binary

The system will process the file faster when is in binary format, so once you're satisfied with the changes convert the file back.

sudo plutil -convert binary1 Localizable.strings

Undo the Hack

Keep in mind that your original backup file is inside Finder itself, as we issued the cp command while in that directory.

If you need to revert back just copy the backup .strings.bkp file to .strings and kill Finder one last time.

First cd into it:

cd /System/Library/CoreServices/Finder.app/Contents/Resources/English.lproj/

Then restore from the backup:

sudo cp Localizable.strings.bkp Localizable.strings

Restart Finder:

killall -HUP Finder

And all should be back to the original bloatedness...

Last Note - Permissions

A final note, that file has a 644 permission (-rw-r--r--) and is owned by root with group wheel.

If you messed that up is easy to fix:

sudo chmod 644 /System/Library/CoreServices/Finder.app/Contents/Resources/English.lproj/Localizable.strings

sudo chown root:wheel /System/Library/CoreServices/Finder.app/Contents/Resources/English.lproj/Localizable.strings