Chromium

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Chromium and the translation is 100% complete.

Chromium は Google の Chrome Web ブラウザのオープンソース版です。最小限のユーザーインターフェースと、強力な Web 開発ツールと、組み込みのタスクマネージャを特徴としています。Chromium プロジェクトは新しい Web 標準を実装する最前線です。

Chromium はオープンソースなので、プロプライエタリな Google Chrome ブラウザにデフォルトで含まれるいくつかの機能は、法律上の理由で含めることができません。例えば自動アップデートです。差分の完全な一覧は chromium リポジトリで確認できます。

インストール

USE フラグ

USE flags for www-client/chromium Open-source version of Google Chrome web browser

X Add support for X11
bindist Flag to enable or disable options for prebuilt (GRP) packages (eg. due to licensing issues)
cups Add support for CUPS (Common Unix Printing System)
custom-cflags Build with user-specified CFLAGS (unsupported)
debug Enable DCHECK feature with severity configurable at runtime. Mostly intended for debugging and development, NOT RECOMMENDED for general use.
ffmpeg-chromium (binpkg only) Use Chromium FFmpeg fork (media-video/ffmpeg-chromium) rather than mainline FFmpeg (media-video/ffmpeg)
gtk4 Build with GTK4 headers.
hangouts Enable support for Google Hangouts features such as screen sharing
headless Build Ozone only with headless backend, NOT RECOMMENDED for general use.
kerberos Add kerberos support
libcxx Use bundled libc++ instead of libstdc++ for building.
lto Build with Link Time Optimizations (via clang's ThinLTO)
official Enable Official build instead of Developer build.
pax-kernel Allow building on a PaX-enabled kernel
pgo Build with Profile Guided Optimizations (2-stage compilation)
proprietary-codecs Enable codecs for patent-encumbered audio and video formats.
pulseaudio Add sound server support via media-libs/libpulse (may be PulseAudio or PipeWire)
qt5 Add support for the Qt 5 application and UI framework
qt6 Add support for the Qt 6 application and UI framework
screencast Enable support for remote desktop and screen cast using PipeWire
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
system-harfbuzz Use system media-libs/harfbuzz instead of the bundled library.
system-icu Use system dev-libs/icu instead of the bundled one
system-png Use system media-libs/libpng instead of the bundled library
system-toolchain Use system toolchain instead of the bundled one (if possible)
system-zstd Use system app-arch/zstd instead of the bundled one.
vaapi Enable Video Acceleration API for hardware decoding
wayland Enable dev-libs/wayland backend
widevine Unsupported closed-source DRM capability (required by Netflix VOD)

icu

重要
Chromium が emerge されるのを妨げる dev-libs/libxml2 との emerge スロット衝突を回避するには、/etc/portage/make.conficu USE フラグを設定する必要があります。icu が新たに設定された場合、Chromium を emerge する前に以下を実行してシステムを更新してください:

root #emerge --ask --update --deep --newuse @world

L10N

Chromium では L10N USE_EXPAND 変数を通して多くの言語を利用することができます。多すぎて wiki ではすべてを表示できません。すべての地域化言語を一覧表示するには、次を実行してください:

user $equery u www-client/chromium | grep -i l10n
メモ
equery ツールは app-portage/gentoolkit パッケージに含まれます。上のコマンドを使用するには、このパッケージがインストールされている必要があります。

地域化に関するさらなる情報については、地域化の記事を読んでください。

Emerge

ヒント
Chromium のコンパイルには、かなりの実時間と CPU 時間とシステムメモリを占有することに注意してください。make の各スレッドに対して 2Gb の RAM が割り当てられるようにしてください (MAKEOPTS を適切に設定することによって。こちらの投稿も参考にしてください)。システムに負荷がかかっている状態で Chromium をビルドするのは、おそらく止めておいたほうがよいでしょう。

USE フラグを望み通り設定したら、次のコマンドで Chromium を emerge してください:

root #emerge --ask www-client/chromium

設定

Clang

Clang で Chromium をビルドするには、まず Clang environments を読んでください。

Chromium に固有な事項として、次の env 設定が必要です:

ファイル /etc/portage/env/clang-chromium
# 任意で,以下を EXTRA_GN に追加してください:
# - thin_lto_enable_optimizations=true 
# - use_thin_lto=true
# - is_cfi=true 
EXTRA_GN="use_lld=true is_clang=true clang_use_chrome_plugins=false" 
#
# GCC11を用いる場合に必要です
CHROMIUM_FORCE_LIBCXX=yes

それからこれらを有効にしてください (他の記事に記載されている基本的な Clang の設定に、必要な設定を今定義したことに気をつけてください):

ファイル /etc/portage/package.env
# compiler-clang: 基本的なClang環境でビルド(Clangの記事を見てください)
# clang-chromium: Chromium用の調整を加えてビルド
www-client/chromium compiler-clang clang-chromium

HiDPI

Chromium の映像出力は通常、デスクトップ環境の DPI スケーリングとは独立しています。--force-device-scale-factor コマンドラインオプションを使用することで、スケールされたモードで起動するように指示することができます。このオプションには整数または小数の値を渡すことができます。標準のスケーリングは 1.0 で開始します。例えば、Chromium の UI を 1.5 倍の大きさにするには:

user $chromium --force-device-scale-factor=1.5

コマンドラインスイッチの一覧はここで見ることができます。

ネイティブ Wayland サポート

バージョン 87 以降、次のオプションを渡すことで Chromium のネイティブ Wayland サポートを有効化することができます:

user $chromium --enable-features=UseOzonePlatform --ozone-platform=wayland

Chromium を常に Wayland バックエンドを使用して起動するように設定するには、ユーザの Chromium 構成ファイルに以下の行を追加してください:

ファイル ~/.config/chromium-flags.conf
--enable-features=UseOzonePlatform
--ozone-platform=wayland

ページのためのダークテーマ (prefers-color-scheme) を有効化する

2022 年 5 月時点で、GTK 上の Chromium はバグのために、ユーザがダークページを表示したいことを認識しません。しかしこの好みは手動で設定することができます:

ファイル /etc/chromium/default
CHROMIUM_FLAGS="--force-dark-mode
--enable-features=WebUIDarkMode"

1 番目は通常のページのためのもので、2 番目は内部用 chrome:// ページのためのものです。

タブホバーカードを無効化する

バージョン 91.0.4472.77 以降、Chrome フラグ内でタブホバーカードを無効化することができなくなりました。Google はこの機能を復活させることを優先しないようです。無効化するために、Portage に以下のパッチを追加することができます:

ファイル /etc/portage/patches/www-client/chromium/hover-card.patch
diff --git a/chrome/browser/ui/views/tabs/tab_strip.cc b/chrome/browser/ui/views/tabs/tab_strip.cc
index 2c94eb0..1f7bde0 100644
--- a/chrome/browser/ui/views/tabs/tab_strip.cc
+++ b/chrome/browser/ui/views/tabs/tab_strip.cc
@@ -2149,6 +2149,7 @@ void TabStrip::OnMouseEventInTab(views::View* source,
 }
 
 void TabStrip::UpdateHoverCard(Tab* tab, HoverCardUpdateType update_type) {
+  return;
   // Some operations (including e.g. starting a drag) can cause the tab focus
   // to change at the same time as the tabstrip is starting to animate; the
   // hover card should not be visible at this time.

Added setting for Tab Hover Cards もご覧ください。

ポリシー

chromium では一定のポリシーを設定することができます。これは、ユーザーにブラウザーへアクセスさせる必要があるけれども、コンテンツは信頼できるサイトのみに制限したいような場合に特に有用です。また、例えばユーザーがファイルシステムを見て回ることを防ぐため、file:// プロトコルなどの特定の URI へのアクセスを制限するよう設定することもできます。

Chromium は既存のポリシーを /etc/chromium/policies から探します。定義できるポリシーには2種類あります:

  • managed
  • recommended

一般的に、managed ポリシーは管理者によって保守されており、ユーザーには recommended ポリシーが推奨されますが、必須ではありません。
2種類のポリシーについてのさらなる情報については Google Chrome のサポートページ を参照してください。

以下の例では managed ポリシーを想定しています。もっとも、recommended ポリシーも手順はよく似ており、Chromium のドキュメントに説明があります。

managed ポリシーの作成

カスタム managed ポリシーを設定するには、/etc/chromium/policies/managed/<filename>.json というJSON ファイルを作成する必要があります。

メモ
ポリシーをユーザーによって上書きされないように、<filename>.json を管理者以外のユーザーからは書き込みできないようにしておくことが重要です。さもないと、ポリシーの目的が破綻してしまいます! 何らかの事情によりファイルを管理者以外のユーザーからも書き込めるようにする必要がある場合は、chown(1)chmod(1) コマンドを使って所有者と権限を変更することができます。

JSON ファイルの構造は、全ての chromium ベースのブラウザ (Chrome, Chromium, Brave etc) と同じです。JSON ファイルの例は以下のようなものです:

コード
{
"IncognitoModeAvailability": 1,
"URLBlocklist": [
    "https://facebook.com",
    "file://*",
    "javascript://*",
    "ftp://*",
    "mailto:*"
],
"DefaultGeolocationSetting": 2,
"DefaultNotificationsSetting": 2,
}

これは、ユーザーが file プロトコルを使ってファイルシステムを閲覧すること、シークレットモードを使用することを防止し、また指定した URI や URL と位置情報や通知の使用を防止します。その他の設定例はポリシーリストにあります: https://www.chromium.org/administrators/policy-list-3/ 他のユーザーに対しサービスとして設定している場合には、サービスの悪用を防ぐため、まずすべてのサイトをブロックしてから、許可するサイトを定義することを推奨します。これは、ユーザーによる特定の場所の閲覧を防ぐものでしかないことを覚えておいてください。システム上のプロトコルを無効化するわけではないので、他のアプリケーションは別途設定する必要があります。

ポリシーが正しく設定されているかは、特別ページで確認できます: chrome://policy

よりよい構造にするために、ポリシーを複数の JSON ファイルに分割することもできます。この場合、必ず同じポリシーがすべてのファイルを通じて1回のみ出現するようにする必要があります! 複数の JSON ファイルにまたがってポリシーが複数回定義された場合、ポリシーの状態は未定義になり、どのルールが使用されるかは不定です。

このような誤設定を防ぐには、ファイル名に意味を持たせたり、ファイル群に対して単純な grep を行うことが有用です。

使い方

Chrome URL

Firefox と同じように、Chromium は追加の構成設定、トラブルシューティング、タスク管理、等々のために使用できる、内部 Chrome URL(特別ページ)を多数持っています。特別ページの完全な一覧は chrome://about/ に移動することでアクセスできます。

特によく使用される特別ページには次のようなものがあります:

  • chrome://components/ - 有効化されたコンポーネントを表示し、それぞれの更新を確認するためのボタンを提供します。Chrome を使用している場合、このインターフェースを介して手動で PPAPI Adobe flash モジュールを更新する必要がある場合があります。
  • chrome://chrome/ - バージョン情報を含む About ページを表示します。
  • chrome://extensions/ - 拡張機能を管理するページです。
  • chrome://flags/ - 実験的機能を有効化・無効化します。
  • chrome://flash/ - Adobe Flash Player に関する特別な情報を表示します(Chromium からアクセス可能な場合)。
  • chrome://gpu/ - グラフィックスアクセラレーションの使用に関する情報を表示します。
  • chrome://history/ - Web の履歴を表示します。サンドイッチメニューから、あるいは Ctrl+h を押すことでもアクセスできます。
  • chrome://memory-redirect/ - ブラウザのメモリ使用量とタブ毎の使用量を計測します。
  • chrome://net-internals/ - ネットワーク接続に関する多くの情報です。
  • chrome://plugins/ - プラグインの一覧を表示します。このインターフェースからプラグインを有効化・無効化できます。(Chrome バージョン 57 で旧式化されました[1]。)
  • chrome://version/ - chrome ページよりも詳細なバージョン情報を表示します。

トラブルシューティング

スクリーンキャストのサポート

スクリーンキャストはデフォルトでは実行時のレベルで無効化されています。Chromium 内で chrome://flags/#enable-webrtc-pipewire-capturer に移動して有効化するか、/etc/chromium/default ファイル内の CHROMIUM_FLAGS 変数の値として --enable-features=WebRTCPipeWireCapturer を追加してください。

タブがクラッシュする

時として Chromium のタブがクラッシュすることがあります。クラッシュの原因はいくつか考えられますが、よくある原因の一つはメモリの空き容量が少ない状態でシステムが動作していることです。Gentoo では特に、システムが Chromium を実行している状態で www-client/chromium のパッケージ更新をコンパイルしている場合に起こり得ます。

システムのメモリ空き容量を確認するには、free コマンドを使用できます:

user $free -h
              total        used        free      shared  buff/cache   available
Mem:            15G         11G        735M        789M        3.4G        3.1G

解決策は、大きなパッケージのコンパイルが完了するまでメモリを空けておくことです。リソースモニタを開き、メモリを大量に使用しているアプリケーションを終了させてください。

関連項目

  • Firefox — Mozilla's web browser.
  • Chrome — Google's proprietary (closed source) web browser.

参照