以下のようなカスタムURLハンドラ/カスタムプロトコルハンドラについてオンラインでたくさん読んでいます。
特定のプログラムがInfo.plist
ファイルで特定のスキーム/プロトコルを処理できることをシステムに伝えることができます。
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>Local File</string>
<key>CFBundleURLSchemes</key>
<array>
<string>local</string>
</array>
</dict>
</array>
<key>NSUIElement</key>
<true/>
しかし、mailto:
のように、同じURLハンドラを開くことができるアプリケーションが複数ある場合は、どのアプリケーションをシステムに使用させたいのでしょうか。
More Internet preference pane
のようなユーティリティへの言及がいくつかありましたが、それらはもう著者のサイトからは利用できないようです。 Googlingでオンラインで見つけたのですが、古いOSX用に書かれているように、おそらくTigerのように、少しぎこちないようです。
プロトコルとカスタムプロトコルのURLハンドラの設定方法に関する情報が見つかりませんでした。私はどこかに編集できるplist
ファイルがあると思っています - あるいはMountain Lionでうまく動作するより新しい、より良いユーティリティがあるのでしょうか?
探しているファイルは~/Library/Preferences/com.Apple.LaunchServices/com.Apple.launchservices.secure.plist
です。
それはLSHandlers
と呼ばれる配列を保持します、そしてLSHandlerURLScheme
を定義するDictionaryの子はLSHandlerRole
でそれに応じて修正することができます。
このファイルを手動で編集する代わりに、 RCDefaultApp を使用することもできます。 macOS 10.12以降では動作しないと言われていますが、macOS 10.14で動作することを確認できます。
別の方法は SwiftDefaultApps です。
例えば、これがSVNとSSHです。
…そしてRCDefaultAppでは:
2017年7月更新:RCDefaultAppとlstool
はmacOS 10.12以降では機能しなくなりました。新しい解決策を見つけなければなりません。
2018年3月編集
SwiftDefaultApps を見つけましたが、まだHigh Sierraを使っていないのでテストできません。
以前の答えをさらに進めて、コマンドラインでこれを実行したい場合は、RCDefaultApp.prefPane/Contents/Resources/lstool
の下にあるRCDefaultAppの中核であるlstool
コマンドを使用できます。
使い方は簡単です。
[~]$lstool --help
Usage:
lstool read [<lsscheme> [<type>]]
lstool [-n] write <lsscheme> <type> <app>
lstool [-n] setoption <lsscheme> <type> login|ignorecreator YES|NO
lstool [-n] register {<app>}
lstool [-n] unregister {<path> | <app>}
lstool apps
-n means do not make changes
<lsscheme> is one of: internet, media, url, extension, uti, mime, ostype
<app> is the path to an application or a name to be looked up
Apple OS X 10.10(Yosemite)での現在のLaunchServices URLハンドラ設定の一覧表示
defaults read com.Apple.LaunchServices/com.Apple.launchservices.secure
誰かが興味を持っているなら、私は実際にカスタムURLプロトコルの登録を簡単にするアプリケーションを書きました。それはLinCastorと呼ばれます( http://onflapp.wordpress.com/lincastor/ )。ハンドラは、AppleScriptまたはShellスクリプト(Perl、python、またはこれまでに可能なもの)として定義できます。
XCodeでファイルを開くのはとても簡単です。
https://discussions.Apple.com/thread/5815759 の回答に記載されているように、組み込みコマンドplutil
を使用して、フォーマットxml1またはbinary1の間で変換します。同様に動作します。
plutil -convert xml1 /file-i-wish
nano /file-i-wish & save file
plutil -convert binary1 /file-i-wish
「エイリアン」ツールは必要ありません:-)
また、 duti を使用することもできます。
echo $'com.Apple.mail mailto\ncom.googlecode.iterm2 x-man-page'>~/.duti;duti ~/.duti
私はちょうどEl Capitanの下で、古いMore Internetを試しました。
それはファンキーであり、それが機能する唯一の方法はプロトコルを選択するために上下の矢印キーを使用すること、そして変更を加えるためにウィンドウにAPPアイコンをドラッグ&ドロップすることです。
私はデフォルトをSafariからChromeに切り替えたが、その変更は動かなかったので、それはまだうまくいく。
Apple OS X 10.10以降(Yosemite)で、現在のLaunchServices URLハンドラ設定をXcodeで一覧表示する別の方法:
open -a Xcode ~/Library/Preferences/com.Apple.LaunchServices/com.Apple.launchservices.secure.plist