2018/09/13

Mac OSX デフォルトアプリケーションが勝手に変わる対策

前記事に引き続き、Macで起きる困った現象の対応の備忘録的記事です。

今回はOSXにてファイルのダブルクリックで起動するデフォルトのアプリケーションが勝手に変わってしまう現象についての対応です。前回の記事に引き続き、AppleScriptアプリでクリック一発で対応する方法です。

当方のOSX環境では、下記の拡張子のファイルをダブルクリックすると...
  • .pdf→プレビュー
  • .mp4→QuickTime Player7
  • .php→XCode
  • .html→FireFox
が起動するのが正常なのですが、これが不定期かつたまに
  • .pdf→Adobe Acrobat Pro
  • .mp4→QuickTime Player
  • .php→いろんなテキストエディタ
  • .html→Adobe Dreamweaver
などに変わったりします。
前回記事で書きましたが、原因は不明です。

現象や対応を検索すると結構多くの人がこの現象に悩まされているようで、一般的な対応として、
  1. Finderで該当ファイルの「情報を見る」ウインドウを開く
  2. 「このアプリケーションで開く(常にこのアプリケーションで開く:ON)」
  3. 「同じ種類の書類はすべてこのアプリケーションで開く」をチェック
という操作ですが、ファイルの修正日も変わってしまうし、こんな操作いちいち面倒臭いです。

ファイルをダブルクリックして起動するデフォルトアプリケーションの情報は
~/Library/Preferences/com.apple.LaunchServices.plist
などにあるのですが、こいつをTerminalからメンテすればよいということで、そういうコマンドを探してみたらありました。
 $ duti
ただし、brewでインストールしなければ使えません。

ここからはTerminalとbrewコマンドを使います、brewコマンドについては詳しく書かれたブログが多数ありますので、そちらをご覧ください、当サイトでは割愛します。

インストール手順は以下となります
  1. Terminalからbrewコマンドでdutiをインストールします
    $ brew install duti
  2. 特に問題も起こらなければ/usr/local/binにインストールされます。whichコマンドでインストール先のパスが分かります。後述のAppleScriptにコマンドのフルパスを記述する必要がありますので、必ずwhichコマンドで確認してください。
    $ which duti
    /usr/local/bin/duti
このdutiコマンドの使い方ですが、以下の機能があります。
  • 拡張子の現在のデフォルトアプリケーションを表示(例:pdf)
    $ duti -x pdf
    プレビュー.app
    /Applications/Preview.app
    com.apple.Preview
  • 拡張子に対してデフォルトアプリケーションを設定(例:pdfとプレビュー.app)。-xコマンドと違って拡張子にピリオドが必要です。
    $ duti -s com.apple.Preview .pdf all
dutiコマンドに設定する「com.apple.Preview」はアプリケーションパッケージ内のinfo.plistに記述されているCFBundleIdentifierの値ですが、いちいちパッケージを開いて調べるのは面倒くさいので、一旦、ファイルとデフォルトアプリが正常な状態であることを確認して「duti -x 拡張子名」で表示確認がよいと思います。

で、前回記事に引き続き、いちいちターミナル起動してコマンドを叩くのも面倒なのでAppleScriptで一発実行のアプリにします。
その方法は
  1. AppleScriptエディタを起動する
  2. 新規で新しいスクリプトウインドウを開き、以下の内容を記述します。dutiコマンドは必要に応じて記述してください、下記例はpdfをプレビューに、mp4をQuicktime Player7に設定する例です (defaultbrowserの行は前回記事のデフォルトブラウザをFireFoxにする命令です)。ダブルクォーテションとか拡張子のピリオドを忘れないようにね。
    activate
    do shell script "/usr/local/bin/defaultbrowser firefox"
    do shell script "/usr/local/bin/duti -s com.apple.Preview .pdf all"
    do shell script "/usr/local/bin/duti -s com.apple.quicktimeplayer .mp4 all"
  3. スクリプトを実行して動作確認、正常な場合はウンともスンとも言いません、問題がある場合はエラーが表示されます。
  4. スクリプトをアプリ形式で保存します。「ファイル>書き出す」を選択、ファイルフォーマットは「アプリケーション」を選択し「実行専用」をチェックします。それを好きな名前をつけて.appファイルを保存すれば「一発でデフォルトプリケーションとデフォルトブラウザまで設定できるアプリ」の出来上がり。
出来たアプリはダブルクリックで使えますが(実行時は何も表示されず処理は一瞬で終わります)、これをDockにでも登録しておけば、クリック一発でデフォルトアプリケーションとデフォルトブラウザが設定できる、というわけです。アプリですので、システム環境設定のログイン項目なんかに設定することも可能です。

上記手順で作成したアプリ一発起動で
  • デフォルトブラウザ
  • 任意のファイルのデフォルトアプリケーション
が設定でき、とても便利でございます。

以上であります!