コマンドラインから新しいウィンドウで Chrome ブラウザを開きたい

Bash,Web

はじめに

Mac の open コマンド、便利ですね。

$ open "ファイルやURL"

というコマンドを実行すれば、テキストファイルであれば簡易なエディタが、URL であれば Chrome ブラウザが起動します。

ここで起動する Chrome ブラウザですが、すでに起動している Chrome ブラウザのウィンドウが存在していた場合、ページは新しい タブ として表示されます。

しかし、タブではなく ウィンドウ として起動したい場合にはどうしたら良いでしょうか?

検証環境

$ uname -moi
x86_64 MacBookPro16,1 Darwin

$ "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --version
Google Chrome 92.0.4515.159

open "URL" で起動するアプリケーションの実態

例えば open "https://google.jp" コマンドが実行されたときに起動する Chrome ブラウザアプリケーションの実態はどこにあるでしょうか?

Mac 環境に限って言えばこれは "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" というアプリケーションになります。

ですので、以下のコマンドを実行しても同じ結果となります。

$ "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" https://google.jp

Chrome アプリケーション起動時の新規ウィンドウ起動オプション

Chorme アプリケーション起動の際に --new-window オプションを指定し、新規ウィンドウの起動を強制することができます。

$ "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --new-window https://google.jp

open コマンドを使う場合も --new-window オプションを使う

Chrome アプリケーションを --new-window オプション付きで呼び出すことでタブではなくウィンドウで起動することができました。

今度は open コマンドで新しいウィンドウの起動を実現する方法について紹介します。

open コマンドには、起動されるアプリケーションにコマンドライン引数をリレーするための --args オプションが用意されています。
これを利用します。

$ open -na "Google Chrome" --args --new-window "https://google.jp"

-na "Google Chrome" というオプションは、 "Google Chrome" アプリケーションを呼び出すというオプションです。
--args オプションを利用する場合は、 -na によるアプリケーションの指定が必須となるようです。

alias 化する

もっとかんたんに Chrome ブラウザを呼び出せるように alias を設定しておくと便利です。

$ alias chrome='open -na "Google Chrome" --args'

以下のように使います。

# 普通にページ表示。
# すでにブラウザが起動していた場合には、該当ウィンドウの新しいタブとして表示
$ chrome https://google.jp

# ページ表示。
# すでにブラウザが起動していた場合は、新しいウィンドウとして起動
$ chrome https://google.jp --new-window

ひとこと

話は変わりますが、インタラクティブな操作時、
例えばなにかのコマンド実行の結果、ターミナル上に URL が表示された場合は、以下のコマンドを使って URL を開くことが多いです。

TMUX が導入されている ことが前提となりますが。

Bash,Web