Appleスクリプト、コマンドラインコマンド(などdefaults write [...]
)を介してファイル拡張子のデフォルトアプリケーションを定義する方法はありますか?
情報パネルまたはRCDefaultAppを使用して手動で変更できることはわかっていますが、多くのマシンとユーザーアカウントをセットアップする必要があるため、プロセスを自動化する方法を見つけたいと思います。
Appleスクリプト、コマンドラインコマンド(などdefaults write [...]
)を介してファイル拡張子のデフォルトアプリケーションを定義する方法はありますか?
情報パネルまたはRCDefaultAppを使用して手動で変更できることはわかっていますが、多くのマシンとユーザーアカウントをセットアップする必要があるため、プロセスを自動化する方法を見つけたいと思います。
回答:
dutiは、テキストファイルを使用してファイルタイプとURLスキームのデフォルトアプリケーションを構成できるようにするシェルユーティリティです。
たとえば、次のようにファイルを保存します~/.duti
。
com.gnu.Emacs public.plain-text all
com.gnu.Emacs public.unix-executable all
org.videolan.vlc .mkv all
次にを実行しduti ~/.duti
ます。
dutiは、をbrew install duti
使用して、またはを実行してインストールできwget https://github.com/fitterhappier/duti/archive/duti-1.5.2.tar.gz;tar -xf duti-1.5.2.tar.gz;cd duti-duti-1.5.2;./configure;make;sudo make install
ます。
.avi
ファイルをQuicktime Playerで開くようにデフォルトのアプリケーションを設定し(Finder→ Get Info → Open with…→_Change allduti -s org.videolan.vlc public.avi all
を使用)、代わりにVLCを使用して実行し、LaunchServicesを再起動しましたが、効果がないようです。(システム宣言されたUTIのリストを参照してください。)
~/Library/Preferences/com.apple.LaunchServices.plist
、dutiはほとんどのファイル名拡張子を自動的にUTIに変換するため、通常、.avi
ではなくのようなタイプを指定できますpublic.avi
。一部のファイル名拡張子のUTIは、インストールされているアプリケーションによって異なります。
Launch Servicesは、デフォルトのファイルの関連付けを担当します。
すべてのテキストファイルをSublime Text 2で開くように変更したいとします。
まず、私が使用することができます崇高テキスト2用kMDItemCFBundleIdentifierを必要とするのMDLを、この情報を取得するには:
> mdls /Applications/Sublime\ Text\ 2.app
_kTimeMachineIsCreationMarker = 1
_kTimeMachineNewestSnapshot = 4001-01-01 00:00:00 +0000
_kTimeMachineOldestSnapshot = 2012-02-22 03:49:19 +0000
kMDItemCFBundleIdentifier = "com.sublimetext.2"
....snip....
mdlsを使用してテキストファイルの1つを検査することで、テキストファイルのコンテンツタイプの値を確認できます。
> mdls test.txt
kMDItemContentCreationDate = 2012-03-25 04:18:50 +0000
kMDItemContentModificationDate = 2012-03-25 04:18:50 +0000
kMDItemContentType = "public.plain-text"
kMDItemContentTypeTree = (
"public.plain-text",
"public.text",
"public.data",
"public.item",
"public.content"
)
kMDItemDateAdded = 2012-03-25 04:18:50 +0000
kMDItemDisplayName = "test.txt"
kMDItemFSContentChangeDate = 2012-03-25 04:18:50 +0000
kMDItemFSCreationDate = 2012-03-25 04:18:50 +0000
kMDItemFSCreatorCode = ""
kMDItemFSFinderFlags = 0
kMDItemFSHasCustomIcon = 0
kMDItemFSInvisible = 0
kMDItemFSIsExtensionHidden = 0
kMDItemFSIsStationery = 0
kMDItemFSLabel = 0
kMDItemFSName = "test.txt"
kMDItemFSNodeCount = 975
kMDItemFSOwnerGroupID = 20
kMDItemFSOwnerUserID = 501
kMDItemFSSize = 975
kMDItemFSTypeCode = ""
kMDItemKind = "Plain Text"
kMDItemLogicalSize = 975
kMDItemPhysicalSize = 4096
この場合、すべてのpublic.plain-text
タイプのデフォルトアプリケーションを変更します。
これを行うには、次のように入力します。
defaults write com.apple.LaunchServices LSHandlers -array-add '{ LSHandlerContentType = \"public.plain-text\"; LSHandlerRoleAll = \"com.sublimetext.2\"; }'
変更を有効にするには、次のようにLaunch Servicesを再起動する必要があります。
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user
そして、信用が必要な場所で信用を与えるために、私はこのstackoverflow.comの質問と回答からこのアプローチについて学びました:https : //stackoverflow.com/questions/9172226/how-to-set-default-application-for-specific-file -types-in-mac-os-x
SuperUserに関するこの投稿には、役立つ情報も含まれています。LaunchServicesの詳細については、Appleの開発者向けドキュメントへのリンクを以下に示します。LSSetDefaultRoleHandlerForContentType(48ページ)というタイトルのセクションに移動します。
checking which SDK to use... configure: error: darwin12.0.0 is not a supported system
。