web-dev-qa-db-ja.com

OS XでカスタムURLハンドラを設定する方法

以下のようなカスタム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でうまく動作するより新しい、より良いユーティリティがあるのでしょうか?

57
cwd

探しているファイルは~/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では:

50
slhck

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
14
Quinn Comendant

Apple OS X 10.10(Yosemite)での現在のLaunchServices URLハンドラ設定の一覧表示

defaults read com.Apple.LaunchServices/com.Apple.launchservices.secure
11
VirtualJMills

誰かが興味を持っているなら、私は実際にカスタムURLプロトコルの登録を簡単にするアプリケーションを書きました。それはLinCastorと呼ばれます( http://onflapp.wordpress.com/lincastor/ )。ハンドラは、AppleScriptまたはShellスクリプト(Perl、python、またはこれまでに可能なもの)として定義できます。

5
On Flapp

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

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

5
Clemens Tolboom

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

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

私はちょうどEl Capitanの下で、古いMore Internetを試しました。

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

私はデフォルトをSafariからChromeに切り替えたが、その変更は動かなかったので、それはまだうまくいく。

0
Calgary Guru

Apple OS X 10.10以降(Yosemite)で、現在のLaunchServices URLハンドラ設定をXcodeで一覧表示する別の方法:

open -a Xcode ~/Library/Preferences/com.Apple.LaunchServices/com.Apple.launchservices.secure.plist
0
oikonomopo