Chromium: Difference between revisions
m Add the tvar tag to the external links that were overlooked. |
Juangiordana (talk | contribs) Add support for Brave Browser in Profile Sync daemon |
||
| Line 178: | Line 178: | ||
}; | }; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<languages/> | |||
<translate> | |||
== Installation == <!--T:1--> | |||
=== NixOS === <!--T:2--> | |||
<!--T:3--> | |||
Add <tvar name="chromium_package">{{nixos:package|chromium}}</tvar> to <tvar name="systemPackages">{{NixOS Manual|name=systemPackages|anchor=#sec-package-management}}</tvar>. | |||
== Updating browser policies == <!--T:4--> | |||
<!--T:5--> | |||
In Chromium, policy settings are accessible via <tvar name="chrome_policy_link">{{Ic|chrome://policy}}</tvar>. They allow the user to change enterprise policies affecting things like | |||
<!--T:6--> | |||
* Creating webapps when the browser is installed | |||
* Finding and downloading browser extensions automatically | |||
* Enabling or disabling the dinosaur game when the device is offline | |||
* Disable screenshots to be taken with browser extensions | |||
* Block all downloads from the browser (if you want to do that for some reason) | |||
* and more! | |||
<!--T:7--> | |||
A full list of policies can be found at [<tvar name=1>https://chromeenterprise.google/policies/</tvar> Chrome Enterprise Policy List & Management]. | |||
=== Natively Supported Policies === <!--T:8--> | |||
<!--T:9--> | |||
By default NixOS provides a few policies that can be enabled directly, a simple example is given below to understand how these are implemented | |||
</translate> | |||
<syntaxhighlight lang="nixos" line="1"> programs.chromium = { | |||
enable = true; | |||
homepageLocation = "https://www.startpage.com/"; | |||
extensions = [ | |||
"eimadpbcbfnmbkopoojfekhnkhdbieeh;https://clients2.google.com/service/update2/crx" # dark reader | |||
"aapbdbdomjkkjkaonfhkkikfgjllcleb;https://clients2.google.com/service/update2/crx" # google translate | |||
]; | |||
extraOpts = { | |||
"WebAppInstallForceList" = [ | |||
{ | |||
"custom_name" = "Youtube"; | |||
"create_desktop_shortcut" = false; | |||
"default_launch_container" = "window"; | |||
"url" = "https://youtube.com"; | |||
} | |||
]; | |||
}; | |||
};</syntaxhighlight> | |||
<translate> | |||
<!--T:10--> | |||
* <tvar name="homepageLocation">{{Ic|homepageLocation}}</tvar> option allows you to set the site that the homepage will open on | |||
* <tvar name="extensions">{{Ic|extensions}}</tvar> allows for the download of extensions directly in the browser through a simple list of the extension ID's that can be obtained from the [<tvar name="1">https://chromewebstore.google.com/</tvar> Chrome Web Store] by opening an extension page and copying the last part of the URL | |||
** In the example however there is another component, the download source from which the extensions will be downloaded | |||
** The URL provided in the list is the link that is used by google for managing, checking and updating extensions | |||
** So the method of just placing the extension ID can work like this: <tvar name="ext_id">{{Ic|"fnpbehpgglbfnpimkachnpnecjncndgm"}}</tvar> | |||
** But just in case that method does not automatically function the second method is shown above, where you place <tvar name="symbol">{{Ic|;}}</tvar> and then the URL <tvar name="url">{{Ic|https //clients2.google.com/service/update2/crx}}</tvar> to explicitly tell NixOS where to install the extension from | |||
* There are many more options that are natively supported and you can learn about them through <tvar name="command">{{Ic|man configuration.nix}}</tvar> | |||
* But as shown above there is also an <tvar name="extraOpts">{{Ic|extraOpts}}</tvar> option and that is used for policies that are not supported for direct setup, such as the policy to install web-apps | |||
=== Non-natively Supported Policies === <!--T:11--> | |||
<!--T:12--> | |||
There are hundreds of policies in Chromium based browsers, and not all have direct methods to set them. The <tvar name="extraOpts">{{Ic|extraOpts}}</tvar> option allows for the declaration of all the other policies. | |||
<!--T:13--> | |||
There is no single place to find all Chromium policies, but these are some places to look; | |||
<!--T:14--> | |||
* Commonly used policies are present and documented within {{Ic|man configuration.nix}} under {{Ic|programs.chromium}}. | |||
* You can navigate to <tvar name="chrome_policy_link">{{Ic|chrome://policy}}</tvar> and enable "Show policies with no value set" to see all available keys. Clicking a policy name opens its specific definition and usage details. | |||
* The most up to date policies for Chromium are available in the [<tvar name="1">https://source.chromium.org/chromium/chromium/src/+/main:chrome/common/pref_names.h</tvar> source code.] | |||
== Accelerated video playback == <!--T:15--> | |||
<!--T:16--> | |||
Make sure [[<tvar name="1">Special:MyLanguage/Accelerated Video Playback</tvar>|Accelerated Video Playback]] is setup on the system properly. Check <tvar name="chrome_gpu_link">{{ic|chrome://gpu}}</tvar> to see if Chromium has enabled hardware acceleration. | |||
<!--T:17--> | |||
If accelerated video playback is not working, check relevant flags at <tvar name="chrome_flags_link">{{ic|chrome://flags}}</tvar>, or enable them using the CLI: | |||
</translate> | |||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | |||
{ | |||
environment.systemPackages = with pkgs; [ | |||
(chromium.override { | |||
commandLineArgs = [ | |||
"--enable-features=AcceleratedVideoEncoder" | |||
"--ignore-gpu-blocklist" | |||
"--enable-zero-copy" | |||
]; | |||
}) | |||
]; | |||
} | |||
</nowiki>}} | |||
<translate> | |||
<!--T:18--> | |||
In some cases, <tvar name="chrome_gpu_link">{{ic|chrome://gpu}}</tvar> will show Video Decode as enabled, but Video Acceleration Information as blank, with <tvar name="chrome_media_link">{{ic|chrome://media-internals}}</tvar> using the FFmpeg Video Decoder (software decoding). If this happens, try to enable the following features: | |||
</translate> | |||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | |||
{ | |||
environment.systemPackages = with pkgs; [ | |||
(chromium.override { | |||
commandLineArgs = [ | |||
"--enable-features=AcceleratedVideoEncoder,VaapiOnNvidiaGPUs,VaapiIgnoreDriverChecks,Vulkan,DefaultANGLEVulkan,VulkanFromANGLE" | |||
"--enable-features=VaapiIgnoreDriverChecks,VaapiVideoDecoder,PlatformHEVCDecoderSupport" | |||
"--enable-features=UseMultiPlaneFormatForHardwareVideo" | |||
"--ignore-gpu-blocklist" | |||
"--enable-zero-copy" | |||
]; | |||
}) | |||
]; | |||
} | |||
</nowiki>}} | |||
<translate> | |||
== Enabling native Wayland support == <!--T:19--> | |||
<!--T:20--> | |||
You can enable native Wayland support in all Chromium based and most Electron apps by setting the `NIXOS_OZONE_WL` environment variable to `1`. | |||
== Enabling DRM (Widevine support) == <!--T:21--> | |||
<!--T:22--> | |||
By default, <tvar name="chromium_package">{{nixos:package|chromium}}</tvar> does not support playing DRM protected media. However, there is a build time flag to include the proprietary Widevine blob from Nixpkgs: | |||
</translate> | |||
{{file|/etc/nixos/configuration.nix|nix|<nowiki> | |||
{ | |||
environment.systemPackages = with pkgs; [ | |||
(chromium.override { enableWideVine = true; }) | |||
]; | |||
} | |||
</nowiki>}} | |||
<translate> | |||
== KeePassXC support in Flatpak == <!--T:23--> | |||
<!--T:24--> | |||
To enable browser integration between KeePassXC and Chromium-based browsers when running in Flatpak, configure the following filesystem access: | |||
</translate> | |||
<syntaxhighlight lang="toml"># NativeMessagingHost directory (browser-specific) | |||
# Brave Browser | |||
xdg-config/BraveSoftware/Brave-Browser/NativeMessagingHosts:ro | |||
# Chromium | |||
xdg-config/chromium/NativeMessagingHosts:ro | |||
# Google Chrome | |||
xdg-config/google-chrome/NativeMessagingHosts:ro | |||
# KeePassXC server socket and Nix store | |||
xdg-run/app/org.keepassxc.KeePassXC/org.keepassxc.KeePassXC.BrowserServer | |||
/nix/store:ro | |||
</syntaxhighlight> | |||
<translate> | |||
== Using libc memory allocator == <!--T:25--> | |||
<!--T:26--> | |||
Chromium may not work when an alternative system-wide memory allocator like scudo is used. To use libc on Chromium, the following firejail wrap is required: | |||
</translate> | |||
<syntaxhighlight lang="nix"> | |||
programs.firejail = { | |||
enable = true; | |||
wrappedBinaries = { | |||
chromium = { | |||
executable = "${pkgs.chromium}/bin/chromium-browser"; | |||
profile = "${pkgs.firejail}/etc/firejail/chromium-browser.profile"; | |||
extraArgs = [ | |||
"--blacklist=/etc/ld-nix.so.preload" | |||
]; | |||
}; | |||
}; | |||
}; | |||
</syntaxhighlight> | |||
== Add support for Brave Browser in Profile Sync daemon == | |||
Adding Brave Browser support to Profile Sync daemon can be automated with an overlay. | |||
<syntaxhighlight lang="nix"> | |||
# /etc/nixos/configuration.nix | |||
{ | |||
nixpkgs = { | |||
overlays = [ | |||
(final: prev: { | |||
profile-sync-daemon = prev.profile-sync-daemon.overrideAttrs (oldAttrs: { | |||
installPhase = | |||
oldAttrs.installPhase | |||
+ '' | |||
cp $out/share/psd/{contrib,browsers}/brave | |||
''; | |||
}); | |||
}) | |||
]; | |||
}; | |||
# Enable the Profile Sync daemon service. | |||
services.psd.enable = true; | |||
} | |||
</syntaxhighlight> | |||
[[Category:Applications]] | |||
[[Category:Web Browser{{#translation:}}]] | |||
[[Category:Applications]] | [[Category:Applications]] | ||
[[Category:Web Browser{{#translation:}}]] | [[Category:Web Browser{{#translation:}}]] | ||