mac chrome プロファイル dock|アカウントごとのアイコンを置く方法
仕事用と個人用でChromeのプロファイルを分けたのに、Dockのアイコンは1つしか増えない。押すと前回最後に見ていたほうが立ち上がり、目的のアカウントに移るにはウィンドウ右上のアバターを押し、別のウィンドウが開くのを待ち、間違って開いたほうを閉じることになる。「mac chrome プロファイル dock」で調べたときに出てくる手順の多くはWindowsを前提にしていて、macOSにはその設定項目がない。
結論から言うと、macOSでもプロファイルごとのアイコンをDockに置くことはできる。ただし出来上がるのはChromeの2つ目の本体ではなく、起動を代行するだけの小さなアプリになる。この違いを先に知っておくと、作る価値があるかどうかを自分で判断できる。
macOSのDockがChromeを1つにまとめる理由
Dockが並べているのはアプリケーションであり、macOSにとってのアプリケーションは/Applications/Google Chrome.appという1つの束(バンドル)を指す。識別子はcom.google.Chromeの1つだけで、どのプロファイルのウィンドウもこの束から出てくる。Dockに表示できるものが1つしかないのは、この構造そのものが理由になっている。
プロファイルはアプリではなくフォルダに過ぎない。~/Library/Application Support/Google/Chromeの下に置かれたディレクトリで、Cookie・拡張機能・閲覧履歴・自動入力・保存済みのパスワード・各種設定をそれぞれ別に持つ。一方で実行ファイル、プロセスの親子関係、そしてOSから見た身元は共有している。つまりデータは分かれているが、macOSから見た姿は分かれていない。Dock、Command+Tabの切り替え、通知センターはいずれも後者しか見ていない。
Windowsの手順がそのまま通らないのもここに理由がある。WindowsのChromeは--profile-directoryという引数を埋め込んだショートカットファイルを書き出し、タスクバーはそのショートカットファイルを固定できる。macOSのDockはコマンドラインを固定せず、束だけを固定する。したがってこの記事で挙げるやり方はどれも、根っこでは同じ動きになる。macOSがアプリとして認める入れ物を1つ作り、その中からChromeを引数付きで起動させる、という形である。
先に断っておく点が1つある。4つのやり方のうち、Chrome内部のプロファイルをCommand+Tabで別扱いにできるものはない。3つのプロファイルのウィンドウは、キーボードの切り替えから見ればあくまで1つのアプリの3枚の窓のままになる。
プロファイルのフォルダ名を先に確かめる
引数に渡すのは画面に表示されている名前ではなく、実体のフォルダ名になる。画面に「仕事」と出ているプロファイルの中身がProfile 17というのは珍しくない。ここを取り違えると、ランチャーはエラーを出さずに別のアカウントを開くので、原因に気づくまで時間を取られる。
確かめ方は2つある。
- 目的のプロファイルでウィンドウを開き、アドレス欄に
chrome://versionと入れて「プロファイルパス」の行末を見る - Chromeが機械単位で持つ目録ファイル
Local Stateから、表示名とフォルダ名の対応を読む
後者はターミナルで次の1行を実行すると一覧になる。
python3 -c "import json,os;d=json.load(open(os.path.expanduser('~/Library/Application Support/Google/Chrome/Local State')))['profile']['info_cache'];[print(k,'->',v.get('name')) for k,v in d.items()]"
ここで戸惑いやすい点が2つある。最初に作られたプロファイルはProfile 0ではなくDefaultという名前で、番号は付かない。そして削除しても残りの番号は詰められないため、何年か使っている機械ではProfile 1の次がProfile 17のように飛ぶ。表示された文字列を半角スペースごとそのまま写し、シェルに渡すときは引用符で囲むこと。
Dockに置く4つのやり方
| やり方 | Dockに専用アイコン | Command+Tabで別扱い | 今のプロファイルを使う | 手間 |
|---|---|---|---|---|
| Automatorのランチャー | 置ける | 分かれない | そのまま使える | 10分程度 |
| ページをアプリとして入れる | 置ける | 分かれる | 入れたプロファイルに固定 | 1分程度、サイトごと |
| Chromeの別チャンネル | 置ける | 分かれる | 新しいデータ領域になる | 再インストールと再ログイン |
| 窓を単位にするブラウザ | 置ける | 分かれる | 再ログインが要る | 導入の仕方による |
Automatorで作る小さなアプリ
Windowsの挙動にいちばん近いのがこれになる。openコマンドをプロファイル指定付きで叩くだけのアプリを作り、それをDockに置く。追加の費用はかからず、今あるプロファイルをそのまま使え、参照しているのは束のパスだけなのでChromeが更新されても壊れにくい。弱点は、Chromeを起動した時点で役目を終えて終了することにある。Dockのアイコンは一度跳ねて消え、ウィンドウが開いている間ずっと点灯し続ける本体アイコンにはならない。
ページをアプリとして入れる
Chromeには、1つのサイトを単体のアプリに変える機能がある。メニューの文言はバージョンによって変わるため、右上の3点メニューから「キャスト、保存、共有」に相当する項目を開き、ページをアプリとしてインストールする選択肢を探す。作られたものは~/Applications/Chrome Apps.localizedに本物の束として置かれ、専用のDockアイコンとCommand+Tabの枠を持ち、インストールしたプロファイルで動く。プロファイル単位ではなくサイト単位という制限はあるが、求めていたものが「仕事用のGmailを1枚の窓に置きたい」であれば、これがいちばん短い道になる。
同じサイトを2つのプロファイルから入れると、同じ名前と同じアイコンのアプリが2つ並び、Dockでは見分けがつかない。入れた直後にFinderで名前を変えておくと後で困らない。
Chrome BetaやCanaryを2つ目に使う
Chrome BetaとChrome Canaryは別々の束としてインストールされ、データ領域も分かれる。そのためDockのアイコン、Command+Tabの枠、通知の身元がすべて独立する。代わりに更新すべきブラウザが増え、ログインをやり直すことになり、正式版より前のコードを日常のアカウントで動かすことになる。重要度の低いほうのアカウントを別チャンネルに寄せる使い方であれば、この危うさは小さく抑えられる。
窓を単位にするブラウザに寄せる
最後の選択肢は、整理の単位そのものを変えるものになる。1つのブラウザが多数のプロファイルを抱えるのではなく、Webアプリ1つずつに窓とアイコンと切り替え枠を持たせる形である。ランチャーを作るより大きな変更になるので、困りごとが起動ではなかった場合にだけ意味がある。
Automatorでランチャーを作る手順
Automatorを開き、新規書類で「ワークフロー」ではなく「アプリケーション」を選ぶ。アクションの一覧から「シェルスクリプトを実行」を探して右側の空欄にドラッグし、シェルを/bin/zshにして、サンプルの文字列を消して次の1行に置き換える。フォルダ名の部分は先ほど調べた値にする。
open -na "/Applications/Google Chrome.app" --args --profile-directory="Profile 17"
保存先は/Applicationsにして、どのアカウントを開くのかが分かる名前を付ける。アイコンを変えたいときは、画像をクリップボードにコピーし、Finderでそのアプリを選んで「情報を見る」を開き、左上の小さなアイコンを選択して貼り付ける。あとはDockの左側、アプリを置く区画にドラッグすれば完成する。2つ目以降は、コマンド内のフォルダ名と保存名を変えるだけなので1分ほどで増やせる。
つまずきの大半は-nの書き忘れによる。
-n Open a new instance of the application(s) even if one is already running.
出典: macOS の open(1) マニュアルページ
この指定がないと、Chromeがすでに起動している状態では要求が既存のプロセスに渡され、--args以降が捨てられる。コマンドは成功したように見えて、実際には前面にあったプロファイルの窓がもう1枚開くだけになる。行の末尾にURLを足せば、そのプロファイルで特定の画面を直接開くこともできるので、朝いちばんに見る管理画面を割り当てておくと押す回数が減る。
ランチャーで直らないこと
このやり方が解決するのは起動であって、切り替えではない。この2つは体感が似ているため混同されやすいが、直せる層が違う。
窓が開いたあとの挙動は通常のChromeに戻る。Command+Tabに出るChromeは1つのままで、Mission Controlはすべてのプロファイルの窓を同じ塊にまとめる。通知はどのアカウントのものもChromeからの通知として扱われるので、Dockのバッジは「どこかで何かが起きた」以上のことを伝えない。さらに起動時の設定が「前回開いていたページを開く」になっていると、その日の1回目の起動で複数のプロファイルの窓が一斉に復元され、引数が効くのは新しく開く窓だけになる。
作る前に試す価値のある確認がある。1日の中で、閉じたブラウザを起動する動作が何回あり、すでに開いている窓を他の窓の裏から探す動作が何回あるかを数えることである。GmailとSlackとNotionと案件管理を開きっぱなしにしている人は、起動は朝の1回だけで、残りはすべて窓探しになりやすい。後者が多い場合、Dockのランチャーはその時間を減らさない。
もう1つ、数週間経ってから出てくる制限がある。ランチャーはmacOSから見れば普通のアプリなので、ログイン項目に登録すれば起動時に自動で走る。ただし3つ登録すると起動直後に3つのChromeセッションが同時に復元され、ネットワークが整う前に読み込みが始まる。登録するなら1つずつ足して、再起動直後の1分間に何が起きるかを見てから増やすほうがよい。
窓の分け方から見直すという選択
プロファイルは身元を分けるための仕組みであり、その役目は十分に果たしている。一方で、注意を配る先を整理するために設計されたものではない。10個近いWebアプリが1つのアイコンの裏に積まれると、費用がかかるのは開く動作ではなく、どの窓に目的のものが入っているかを毎回探し直す動作のほうになる。
別の形として、Webアプリごとに窓とアイコンと通知の身元を持たせるやり方がある。バッジを見た瞬間に「どのブラウザか」ではなく「どのサービスか」が分かるので、探す動作そのものが減る。アプリごとに独立したワークスペースという考え方は、アカウント単位ではなく作業単位で窓をまとめ直すもので、その仕組みはワークスペースで説明されている。毎日使っているサービスがその形で開けるかどうかは、対応済みのサービスを並べた使えるアプリで確かめられる。
移る前に見ておくべき損得もはっきりしている。更新とログインとセッションCookieを預ける先が1つ増える。拡張機能が同じようには動かないことがある。窓を閉じずに置いておく使い方になるため、メモリの使用量は増える。この種の道具は月額の有無や対応OSで性格が変わるので、料金体系まで含めて別の製品と並べたWaveboxとの比較のような資料を先に読み、条件が合うかどうかを見てから決めるのが早い。
Dockのランチャーは10分で作れて、失敗しても捨てるだけで済む。まずは最もよく開くプロファイルで1つ作り、1週間使って、困りごとが起動から窓探しへ移ったかどうかを見る。移っていたなら、直すべき層は起動ではなく窓の持ち方のほうにある。
よくある質問
Chromeの設定だけでプロファイルごとのDockアイコンを作れますか?
macOSではできません。プロファイルごとのショートカットを作る設定はWindows版にあるもので、macOSのDockはコマンドラインではなくアプリの束を固定する仕組みのため、同等の項目が用意されていません。Automatorで小さなアプリを作るか、ページをアプリとしてインストールする方法で代用します。
ランチャーを作ったのに違うアカウントが開きます。原因は?
大半は2つのどちらかです。--profile-directoryに渡した値が表示名になっていてフォルダ名ではない場合と、openに-nを付け忘れている場合です。後者ではすでに起動中のChromeに要求が渡り、引数が捨てられます。chrome://versionでフォルダ名を確認し、コマンドがopen -naで始まっているかを見てください。
Dockに置いたランチャーはCommand+Tabでも別扱いになりますか?
なりません。ランチャーはChromeを起動した時点で終了し、開いた窓は1つのChromeに属したままだからです。Command+Tabで分けたい場合は、ページをアプリとしてインストールする、Chromeの別チャンネルを使う、窓を単位にするブラウザを使うなど、実体が別のアプリになる方法が要ります。
Google Chrome.appを複製して2つ目のアイコンにしてもよいですか?
おすすめしません。複製した束は自動更新の仕組みが働かなくなり、署名の検証に影響する場合があります。さらに--user-data-dirを別に指定しない限り同じデータ領域を見にいき、指定すれば同期やキーチェーンからは新しい環境として扱われます。同じ目的なら、Chrome BetaやCanaryを使うほうが公式に用意された道になります。