OS XでカスタムURLハンドラーを構成するにはどうすればよいですか?


64

私は次のようなカスタム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著者のサイトからはもう入手できないと思われるようなユーティリティへの参照がいくつかありました。私はグーグルでそれをオンラインで見つけましたが、古いOSX用に書かれているように、おそらくタイガーのように少し不安定です。

プロトコルおよびカスタムプロトコルのURLハンドラを設定する方法に関する情報を見つけることができませんでした。plist編集可能なファイルがどこかにあると仮定していますか?または、Mountain Lionでうまく機能する、より新しい、より良いユーティリティがあるのでしょうか?

回答:


55

探しているファイルは~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plistです。

と呼ばれる配列を保持し、LSHandlersを定義するディクショナリの子はLSHandlerURLSchemeそれに応じて変更できますLSHandlerRole

このファイルを手動で編集する代わりにRCDefaultAppを使用することもできます。これにより、環境設定ペインが提供されます。macOS 10.12以降では動作しないと言われていますが、macOS 10.14で動作することを確認できます。

代替手段はSwiftDefaultAppsです。

たとえば、SVNとSSHは次のとおりです。

…およびRCDefaultAppで:


35
4分19秒?マジ?
ダニエルベック

2
迅速かつ詳細な回答をありがとう。いいね!しかし、質問-以前RCDefaultAppを試してみたところ、問題が発生したと思います。シームレスに機能していましたか?
cwd

@cwd正直に言って、頻繁に使用することはありません。他の何よりもスーパーユーザーのスクリーンショットの方が多い:)ファイルの関連付けを変更する必要があるときはいつでも、Finderの[ 情報を見る ]ダイアログで行います。プロトコルとMIMEハンドラーを変更する必要はありませんでした。しかし、私には十分に安定しているように見えました。
slhck

これは、実際の「アプリ」を開くためのようです。端末コマンドなどを使用してカスタム処理を行いたい場合はどうすればよいですか?
-nute

1
@nute頭上からだけど、よくわからない。おそらく、シェルスクリプトをラップするAutomatorで作成されたアプリでしょうか?
slhck

14

2017年7月更新:RCDefaultAppおよびlstoolmacOS 10.12以降では動作しなくなりました。新しいソリューションを見つける必要があります。

2018年3月編集SwiftDefaultApps
を見つけましたが、まだHigh Sierraを使用していないためテストできません。


前の回答をさらに進めて、コマンドラインでこれを実行したい場合lstoolは、RCDefaultAppの中核であるの下にあるコマンドを使用できますRCDefaultApp.prefPane/Contents/Resources/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

2
Xcodeで自分でビルドする必要がありますが、RCDefaultAppの代替品がgithub.com/Lord-Kamina/SwiftDefaultAppsで見つかりました。
luckman212

RCDefaultAppのバージョン2.1を使用していますが、10.12では問題なく動作します。少なくとも、すべてのアイテムがリストされます。または、特定の操作のみが機能しなくなりましたか?詳しく説明してください
-SuperTempel

@SuperTempel lstoolコマンドラインツールが表示され、このエラーあなたはそれを実行しようとすると:objc[1049]: Objective-C garbage collection is no longer supported.lstoolRCDefaultApp環境設定パネルで使用される内部プログラムで環境設定パネルが動作しているように見えますが、私はので、それが何かを行うことができるとは思わない。lstool壊れています。 )
クインコメンダント

SwiftDefaultApps Intelプロセッサでは動作しないようです。少なくとも2018
。–クインコメンダント

3
私はSwiftDefaultAppsの開発者であり、SWDAは最初からmacOS Sierra以上を念頭に置いてコーディングされていました(実際、この質問や類似の質問を読んで多くのフラストレーションを感じた後、作業を​​開始しました)。主にSwiftまたはmacOS自体のバグが原因で10.13で機能していませんでしたが、10.13.4 / Swift 4.1へのアップデートで修正されたようです。
グレゴリオリテンシュタイン

11

Apple OS X 10.10(Yosemite)での現在のLaunchServices URLハンドラー設定のリスト:

defaults read com.apple.LaunchServices/com.apple.launchservices.secure

壊れたり、何かをダウンロードする必要のない組み込みツールを使用してくれてうれしいです。
xdhmoore

ただし、これはすべてのプロトコルのすべてのデフォルトをリストするのではなく、一部のみをリストします。
ワディムペレトキン

5

興味のある方は、実際にカスタムURLプロトコルの登録を簡素化するアプリケーションを作成しました。LinCastorと呼ばれます(http://onflapp.wordpress.com/lincastor/)。ハンドラーは、AppleScriptまたはシェルスクリプト(perl、pythonなど)として定義できます。


非常に良いアイデアですが、提供されたサンプルスクリプトを動作させることができないのではないかと思います。もっとあなたのブログに、節度待っ:getitdoneapps.wordpress.com/lincastor-browser/support/...
フラッシュシェリダン

これは、コマンドラインからスクリプトを実行することで診断された、サンプルファイル内の不可解な改行の奇妙さのように見えました。(「/ bin / sh:不正なインタープリター:操作は許可されていません」)BBEditでコピーを保存し、Windowsとの間で改行を変更して再充電すると、問題が回避されました。
フラッシュシェリダン

5

XCodeでファイルを開くのは非常に簡単です。

https://discussions.apple.com/thread/5815759plutilの回答に記載されているビルドインコマンドを使用して、xml1またはbinary1の形式間で変換することは同様に機能します。

plutil -convert xml1 /file-i-wish

nano /file-i-wish & save file 

plutil -convert binary1 /file-i-wish

「エイリアン」ツールは必要ありません:-)


4

dutiを使用することもできます

echo $'com.apple.mail mailto\ncom.googlecode.iterm2 x-man-page'>~/.duti;duti ~/.duti

0

El Capitanの下で、古いMore Internetを試しました。

それはファンキーであり、それが機能する唯一の方法は、上下矢印キーを使用してプロトコルを選択し、APPアイコンをウィンドウにドラッグ/ドロップして変更を加えることです。

デフォルトをSafariからChromeに切り替えましたが、変更が行き詰まっていたため、まだ機能します。


これは何ですか?あなたの答えは不明です。
lacostenycoder

0

Apple OS X 10.10+(Yosemite)でXcodeを使用して現在のLaunchServices URLハンドラー設定を一覧表示する別の方法:

open -a Xcode ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.