73

How can I add an application to the Open With menu (shown after right-clicking) for a given file type, without making that file always open with that application?

In this specific instance, I'd like to the option to open an Web site location (.URL) file with TextEdit, while still defaulting to Safari.

I'm running OS 10.7.4.

KatieK
  • 3,594

7 Answers7

36
  1. Add this to the CFBundleDocumentTypes array in /Applications/TextEdit.app/Contents/Info.plist:

    <dict>
        <key>CFBundleTypeExtensions</key>
        <array>
            <string>url</string>
        </array>
    </dict>
    
  2. /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -f /Applications/TextEdit.app/

  3. killall Finder
  4. Change the default application back to Safari in Finder

If the application is signed, modifying an Info.plist invalidates the code signature. It also makes a few applications like TextEdit and WriteRoom crash on launch on 10.8.

Lri
  • 105,117
  • 1
    Perhaps it's just my computer, but this does not work for me. After following this procedure (to step 3), TextEdit is not available under "Open With" for .URL files. Also, modifying Info.plist seems to cause TextEdit to crash in 10.7, too. – KatieK Oct 16 '12 at 20:50
  • 16
    Is there a way to make this more general? E.g. I want my hex editor (currently HexFiend) as an option to open every goddamn file type including those not having a file extension... – Steven Lu May 20 '16 at 04:05
  • @StevenLu: I made a Finder shortcut in BetterTouchTool to open the currently selected file in HexFiend. – biziclop Dec 27 '18 at 10:52
  • 1
    Been struggling with this for a very long time. @StevenLu's question is still valid, especially for editors, but being able to do it for the most common files is useful. Repeating this exercise for Visual Studio Code I wasn't sure which CFBundleTypeExtensions group it belonged in. I added the new extension just under <string>txt</string> but I'm not entirely sure if that's correct. Regardless, it worked. So far, no issues with breaking signatures either. – tresf Oct 16 '20 at 15:16
  • 1
    @Lri or to anyone who can answer:

    I have questions about this part of Lri's answer: "If the application is signed, modifying ... crash on launch on 10.8."

    What are the consequences of having TextEdit (or another app) having an invalidated sig.? Does it cause problems when attempting to update the app to a newer release? Or?

    Does step 2 (lsregister) resolve the problem of invalidating the code sig.? What exactly does the lsregister command do?

    Does the problem with TextEdit/WriteRoom crashing still exist in more current releases such as macOS 12?

    – KS_on_StackExchange Apr 16 '23 at 20:41
15

Try selecting the file in the Finder and doing File > Get Info. From there you should be able to choose any application to open it with. Once you've opened that type of file in that application once, it should start appearing in the Open With menu.

EDIT: The answer above does not work. Alternate suggestion:

I felt bad that my prev answer was incorrect, so I googled around. I found this tip from Mac OS X Hints:

  • Control-click (or right-click) the app in question and select "Show Package Contents"
  • Open the Contents folder in the app bundle. There you'll find a file called Info.plist. This is an XML property list that stores all sorts of information about the app.
  • Open the file with your favourite text editor. I recommend Hydra, but TextEdit will do just fine.
  • Search for something that looks like the following:

    <key>CFBundleTypeExtensions</key>
    <array>
        <string>txt</string>
        <string>srt</string>
        <string>suffix1</string>
        <string>suffix2</string>
        …
    

    and so forth, with the suffices the app is able to open contained within the tags. Then you simply delete [or add --newtron] the suffix for items you don't want [or want] the app to open.

  • Save the file, and close it (or quit the editor).

grg
  • 201,078
newtron
  • 324
  • This does not seem to work. In "Get Info", I can "Open With" the same applications as normal, or choose "Other". If I choose "Other", I can choose from all applications, and either check or uncheck "Always Open With". Even after opening the file once with TextEditor, it does not appear as an additional option in the "Open With" submenu. – KatieK Jun 01 '11 at 22:12
  • Shoot, you're right. I will edit the answer to reflect this and update it with an alternate suggestion. – newtron Jun 02 '11 at 00:37
  • 1
    This updated answer doesn't work all by itself, even after a reboot. – KatieK Jun 08 '11 at 03:37
  • Think this method worked in snow leopard..http://superuser.com/questions/222065/how-can-i-add-a-program-to-the-open-with-menu-on-a-mac – Ryan Hollingsworth Oct 10 '12 at 12:37
  • 2
    The amended instructions are the same as Lri's answer, but theirs is better because it has the lsregister and killall Finder forcing refresh immediately. – tresf Oct 16 '20 at 15:18
9

newtron's second solution worked for me but only after I opened Terminal and executed the following command:

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user

After restarting the system the desired app was in my "open with" context menu.

Thanks

Joseph
  • 1,019
  • This is also useful if you want to clear the list and start again. e.g. VMWare Fusion had placed entries somehow that where orphaned when the corresponding VM was deleted. Using this cleared the incorrect entries – ferdil Nov 23 '16 at 12:25
  • 1
    Lri's steps in another answer (accepted solution) worked just fine for me. Posting this in 2020 using MacOS Big Sur 11.0. – tresf Oct 16 '20 at 15:19
8

You can add the option as a Service with Automator and then trigger it with a Hotkey from Keyboard Maestro.

  1. Open Automator and select Quick Action document type (formerly Service)
  2. Select Files and Folders in the top Workflow receives selected menu
  3. Search for and select the Open Finder Items action.
  4. Now select TextEdit in Open with:
  5. Save the service with a name you want to see in the menus

You can now find this by:

  • Right-clicking the file and searching near the bottom or in Quick Actions

enter image description here

OR

  • Finder Menu > Services (with a file selected)

enter image description here

But you don't have to stop there!

I then made a Keyboard Maestro macro so I can just use a Hotkey to do it: enter image description here

I got this idea from this site: http://www.mactricksandtips.com/2013/05/add-open-with-textedit-or-any-other-app-to-right-click-menu-item.html

  • 1
    This is a great way of doing this, thank you very much!! – Lucas P. Nov 07 '18 at 13:07
  • I use the service all the time but I forgot I made a macro to do this. Nothing like rediscovering a macro! – kraftydevil Nov 07 '18 at 13:13
  • 1
    I've never used Automator before (or knew what it does), you've just opened a whole new world in OSX for me :) – Lucas P. Nov 07 '18 at 14:04
  • 1
    This is the best answer. This applies to all file extensions, even when there is none. And it doesn't require maintenance and doesn't require messing with the terminal. Not that I'm against messing with the terminal, but for the common user it is best to avoid it ofcourse. – Ogier Schelvis Feb 10 '21 at 16:45
  • 1
    This is a very nice alternative. I did the Info.plist approach, but on MacOS 13 (at least), system integrity then prevents you from running the application (in my case, XnViewMP) at all. This approach is much more flexible, and doesn't make the system paranoid that someone has hacked an executable. – Jan Steinman Dec 31 '23 at 23:13
8

Instead of opening the file with the context menu, you can also drag any file to any desired application while pressing + keys. This will force any app to try even if it thinks it can't do so. I use this all the time.

myhd
  • 3,480
  • 1
    I just dragged an unknown document type to a text editor's app shortcut on the Dock without holding these key combinations and it worked. These additional shortcut keys may no longer be needed. – tresf Oct 16 '20 at 15:21
  • This is the easiest answer. What an obscure keyboard shortcut though! – wisbucky Jul 28 '21 at 04:08
0

This worked for me : Right click your app and goto contents and open /Applications/*****.app/Contents/Info.plist

Open Plist in Xcode as SourceCode and then place this :

        <dict>
            <key>CFBundleTypeExtensions</key>
            <array>
                <string>jpeg</string>
                <string>jpg</string>
                <string>png</string>
                <string>gif</string>
            </array>
            <key>CFBundleTypeIconFile</key>
            <string>AutomatorApplet.icns</string>
            <key>CFBundleTypeName</key>
            <string>AutomatorApplet.icns</string>
            <key>CFBundleTypeOSTypes</key>
            <array>
                <string>GIFf</string>
                <string>JPEG</string>
                <string>PNGf</string>
            </array>
            <key>CFBundleTypeRole</key>
            <string>Viewer</string>
        </dict>

I had 'AutomatorApplet.icns' in Resources Folder.

Zeeshan
  • 101
  • Please add what you tried to achieve by adding the dict entry. As your answer stands now, it doesn't use the example (.url) given in the question. – klanomath Nov 16 '15 at 11:09
-4

Check out the tech-recipes.com for detailed instructions. As @Anriëtte pointed out the app should appear on the Open with menu if it can open the specific file.

karmatic
  • 827
  • This doesn't work for me because I don't want to change the default application which opens the file. I just want an additional choice. – KatieK May 31 '11 at 15:12