Debug Your Life // 暮らしをデバッグする。

情報系の研究での気づきなどをつらつらと。

ForkLift 3をMacのデフォルトファイラに変更

MacのデフォルトのファイラをFinderからForkLift 3へと変更するための設定を行いました。

付随して、defaultsコマンドやplistファイルなどについても調べたのでまとめておこうかなと。

f:id:debug-your-life:20171225202858p:plain

binarynights.com
上記のUser ManualのDefault File Viewerという項目に以下の様な記述があります。

You can set ForkLift 3 as default file viewer, and almost 
every app (except Desktop) will point to ForkLift when 
you choose Reveal in Finder, Show in Finder, or Open in 
Finder options. Paste the following command into Terminal and hit Enter: 

defaults write -g NSFileViewer -string com.binarynights.ForkLift-3;
defaults write com.apple.LaunchServices/com.apple.launchservices.secure 
LSHandlers -array-add '{LSHandlerContentType="public.folder";LSHandlerRoleAll="com.binarynights.ForkLift-3";}'

Then restart your Mac. The second command is required 
in order to open folders in ForkLift by pressing Enter in Alfred.
To change it back to Finder, use the following command 
then restart your Mac:

defaults delete -g NSFileViewer

If you set ForkLift as the default file viewer and you remove 
it from your system, Finder will automatically become the default one.

最初の2つのコマンドをターミナルで打ち込んでから再起動したらデフォルトのファイラがForkLift 3に変更できて、3つ目のコマンドを実行すればFinderに戻せるって書いている様子です。

しかし、完全に元に戻せるんか…?と不安でした。ForkLift 3をデフォルトのファイラにしたという情報が調べても特に見当たらなかったので、コマンドの意味を少々調べました。

調べてみるとどうやら、Macの隠れた設定を変更するためのdefaultsコマンドというものを使っているようです。

defaultsコマンドでは/Library/Preferences/及び~/Library/Preferences/配下のplistファイル群が扱われる(らしい)です。

また、私が試した限りでは、-gオプションがあると~/Library/Preferences/.GlobalPreferences.plistを扱う様子でした。

事前確認

まずは現在の設定を確認します。

$ defaults read -g NSFileViewer  
2017-12-25 16:25:28.416 defaults[26817:1133814] 
The domain/default pair of (kCFPreferencesAnyApplication, NSFileViewer) does not exist  

NSFileViewerというキーはまだ存在していないことが分かるので、後々問題が発生してもキーの設定を丸ごと削除すれば設定をリセットできるはずです。

$ open /Users/cloveOS/Library/Preferences/.GlobalPreferences.plistを実行すれば、以下の様なXcodeGUI上での確認も可能です。 f:id:debug-your-life:20171225195157p:plain

設定変更

1つ目のコマンドの実行

$ defaults write -g NSFileViewer -string com.binarynights.ForkLift-3
を実行しました。

正常に反映されているか確認します。

$ defaults read -g NSFileViewer  
com.binarynights.ForkLift-3  

反映されていました。

また、
$ defaults find NSFileViewer
を実行すると、

Found 1 keys in domain 'Apple Global Domain': {
    NSFileViewer = "com.binarynights.ForkLift-3";
}

という表示が増えており、新たにキーが設定されたと分かります。

念のため、
$ open /Users/cloveOS/Library/Preferences/.GlobalPreferences.plist
を実行して確認しておくとさらに確実かもです。
f:id:debug-your-life:20171225195239p:plain

設定を反映させるため再起動します。再起動したら、AlfredからでもForkLift 3が起動するようになりました。(まだ2つ目のコマンドを実行してないのに…なぜ?)

2つ目のコマンドの実行

続いて、2つ目のコマンドも(一応?)実行しておきましょう。

$ defaults write com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers -array-add '{LSHandlerContentType="public.folder";LSHandlerRoleAll="com.binarynights.ForkLift-3";}'

を実行すると~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist へと変更が加えられます。

正常に反映されているか確認します。

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

を実行すると、表示の最後の部分に

                {
            LSHandlerContentType = "public.folder";
            LSHandlerRoleAll = "com.binarynights.ForkLift-3";
        }

が追記されています。

戻し方

デフォルトのファイラをFinderに戻したければUser Manualの3つ目のコマンドの通り、
$ defaults delete -g NSFileViewer
を実行すれば~/Library/Preferences/.GlobalPreferences.plistの該当箇所を削除できます。

なお、~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plistの該当箇所は再起動したら消えました。

Debug your life!

参考記事

Macギークなら知っておきたいdefaultsコマンドの使い方 | Macとかの雑記帳
OSXのコマンドラインからすると捗った設定リスト - will and way
Macでdefaultsコマンドで設定出来るオプションを調べる
OS X ハッキング!(315) stringsコマンドで裏オプション探し | マイナビニュース
システム環境設定をターミナル(defaultsコマンド)から設定する方法(一般) – OTTAN.XYZ
コマンドラインから見るosx 10.10 yosemite システム環境設定の風景 -- 1 行目編 - ばかもりだし