---
canonical: https://solariz.de/posts/25/macos_custom-protocol-handler/index.md
---
One particular painful experience I had under MacOS was that it seems not to be possible with on-board settings to configure which program / action should be used on execution of a Link.

Similar as you would choose a default Browser or Email app, this is needed for far more than just the browser.

e.g.:

- open  `mailto://` links with `outlook`​
- open `ssh://` links with `kitty-term`​
- open `ftp://` with `transmission`​

and so on...

As usual on Mac - you have to do this the manual way - as a short howto save I wrote down how:

## PrefPane: SwiftDefaultApps

Prerequisite: you have Homebrew installed. Then execute:

```bash
brew install swiftdefaultappsprefpane
```
(source:  [github.com/Lord-Kamina/SwiftDefaultApps](https://github.com/Lord-Kamina/SwiftDefaultApps?tab=readme-ov-file))


Afterwards run this in a Terminal:

```bash
appDir="/Library/PreferencePanes/SwiftDefaultApps.prefPane/Contents/Resources/ThisAppDoesNothing.app"

if ! [[ -d "$appDir" ]]; then appDir="$HOME/$appDir"; fi

# Remove quanrantine flag
xattr -d com.apple.quarantine "$appDir"
# Open the app
open "$appDir"
```





## Done - Ready to set via UI

After succesful installation you will find the option **SwiftDefaultApps** in the System Settings:

![macos-protocol-handler-screenshot](https://solariz.de/images/25/macos-protocol-handler_xx6tk5a.png)

