ウェブブラウザ (とVSCode等) のコマンドラインオプション
Live With Linux::software
- TOP
- Articles
- Live With Linux
- ウェブブラウザ (とVSCode等) のコマンドラインオプション
序
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.com
と192.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
以前は有用なオプションが提供されていたが、既に削除されている。