2018/09/12

Mac OSX デフォルトブラウザが勝手に変わる対策

約半年前の前回記事で「ブログをボチボチ書く」宣言しつつ、仕事が超忙しかったり、別の個人的なプロジェクト(趣味)が忙しかったりで、ブログから少し離れてましたがな。

9/13追記:
このdefaultbrowser、うまく効くときと効かないときがあるようです。Terminalからだと、ほぼ問題ないんですが、AppleSriptアプリからだと何度か効かないときがありました。ちょっと調査継続します。

記事書きのリハビリ&備忘録みたいな感じで、うちのMacで起こる困った現象の対応について書くっす。

ワタクシ、FireFoxユーザーなのですが、週に1〜2度、勝手にOSXのデフォルトのブラウザがSafariになってしまうんです。仕事の関係で、SafariもChromeもたまに使ったりするのですが、それらを使ったからといって環境設定でいじらない限りは直ちにデフォルトのブラウザが変わるわけではないです。ウイルスチェックやマルウェアチェックを行ったり、怪しそうなアプリを起動したりとか、色々と原因を調べてみましたが、結局、どこのどいつ(アプリや常駐プログラム)が書き換えているのか、決定的な原因は不明なままです。

そんなわけで、デフォルトのブラウザが勝手にSafariにされても簡単に戻す方法を作りました。

結論から言うと「defaultbrowser」というプログラムをインストールして、ターミナルからコマンドを叩きます。で、いつもターミナル起動してコマンドを叩くのも面倒なので、AppleScriptでアプリ化してクリック一発でデフォルトのブラウザが設定されるようにしました。

まず、defaultbrowserのインストール手順です:
  1. 以下のGitからdefaultbrowser一式(defaultbrowser-master.zip)をダウンロード
    https://github.com/kerma/defaultbrowser
  2. defaultbrowser-master.zipを解凍します。
  3. Terminalを起動します
  4. Terminalで以下のコマンドを入力して解凍したディレクトリをカレントディレクトリにします。
    $ cd /解凍先のディレクトリのパス/defaultbrowser-master
  5. makeコマンドを入力
    $ make
  6. 続けてmake installコマンドを入力
    $ make install
  7. 特に問題も起こらなければ/usr/local/binにインストールされます。whichコマンドでインストール先のパスが分かります。後述のAppleScriptにコマンドのフルパスを記述する必要がありますので、必ずwhichコマンドで確認してください。
    $ which defaultbrowser
    /usr/local/bin/defaultbrowser
以上でインストールは完了です。

まず、defaulwbrowserの基本的な使い方です。
 $ defaultbrowser
とだけ入力すると、設定可能なブラウザの一覧が表示されます。

特定のブラウザをデフォルトのブラウザに指定する場合はコマンドに続けてブラウザ名を記述して入力です。ブラウザ名は上記のコマンドで表示された一覧中のものを指定します。例えばFireFoxにしたい場合は
 $ defaultbrowser firefox
と入力するだけでOK、実に簡単です。

しかし、いちいちターミナル起動してコマンドを叩くのも面倒なのでAppleScriptで一発実行のアプリにします。
その方法は
  1. AppleScriptエディタを起動する
  2. 新規で新しいスクリプトウインドウを開き、以下の2行を記述します(FireFoxにしたい例)。ダブルクォーテションとか忘れないようにね。。
    activate
    do shell script "/usr/local/bin/defaultbrowser firefox"
  3. スクリプトを実行して動作確認、正常な場合はウンともスンとも言いません、問題がある場合はエラーが表示されます。
  4. スクリプトをアプリ形式で保存します。「ファイル>書き出す」を選択、ファイルフォーマットは「アプリケーション」を選択し「実行専用」をチェックします。それを好きな名前をつけて.appファイルを保存すれば「一発でデフォルトブラウザが設定できるアプリ」の出来上がり。
出来たアプリはダブルクリックで使えますが(実行時は何も表示されず処理は一瞬で終わります)、これをDockにでも登録しておけば、クリック一発でデフォルトブラウザが設定できる、というわけです。

デフォルトブラウザ一発設定に加え、拡張子毎のデフォルトアプリケーションに対応する記事も作成しましたので、よろしけばご覧ください。

以上であります!