在 NixOS 上使用原生 Wayland 后端运行 Chromium


NixOS logo NixOS logo

提示:在最新版本的 NixOS 上,可以使用 environment.sessionVariables.NIXOS_OZONE_WL = "1" 设置来使基于 Chromium 的应用使用 Wayland 后端。如果想要使用输入法,你还要为 Chromium 添加 --enable-wayland-ime Flag。

如果你在使用早些版本的 NixOS,可参考本文。

警告:目前无法在 Wayland 模式运行的 Chromium 中输入中文。

当前版本的 Chromium 已经支持使用原生 Wayland 后端运行。在 NixOS 上,有两种实现的方式。

选项一:启用原生 Wayland 支持

可以通过设置特定命令行参数来启用 Chromium 的原生 Wayland 支持。将如下的代码加入 configuration.nix

1
nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland";

如果要让 Chromium 自动检测 Wayland 会话并以 Wayland 的方式运行,将如下的代码加入 configuration.nix

1
nixpkgs.config.chromium.commandLineArgs = "--ozone-platform-hint=auto";

选项二:覆写 Chromium 包

使用 Nixpkgs 的覆写(Override)功能,可改变软件包的配置。详见 Nixpkgs Manual Part I Chapter 4. Overriding

要启用 Chromium 的 Wayland 原生支持,将如下的代码加入 configuration.nix :

1
2
3
4
5
6
7
8
9
10

environment.systemPackages = with pkgs; [
(chromium.override {
commandLineArgs = [
"--enable-features=UseOzonePlatform"
"--ozone-platform=wayland"
];
})
];

如果要让 Chromium 自动检测 Wayland 会话并以 Wayland 的方式运行,将如下的代码加入 configuration.nix

1
2
3
4
5
6
7
8
9

environment.systemPackages = with pkgs; [
(chromium.override {
commandLineArgs = [
"--ozone-platform-hint=auto"
];
})
];

对于 Google Chrome 以及基于 Electron 的软件

提示:本文中提到的方式亦可用于 Chrome 和其他基于 Electron 的软件。Google Chrome 在 Nixpkgs 中的包名是 google-chrome 。可以到 search.nixos.org 查询软件包的包名。