結論
URL を見て profile を自動判別して開くアプリ、もうあるってよ
brew install --cask choosy
Chrome の profile
Google Chrome の profile 機能を使っていますか? これは、ブックマークや履歴などの情報や設定を使い分けることができるものです。
例えば、仕事用と私用で使い分けるのが良くあるパターンですね。 id:arthur-1 は計4つの Google アカウントを持っているので、それぞれに対応した profile を Chrome に登録しています。
こいつが便利なんですが、痒い所に手が届かないのです。
複数の profile のウィンドウを同時に立ち上げている時に問題が起こります。Slack のアプリなどに表示されるリンクを踏んだとき、自分が開きたい profile のウィンドウでページが開かないことがあるのです。
挙動としては一貫性があり、直近でアクティブだったウィンドウの profile にタブが追加されます。しかし、サイトを開く前に開きたいウィンドウをアクティブにするのは面倒です。業務システムへのアクセスをプライベートな profile のブラウザでしてしまうことになりかねません。
profile を指定してページを開く方法
Mac の Google Chrome で、特定のWebページを特定の profile で開きたい場合はこのスクリプトを実行すれば良いです。
open -na "Google Chrome" --args "https://example.com/" --profile-directory="Profile 1"
"https://example.com/"
のところには開きたいページを、 --profile-directory
オプションには profile ディレクトリ名を指定しましょう。
profile ディレクトリ名は chrome://version/
というページを開くと分かります。下の図のような表示であれば "Profile 2"
と指定すれば良いです。
smart-google-chrome.sh
URL を見て開きたい Profile を判別させるために、こんなシェルスクリプトを書いてみました。
#!/bin/zsh p1_website_regexs=( '^[http?s://]?blog\.arthur1\.dev' ) # 引数指定がない場合は通常通り Chrome を開く if [[ $# -eq 0 ]]; then open -na "Google Chrome" exit 0 fi # 引数がある場合には p1_website_regexs にマッチするなら Profile 1 で開く for regex in $p1_website_regexs; do if [[ $1 =~ $regex ]]; then open -na "Google Chrome" --args $1 --profile-directory="Profile 1" exit 0 fi done # どれにもマッチしなかったので、profile を指定せず開く open -na "Google Chrome" --args $1
以下のようにスクリプトを指定すると、引数に渡した Web ページが Chrome で開きます。
smart-google-chrome.sh https://blog.arthur1.dev
このとき、URL が p1_website_regexs
配列に指定した正規表現にマッチするならば、Profile 1 を明示的に指定して開く、という挙動になります。
Automator でアプリ化も...
macOS には、Automator という地味に便利な仕組みがあります。Automator を使うと、シェルスクリプトをアプリケーションのように動かすことができます。
これにより、作ったスクリプトをアプリ化したものをデフォルトブラウザとして指定すれば、URL をクリックした時に自分が開きたい profile でページを開く最高体験ができるのでは、と考えました。
しかし、作ったものをデフォルトブラウザに指定することはできませんでした。Xcode を使ってきちんと mac のアプリとして作らないとブラウザとして認識してもらえないようです。
車輪の再開発回避
仕方ないから Swift 入門するか、と思って諦めていたとき、社の先輩が「それ、Choosy というアプリでできそう」と教えてくれました。
これがまさに自分が欲しかったものそのものでした。どのアプリから開いたリンクか、URLの文字列が何から始まるか、などの条件に応じて、どのブラウザ(profile 指定も可能)で開くかというルールを自由に設定できます。
また、ルールにマッチしなければ、ブラウザを開く前にポップアップが表示されどのブラウザかを選択する、といったことも可能です。
Choosy はブラウザのプロキシアプリケーション的な存在なので、これをデフォルトブラウザにして生活します。
シェアウェア($10)ではありますが、自分は気に入ったので課金しようと思います。
まとめ
profile を使い分けている方は choosy を使うとペインが解消されるかも?という情報でした。