Chienomi

ウェブブラウザ (とVSCode等) のコマンドラインオプション

Live With Linux::software

WindowsやMacではなかなかウェブブラウザをコマンド起動するというのは楽ではないが、Linuxの場合は(普通の環境なら)簡単に起動できる。 このため、コマンドラインオプションを使って色々と制御が効き、使いどころが増える。

My Browser Profile Chooserはそれを利用したものだ。 設定としてオプションを追加できるため、なおさら利用しやすい。

このツールを作るためにウェブブラウザのコマンドラインオプションの確認を結構行ったため、今更だが、その知見を共有しよう。 ヘルプには出てこないオプションも多い。

ウェブブラウザ

Chromium / Google Chrome, e.t.c.

基本的にはVivaldi, Opera, Brave, SRWare Ironなどにも機能するが、Braveは機能しないものもちらほらあったりする。

ほぼ完全なリストはList of Chromium Command Line Switchesにある。

--user-data-dir=DIR

プロファイルディレクトリを指定する。 異なる複数の環境を併用することができる。

プロファイルディレクトリは固有のDBusを持ち、同一プロファイルディレクトリを指定した場合は同一インスタンスとして開かれ(同一ウィンドウに開かれるなど)、異なるプロファイルディレクトリが指定されたものは別のものとして扱われる。

指定されたディレクトリが$XDG_CONFIG_HOME以下のディレクトリである場合、キャッシュは$XDG_CACHE_HOMEの同様のパスの下に置かれる。

--incognio

プライベートブラウジングで起動する。

既にインスタンスが存在する場合はプライベートウィンドウが開かれ、存在しない場合は最初からプライベートブラウジングで起動される。

--new-window

同一インスタンスが既に存在する場合に、タブではなくウィンドウで開く。

--incognitoと併用すると新しいプライベートウィンドウとして開かれる。

--proxy-server=host:port

具体的なプロキシサーバーをコマンドラインオプションで指定する。

これは、ブラウザの設定、システムのプロキシ、環境変数($http_proxy, $https_proxy, $ftp_proxy, $SOCKS_SERVER)を上書きする。

この設定はインスタンス起動時にしか機能しないため、既にインスタンスが存在する状態で特定のページだけプロキシを介してアクセスするために使うようなことはできない。 このため、使いどころはあまりない。状況によってプロキシがころころ変わるような場合は、プロキシ設定を行うスクリプトと組み合わせることで設定を楽にできるくらいだろうか。

--no-proxy-server

ブラウザの設定、システムのプロキシ、環境変数を上書きして、プロキシを無効にする。

「家からはプロキシを使うが、外では使わない」というような場合において、設定を触らずにプロキシを無効にできる。--proxy-server=よりもずっと使いどころが多い。

ちなみに、ホスト単位でプロキシ設定を無効にしたい場合は、$no_proxy環境変数が利用できる。例えば

export no_proxy=exmaple.com,192.168.0.0/24

とすれば、exmaple.com192.168.0.0/24の範囲にあるアドレスに対してプロキシを適用しない。 このような動作は--no-proxy-serverでは定義できない。

--password-store=<basic|gnome|kwallet>

使用するパスワード保存先をブラウザ内蔵, Gnome Keyring, Kwalletで選択する。 デフォルトはデスクトップ環境で選択される。

デスクトップ環境を使い分けていたり、意図した環境にならなかったり、あるいはi3やEnlightenment, Pantheonなどのデスクトップを使っている場合だったりに活躍する。

--force-dark-mode

ブラウザをダークモードで起動する。

これはブラウザ自体のテーマにも影響を与えるが、それ以上にCSSでprefers-color-schemeによるライト/ダークモードに対応したページ(Chienomiもそうである)において、ダークモードを強制するのに使える。 また、テーマ設定によってフォーム部品が白だけど白文字になるというような問題の解消になる場合もある。

逆の--force-light-modeというオプションはない。

Chromiumは非常に長い間、Linuxでデスクトップのダークモードを参照せず、ダークモードで使うことができなかったが、このオプションを使えば明示的にダークモードを利用できた。

現在はシステムのダークモードを検出するため、使いどころは少ない。

--disable-gpu

GPUアクセラレーションを無効にする。

これは、レンダリング時に使っているGPGPUを無効にするものである。 ブラウザの動作が不安定な場合に有用である可能性がある。

--kiosk

ページ以外の部品を何も表示せず、全画面で表示するキオスクモードで起動する。

このオプションは多くのChromiumベースのブラウザで動作しない。

--no-crash-upload

自動で送信されるクラッシュログを無効にする。

--no-first-run

初回起動時(アップデート後を含む)の画面を出さない。

--disable-smooth-scrolling

スムーズスクロールを無効にする。

通常、マウスホイールによるスクロールは3行分下げるが、デフォルトでこの3行をなめらかにスクロールするスムーズスクロールが有効になっている。 これを無効にすると3行ずつジャンプするようになる。

Firefox

FirefoxはChromiumのようにコマンドラインから細かなコントロールはできない。

このコマンドは基本的には、SeaMonkeyやWaterfoxでも動作する。

-P <profile>

プロファイルを指定する。

これは、Firefoxの機能として持っているプロファイルである。

プロファイルは省略可能で、省略した場合、プロファイルマネージャを表示する。 これは、--ProfileManagerと同じ挙動である。

--profile <path>

プロファイルディレクトリを指定する。

Chromiumと同じような挙動になるが、このオプションでは同一インスタンスの判定がいまいちうまくいかず、意図した動作にならないことがある。

また、<path>は存在していなければならない。

--private-window

プライベートウィンドウで起動する。

URLを与えた場合、既存のインスタンスのプライベートウィンドウとしても起動できる。

--new-window

同一インスタンスの場合、新しいウィンドウで表示する。

--new-tab

同一インスタンスの場合、新しいタブで表示する。

--new-instance

別のインスタンスとして起動する。

さらにリモートコマンドを発行する場合、かなりややこしい動作をする。

--kiosk

ページ以外の部品を何も表示せず、全画面で表示するキオスクモードで起動する。

Falkon

Chromiumに由来するQtWebEngineを利用するFalkonだが、オプションはFirefoxに近い。

-p <profileName>

プロファイルを指定する。

同一プロファイルが同一インスタンスになる。

-t

同一インスタンスのタブで開く。

-w

別インスタンスのウィンドウとして開く。

-i

プライベートブラウジングで開く。

-c <URL>

インスタンスの現在のタブを置き換える形でURLを開く。

-u <URL>

同一インスタンスのウィンドウで開く。

Otter Browser

--profile <path>

プロファイルディレクトリのパスを指定。 プロファイルの使い分けに利用できる。

キャッシュディレクトリは後述のように独立。

--cache <path>

キャッシュディレクトリを指定

--session <session>

指定したセッション名でスタート

セッションは終了と開始に関係し、終了時にセッションが保存され、同一セッションで開始するとそのセッションの終了時のタブが復元される。

--session-chooser

ブラウザ起動時のみ機能する。

セッションを選択するダイアログが出る。

--private-session

終了時に保存されないセッションで開始する。

--new-private-tab

現在のセッションにプライベートブラウジングでタブを開く

--new-tab

タブでURLを開く

--new-window

ウィンドウでURLを開く

Surf

-i

画像を無効にする。

-g

位置情報を無効にする。

-s

JavaScriptを無効にする。

SurfはそもそもJavaScriptはあまり動かないけれど、逆にJavaScriptをサポートしているせいで(noscriptタグが機能しないなどの理由で)うまく閲覧できない場合に利用することが多い。

-k, -K

キオスクモードに関するオプションだけど、恐らく機能しない。

-u <useragent>

ユーザーエージェントを指定する。

超マイナーブラウザにとっては割と助かる機能。

-z <zoomlevel>

zoomlevel倍のズームで表示する。小数が使える。

Weaver

Weaverは非常に特殊で、//command/arg形式の引数がオプションになる。 詳細はこちら

//target/<index>

<index>はブラウザのIDになる。整数値。デフォルトは0で、0が指定した場合、新しいターゲットが生成される。

//list/[<format>]

既存のターゲットを一覧する。

//profile/<name>

プロファイル<name>を使用する。

//incognito/

プライベートブラウジング。

//close/

ターゲットを閉じる。

//open/

ターゲットでURLを開く。

//ua/<user-agent-string>

ユーザーエージェントを指定する。

Electronアプリ

Code OSS / VSCode

--user-data-dir DIR

Chromiumと似たオプションだけれど、Chromiumが--user-data-dir=形式でしか受け付けないのに対し、Codeは--user-data-dir DIR形式も受け付ける。

後述するように拡張機能はユーザーデータディレクトリの下にないため、こちらは設定を切り替えるためのもの。 拡張機能のインストール状況自体を分けたい場合は--extensions-dirの指定も必要。

--extensions-dir DIR

拡張機能を保存するディレクトリ。

--profile <profileName>

指定したプロファイルで起動する。

ヘルプだと非常に分かりにくいけれど、ブラウザのプロファイルと同じような概念。 単に設定を分けたいだけの場合、--user-data-dirを使うよりは--profileを使うほうが実用的。

--new-window

新しいウィンドウで開く。

ワークスペースまたはディレクトリが開かれた状態で単一ファイルを開くと、既存のウィンドウで開かれるが、これを分離できる。

--reuse-window

既存のウィンドウで開く。

既にウィンドウがある場合でも、ディレクトリを開くと新しいウィンドウで開くが、これを強制的に同一ウィンドウで開ける。 ただし、この目的では--add <folder>を使うほうが良い。

--diff <file> <file>

Codeのdiff機能を使う。

--merge <path1> <path2> <base> <result>

Codeの3way merge機能を使う。

--disable-gpu

Chromium同様、動作が不安定のためのもの。

--disable-extensions

すべての拡張機能を無効にする。

Atom (ng)

--fps

FPSカウンターを表示する。

ちなみに、ngは大幅に速くなっている。

環境変数

設定ファイルはコマンドラインオプションではなく、$ATOM_HOME環境変数で設定して使い分けることができる。

Skype

以前は有用なオプションが提供されていたが、既に削除されている。