Chromium

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Chromium and the translation is 56% complete.
Outdated translations are marked like this.

Chromium är en variant av Googles webbläsare Chrome med en öppen källa. Den har ett minimalt gränssnitt, kraftfulla webbutvecklingsverktyg och en inbyggd aktivitetshanterare. Chromium-projektet är på framkanten vad gäller genomförandet av nya webbstandarder.

Eftersom Chromium är av öppen källkod får den juridiskt sätt inte omfatta många funktioner som den proprietära Google Chrome-webbläsaren innehåller som standard, det vill säga automatiska uppdateringar. En komplett lista med skillnader kan hittas i Chromium-förvaret.

Installation

USE-flaggor

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

X Add support for X11
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.
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

Important
För att undvika emerge slot-konflikter med dev-libs/libxml2, som förhindrar Chromium att emergas, måste icu USE-flaggan ställas in i /etc/portage/make.conf. Om icu nyligen inställts, uppdatera systemet innan du emergar Chromium med hjälp av följande:

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

L10N

Det finns många tillgängliga språk via Chromiums L10N USE_EXPAND-variabel. Så många, att wikin faktiskt inte kan visa upp alla. För en fullständig lista med lokaliseringsspråk, kör:

user $equery u www-client/chromium | grep -i l10n
Note
equery-verktygen kommer som en del av app-portage/gentoolkit-paketet. För att kunna använda kommandot ovan behöver det paketet vara installerat.

För mer information gällande lokalisering, se Localization article-artikeln.

Emerge

Tip
Var medveten om att kompilering av Chromium kan kräva mycket tid, CPU-kraft, och system minne. Tillhandahåll 2 GB system minne per make-tråd (som definieras av MAKEOPTS, se det här inlägget). Att kompilera Chromium medan systemet är under tung belastning är förmodligen inte en bra idé.

Efter att önskade USE-flaggor är inställda, emerge Chromium med kommandot nedan:

root #emerge --ask www-client/chromium

Konfiguration

Clang

För att kompilera Chromium med Clang, se först Clang#Clang_environments.

För specifikt Chromium behövs följande env-inställningar:

FILE /etc/portage/env/clang-chromium
# Om så önskas, lägg till dessa i 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" 
#
# Behövs för GCC 11 
CHROMIUM_FORCE_LIBCXX=yes

Därefter, aktivera det (notera att vi tar baskonfigurationen från den andra artikeln, sedan lägger till inställningarna vi nyss definerade):

FILE /etc/portage/package.env
# compiler-clang: kompilera med en allmänn Clang-miljö (se Clang-artikeln)
# clang-chromium: kompilera med modifieringar anpassade för Chromium
www-client/chromium compiler-clang clang-chromium
FILE /etc/portage/package.env
# compiler-clang: build with a general Clang environment (see Clang article)
# clang-chromium: build with tweaks specifically for Chromium
www-client/chromium compiler-clang clang-chromium

HiDPI

Chromiums visuella output är i regel frånkopplad från en skrivbordsmiljös DPI-proportion. Den kan instrueras att starta i ett proportionerat läge genom att använda alternativet --force-device-scale-factor. Detta alternativ kan ta emot ett heltals- eller decimalvärde. Vanlig proportionalitet börjar på 1,0. För att till exempel förstora Chromiums gränssnitt med 1,5 gånger:

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

En fullständig lista med alternativ kan hittas här.

Gediget stöd för Wayland

Sedan version 87 kan gediget stöd för Wayland i Chromium åstadkommas genom att medföra följande alternativ:

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

För att starta Chromium med Waylands backend varje gång, lägg till följande rader i användarens konfigurationsfil:

FILE ~/.config/chromium-flags.conf
--enable-features=UseOzonePlatform
--ozone-platform=wayland

Enable dark theme for pages (prefers-color-scheme)

Because of bug in May 2022 Chromium on GTK do not understand that user want to see dark pages. But you can set this preference manually:

FILE /etc/chromium/default
CHROMIUM_FLAGS="--force-dark-mode
--enable-features=WebUIDarkMode"

First is for regular pages, the second is for internal chrome:// pages.

Inaktivera tab hover-kort

Sedan version 91.0.4472.77 är det inte längre möjligt att inaktivera tab hover-kort med Chromes flaggor. Det verkar inte finnas någon prioritet att återinföra denna funktion hos Google. För att inaktivera dem kan du ge Portage denna patch:

FILE /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;
   // En del operationer (inklusive exempelvis starta ett drag) kan göra att
   // tabbens fokus ändras samtidgt som flikremsan börjar animera; 
   // hover-kortet borde inte synas just då.

Se även Tillagd inställning för tab hover-kort.

Policies

It is possible to set specific policies for chromium. This can be useful especially if the browser should be accessible by users, but the content should be restricted to trusted sites. It can also be configured to restrict the access to specified URIs, like the file:// protocol, to prevent users from surfing the file system.

Chromium looks in /etc/chromium/policies for existing policies. There are two types of policies which can be defined:

  • managed
  • recommended

Generally managed policies are maintained by an administrator and recommended policies are recommended for users but not required.
For further information about the two policy types the documentation should be referred on the Google Chrome support page.

The following example assumes managed policies. However, the procedure for recommended policies is very similar and can be found in the Chromium documentation.

Creating of managed policies

To set custom managed policies, a JSON file must be created in /etc/chromium/policies/managed/<filename>.json

Note
It is important to ensure, that the <filename>.json is not writable by non-admin users, to prevent overwriting of the policies by users, which would defeat the purpose of policies! The chown(1) and chmod(1) commands can be used to change ownership and rights if for any reason the file should be writable by non-admin users.

The structure of the JSON file is the same for all chromium based browsers (Chrome, Chromium, Brave etc). An example JSON file could look like this:

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

This prevents the user from surfing on the file system using the file protocol, incognito mode, blocks the listed URIs and URLs, and the location and notifications. More settings, can be found in the policy list: https://www.chromium.org/administrators/policy-list-3/. If configured for other users as a service, it is recommended to block all sites at first and then define the allowed sites, to avoid abuse of the service. Please note that this only blocks the user from visiting specified locations. It does not disable the protocols on the system, so other applications must be configured separately.

If the policy was configured properly can be proofed on the special page: chrome://policy.

For a better structure, it is also possible to spread the policies over multiple JSON files. In this case it is indispensable to ensure that the same policy occurs only once per all files! If a policy is defined multiple times across the JSON files than the state of the policy will be undefined and it would be unclear which rule would be used!

Meaningful filenames and a simple grep across the files in case of doubt can help to prevent such misconfigurations.

Användning

Chrome URL:er

Liksom Firefox har Chromium många interna Chrome-URL:er (specialsidor) som används för utökad konfiguration, felsökande, uppgiftshantering osv. En uttömmande lista med specialsidor kan nås på chrome://about/.

Centrala specialsidor:

  • chrome://components/ - visar aktiverade komponenter och en knapp för att leta efter uppdateringar för respektive komponent. Ibland kan det vara nödvändigt att för hand uppdatera PPAPI Adobe Flash-modulen genom det här gränssnittet när man använder Chrome.
  • chrome://chrome/ - visar Om sidan, vilket inkluderar versionsnummer.
  • chrome://extensions/ - en sida för att hantera tillägg.
  • chrome://flags/ - aktivera/inaktivera experimentella funktioner.
  • chrome://flash/ - visar särskilld information om Adobe Flash Player (om så tillgänglig för Chromium).
  • chrome://gpu/ - visar information vad gällande användning av grafikacceleration.
  • chrome://history/ - visar webbhistorik. Även tillgänglig genom hamburgarmenyn eller genom att trycka på Ctrl+h.
  • chrome://memory-redirect/ - mät minnesanvändning, både av webbläsaren och enskilda tabbar.
  • chrome://net-internals/ - massor av information gällande nätverkskopplingar.
  • chrome://plugins/ - visar en lista av tillägg. Aktivera/inaktivera dem genom det här gränssnittet. (Utfasat sedan Chrome version 57[1].)
  • chrome://version/ - visar mer information än chrome-sidan.

Felsökning

Screencast support

Screencast is disabled by default at runtime. Either enable it by navigating to chrome://flags/#enable-webrtc-pipewire-capturer inside Chromium or add --enable-features=WebRTCPipeWireCapturer as a value to the CHROMIUM_FLAGS variable in the /etc/chromium/default file.

Tabbar crashar

Emellanåt crashar tabbar i Chromium. Det kan finnas många orsaker till detta, dock är brist på system minne den mest förekommande orsaken. Det här kan framförallt hända i Gentoo om man kompilerar en www-client/chromium-uppdatering samtidigt som Chromium körs.

free-kommandot kan användas för att se mängden tillgängligt minne:

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

Lösningen är att frigöra minne tills kompileringen slutförs. Öppna en resursövervakare och avsluta processer som använder stora mängder av minnet.

Se även

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

Referenser