How to Make an App Appear in macOS “Recommended Applications” for a File Type
Published June 27, 2026, 10:18 a.m. by james
Adding Okular or Xournal++ to macOS “Recommended Applications” for PDF Files
```
On macOS, Finder decides which programs appear under Recommended Applications
based on what each application declares in its Info.plist file. If a PDF reader
such as Okular or Xournal++ does not advertise support for PDF files, Finder may hide it unless
you manually choose Other... and then switch from Recommended Applications
to All Applications.
This guide shows how to add PDF support to the application bundle so the program appears as an option for PDF files without making it the default PDF viewer.
1. Find the Application Bundle
On macOS, application names are case-sensitive in paths. For example, Okular may be installed as /Applications/okular.app instead of /Applications/Okular.app.
OKULAR_APP="$(mdfind "kMDItemFSName == 'okular.app'" | head -n 1)"
```
echo "$OKULAR_APP"
```
If the output is:
/Applications/okular.app
then use that exact path in the commands below.
2. Back Up and Open the Info.plist File
Go into the application bundle and back up the original plist file.
cd "/Applications/okular.app/Contents"
```
cp Info.plist Info.plist.backup
plutil -convert xml1 Info.plist
vim Info.plist
```
For Xournal++, the path is usually:
cd "/Applications/Xournal++.app/Contents"
```
cp Info.plist Info.plist.backup
plutil -convert xml1 Info.plist
vim Info.plist
```
3. Add PDF Support Inside the Main dict
The important part is that the PDF block must be inside the main
<dict> ... </dict> section. A valid plist has only one root object
inside <plist>.
The beginning of the file should look like this:
<?xml version="1.0" encoding="UTF-8"?>
```
```
Add the following block immediately after the opening <dict> line:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>PDF Document</string>
<key>CFBundleTypeExtensions</key>
<array>
<string>pdf</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>com.adobe.pdf</string>
<string>public.pdf</string>
</array>
</dict>
</array>
The corrected beginning of the file should look like this:
<?xml version="1.0" encoding="UTF-8"?>
```
CFBundleDocumentTypes
CFBundleTypeName
PDF Document
```
<key>CFBundleTypeExtensions</key>
<array>
<string>pdf</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSItemContentTypes</key>
<array>
<string>com.adobe.pdf</string>
<string>public.pdf</string>
</array>
</dict>
</array>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDocumentTypes</key> before the opening
<dict>. That will break the plist and produce an error such as:
plist can only include one object
4. Validate the plist
After saving the file in vim, check that the plist is valid:
plutil -lint Info.plist
The expected output is:
Info.plist: OK
5. Re-sign and Re-register the Application
Because the application bundle was modified, macOS may require the app to be re-signed locally.
codesign --force --deep --sign - "/Applications/okular.app"
Then register the application again with LaunchServices:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f "/Applications/okular.app"
```
killall Finder
```
For Xournal++, use:
codesign --force --deep --sign - "/Applications/Xournal++.app"
```
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -f "/Applications/Xournal++.app"
killall Finder
```
6. Rebuild LaunchServices Cache if Needed
If Finder still does not show the app under Recommended Applications, rebuild the LaunchServices database:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
```
killall Finder
```
7. Check Finder
Now right-click a PDF file and choose:
Open With
Okular or Xournal++ should now appear as a recommended application for PDF files.
Common Mistake
The most common mistake is placing the new block outside the main dictionary. This is invalid:
<plist version="1.0">
<key>CFBundleDocumentTypes</key>
...
<dict>
...
</dict>
```
```
The correct structure is:
<plist version="1.0">
```
CFBundleDocumentTypes
...
```
Final Notes
This method only changes which apps macOS considers compatible with PDF files. It does not change your default PDF viewer.
If you update Okular or Xournal++, the application bundle may be replaced, and you may need to repeat this process.
```Similar posts
There are no similar posts yet.comment
There are no comments yet.