Sway
Sway(缩写自 SirCmpwn 的 Wayland 合成器[1])是一款专为Wayland设计的合成器,旨在与i3完全兼容。根据官网显示:
- Sway 是Wayland的合成器,也是 x11 的 i3 窗口管理器的替代品。它可以与您现有的 i3 配置一起工作,并支持 i3 的大部分特性以及一些附加功能
安装[编辑 | 编辑源代码]
Sway 可以通过 sway包 包来进行安装。也可以使用 sway-gitAUR 安装开发版本。由于依赖关系紧密,建议在更新 sway 时始终更新 wlroots。
--unsupported-gpu
参数去运行。还可以安装 swaylock包 和 swayidle包 来锁定屏幕并设置 idle 管理。
默认的应用程序启动器为 dmenu包,默认的终端模拟器是 foot包。在启动 sway 之前,建议安装它们或在配置中设置新的启动器和终端。
启动[编辑 | 编辑源代码]
在启动 Sway 之前,它需要访问你的硬件设备,如键盘、鼠标和图形卡。这些硬件设备的集合称为一个 seat,就如 sd-login(3)中所述.
在 Arch Linux 上,Sway 可以使用以下任一方式访问您的 seat。
- systemd-logind(8) 和 polkit包, 或者
- seatd包,将作为 wlroots包的依赖包与Sway一起安装
如果 polkit
已安装在你的系统上, Sway 应会自动访问你的seat。
又或者,如果 polkit
没有安装在你的系统上并且你想使用 seatd
来替代请将你自己添加到这个seat
用户组并且开机自启和启动 seatd.service
,重新登录并选择以下方法之一来启动 Sway。
手动登录[编辑 | 编辑源代码]
要启动 Sway,只需在 Linux 终端输入 sway
来运行程序。
自动登录[编辑 | 编辑源代码]
与 X 类似,可以通过将以下内容添加到 shell 初始化文件来启动 Sway(请参阅命令行 shell#登录 shell):
if [ -z $DISPLAY ] && [ "$(tty)" = "/dev/tty1" ]; then exec sway fi
有关更多详细信息,请参阅 Xinit#登录时自动启动_X
选择显示管理器[编辑 | 编辑源代码]
Sway 会话位于 /usr/share/wayland-sessions/sway.desktop
。 它可以被 GDM 和 SDDM等现代显示管理器自动识别。
也可以使用systemd 用户服务作为一个显示管理器去运行 sway
您还可以使用基于文本的会话管理器,请参阅显示管理器#控制台。
配置[编辑 | 编辑源代码]
如果您已经在使用i3,则可以将i3配置文件复制到~/.config/sway/config
,并且它开箱即用。否则,请将位于 /etc/sway/config
的示例配置文件复制到 ~/.config/sway/config
。 有关配置的信息,请参见 sway(5)。
include /etc/sway/config.d/*
一行,以便从drop-in文件中读取并应用配置。sway包 提供了一个drop-in 文件50-systemd-user.conf
,其会将多个环境变量导入systemd用户会话和dbus中。一些应用需要这些环境变量以正常运行(例如xdg-desktop-portal-wlr包) 。键盘映射[编辑 | 编辑源代码]
默认情况下,sway 从 US QWERTY 键盘映射开始。配置每个输入:
~/.config/sway/config
input * { xkb_layout "us,de,ru" xkb_variant "colemak,,typewriter" xkb_options "grp:win_space_toggle" } input <identifier> xkb_model "pc101"
更多细节请查看 xkeyboard-config(7) 与 sway-input(5).
在启动sway
时,键盘映射也可以使用环境变量进行配置(XKB_DEFAULT_LAYOUT
,XKB_DEFAULT_VARIANT
,等)。配置选项优先于环境变量
打字延迟和速率[编辑 | 编辑源代码]
要更改类型延迟和速度,您可以在input
分区添加以下行:
~/.config/sway/config
input <identifier> repeat_delay 300 input <identifier> repeat_rate 30
状态栏[编辑 | 编辑源代码]
Sway 附带了一个默认状态栏,其形式为 swaybar ,可在纯 Wayland 环境中运行。swaybar 可以调用 shell 脚本或其他程序来在状态栏中显示信息。有关详细信息,请参略 sway-bar(5) 与 swaybar-protocol(7)。
安装 i3status 是在 Wayland 下获取实用的默认状态栏的一个选项。您所要做的就是在 sway 配置的末尾添加以下代码段:
~/.config/sway/config
bar { status_command i3status }
如果要为 i3status 启用色彩输出,则需要在 i3status 配置中调整以下部分:
~/.config/i3status/config
general { colors = true interval = 5 }
壁纸[编辑 | 编辑源代码]
在sway中显示壁纸由专用程序处理,该程序单独打包为 swaybg包。它是运行输出命令所必需的。
以下行可以附加在 sway 配置的末尾,他会在在所有显示器上设置背景图像(输出与名称 "*"
匹配):
~/.config/sway/config
output "*" bg /path/to/image fill
当然,您必须根据壁纸替换文件名和路径。
如果只需要纯色背景,可以按如下方式设置:
output * bg #000000 solid_color
您可以使用 azoteAUR 作为 GTK3 前端来运行 swaybg。
输入设备[编辑 | 编辑源代码]
可以调整特定的输入设备配置。例如,若要为所有触摸板启用点击以单击和自然滚动,请执行以下操作:
~/.config/sway/config
input type:touchpad { tap enabled natural_scroll enabled }
要为特定触摸板设置配置,请使用 swaymsg -t get_inputs
获取设备标识符并用它来代替 type:touchpad
。
swaymsg -t get_inputs
命令的输出可能包含“\”来转义“/”等符号(e.g. "2:14:ETPS\/2_Elantech_Touchpad"
)。 这些需要删除。更多文档和选项,如加速曲线或完全禁用输入,可以参照sway-input(5).
HiDPI[编辑 | 编辑源代码]
使用 output
命令在你的配置文件中设置显示比例因子。 比例因子可以是分数,但对于 HiDPI 屏幕,它通常为 2。
~/.config/sway/config
output <name> scale <factor>
您可以使用以下命令找到您的显示名称:
$ swaymsg -t get_outputs
自定义键绑定[编辑 | 编辑源代码]
键盘上的特殊键可用于执行命令,例如控制音量、监视亮度或媒体播放器:
~/.config/sway/config
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% bindsym XF86AudioMute exec pactl set-sink-mute @DEFAULT_SINK@ toggle bindsym XF86AudioMicMute exec pactl set-source-mute @DEFAULT_SOURCE@ toggle bindsym XF86MonBrightnessDown exec brightnessctl set 5%- bindsym XF86MonBrightnessUp exec brightnessctl set 5%+ bindsym XF86AudioPlay exec playerctl play-pause bindsym XF86AudioNext exec playerctl next bindsym XF86AudioPrev exec playerctl previous bindsym XF86Search exec $menu
有关详细信息和替代实用程序,请参阅 PulseAudio键盘音量控制、ALSA键盘控制音量、背光实用程序和 MPRIS。
要允许在锁屏处于活动状态时执行键绑定,请将 --locked
参数添加到 bindsym。
bindsym --locked XF86AudioPlay exec playerctl play-pause
Graphical indicator bars[编辑 | 编辑源代码]
通常希望在调整某些百分比值设置(如亮度或音量)的当前级别由图形栏指示。在 Sway 中提供此工具的一个不错的选择是wobAUR (或者 wob-gitAUR),它提供了流行的 X 工具 xobAUR 的功能子集,但作为实现层壳协议的本机 Wayland 实用程序。有关使用示例,请参阅项目网站。
Overview of workspaces[编辑 | 编辑源代码]
如果您正在使用很多带有许多窗口的工作区,并且无法再跟踪位置,那么 sovAUR 可以派上用场。 它是一个叠加层,显示所有工作区的架构,以使 sway 导航更容易。它显示程序名称,窗口标题,支持多输出设置。有关详细信息,请参阅项目网站。
空闲管理[编辑 | 编辑源代码]
Sway 有一个名为 swayidle包 的专用空闲管理守护程序来处理空闲会话。有不同的方法来启动和参数化守护程序。最简单的方法是使用 sway 本身的配置。 swayidle
接受大量参数来配置事件timeout
(又名 空闲), resume
(从睡眠中恢复), before-sleep
etc。参见 swayidle(1)了解更多细节和事件的进一步解释。然后,可以为每个事件分配一个操作。要为一个事件分配多个操作,只需重复触发器即可。
根据以下说明 swayidle
可在 30 分钟后锁定屏幕,并在 5 秒后将其关闭:
~/.config/sway/config
exec swayidle -w \ timeout 1800 'swaylock -f' \ timeout 1805 'swaymsg "output * dpms off"' \ resume 'swaymsg "output * dpms on"'
要更快地关闭锁定屏幕,例如在10秒后,请为锁定管理器设置进程列表,并相应地执行 swaymsg "output * dpms off"
,如下所示:
timeout 10 'if pgrep -x swaylock; then swaymsg "output * dpms off"; fi'
要在挂起和暂停任何播放媒体之前锁定屏幕,请将以下说明修改为 swayidle 命令:
before-sleep 'playerctl pause' before-sleep 'swaylock'
浮动窗口[编辑 | 编辑源代码]
要启用浮动窗口或窗口分配,请打开应用程序,然后使用 app_id
、 class
、 instance
和 title
属性来启用浮动窗口/窗口分配。以下命令将列出所有打开的窗口的属性。
$ swaymsg -t get_tree
只获取所有打开的窗口的 app_id
,请使用:
$ swaymsg -t get_tree | grep "app_id"
只获得当前选中窗口的 app_id
,请使用:
$ swaymsg -t get_tree | jq -r '..|try select(.focused == true)'
如果某些窗口的app_id
为 null,则可能必须使用 class
和/或 instance
属性来启用浮动模式/窗口分配。您可以搜索输出并为窗口创建细粒度规则。
~/.config/sway/config
for_window [app_id="galculator"] floating enable assign [class="firefox"] -> 3 assign [class="^Urxvt$" instance="^htop$"] -> 9
这类似于使用 xorg-xprop包 去查找 class
或者 wm_name
属性,在 X11 中。
使用多个监视器时,浮动暂存器窗口可能会变得太大,覆盖多个监视器。以下命令将浮动窗口居中并调整为当前监视器大小的 80%:
$ swaymsg move position center; swaymsg resize set 80ppt 80ppt
剪贴板[编辑 | 编辑源代码]
默认情况下,每当窗口关闭时,剪贴板都会被清空。这可能是一个令人惊讶的默认行为。
必须安装“剪贴板管理器”才能使剪贴板的内容在窗口之间共享
举一个针对于 Wayland 而设计的剪贴板管理器clipman,它可以通过clipmanAUR 或 clipman-gitAUR进行安装。
如果要在 Sway 中使用 clipman , 请将以下行添加到配置文件中:
~/.config/sway/config
exec wl-paste -t text --watch clipman store --no-persist
Xresources[编辑 | 编辑源代码]
在 Sway 中使用 ~/.Xresources
需要把他拷贝到~/.Xdefaults
。
XWayland[编辑 | 编辑源代码]
请参阅 Wayland#XWayland 了解详细信息和可用软件包的概述。
默认情况下,XWayland 默认是启用状态。
如果要完全禁用 XWayland 并运行“纯”Wayland 会话,请设置以下内容以停用 XWayland 的使用:
~/.config/sway/config
xwayland disable
使用另一个wlroots渲染器[编辑 | 编辑源代码]
您可以通过指定WLR_RENDERER
环境变量来使用另一个 wlroots 渲染器。 可用列表位于wlroots 文档.
提示和技巧[编辑 | 编辑源代码]
初始化启用 CapsLock/NumLock[编辑 | 编辑源代码]
默认情况下,sway 会在初始化启动时禁用 CapsLock
和 NumLock
键。 要改为在启动时启用它们,请将键盘的 xkb_capslock
和/或 xkb_numlock
输入配置设置为 enable
。例如,若要在所有键盘上执行此操作,请将以下行添加到 sway 配置中:
~/.config/sway/config
input * xkb_capslock enable input * xkb_numlock enable
在任何情况下,都可以通过按键盘上的相关键来切换 CapsLock
和 NumLock
状态。
当前键盘布局[编辑 | 编辑源代码]
可以按如下方式检索当前键盘布局,其中 kbd_identifier
需要替换为键盘的标识符:
$ swaymsg -t get_inputs | jq -r '.[] | select(.identifier == "kbd_identifier") | .xkb_active_layout_name'
组合键[编辑 | 编辑源代码]
设置 PrintScreen
作为 compose key:
$ swaymsg 'input * xkb_options compose:prsc'
组合键的组合也可以在 XCompose 文件中配置,需要重新启动应用程序才能使此更改生效。
您可以在 /usr/include/X11/keysymdef.h
中查找键名,或者使用类似于 xev(1) 的调试工具: xkbcli-interactive-wayland(1)(位于 /usr/lib/xkbcommon/
)。
背光切换[编辑 | 编辑源代码]
若要使用键(例如Pause
)关闭(和打开)显示器,请在 Swayconfig
中绑定以下脚本:
#!/bin/sh read lcd < /tmp/lcd if [ "$lcd" -eq "0" ]; then swaymsg "output * dpms on" echo 1 > /tmp/lcd else swaymsg "output * dpms off" echo 0 > /tmp/lcd fi
屏幕捕获和屏幕共享[编辑 | 编辑源代码]
请查看屏幕捕获#Wayland.
色温调节[编辑 | 编辑源代码]
请查看背光#Wayland.
用键盘控制swaynag[编辑 | 编辑源代码]
Swaynag 是 sway 附带的默认警告/提示程序,仅支持用户与鼠标交互。诸如swaynagmodeAUR 之类的帮助程序可用于通过键盘快捷键启用交互。
Swaynagmode 的工作原理是首先启动 swaynag,然后侦听触发操作的信号,例如选择下一步按钮、消除提示或接受所选按钮。这些信号是通过启动带有控制参数的 swaynagmode 脚本本身的另一个实例 swaynagmode --select right
或 swaynagmode --confirm
来发送的。
默认情况下,Swaynagmode在 sway初始化时触发 mode nag
, 再退出时回复 default
。 这样,您就可以在 sway 配置中轻松定义键绑定:
~/.config/sway/config
set $nag exec swaynagmode mode "nag" { bindsym { Ctrl+d mode "default" Ctrl+c $nag --exit q $nag --exit Escape $nag --exit Return $nag --confirm Tab $nag --select prev Shift+Tab $nag --select next Left $nag --select next Right $nag --select prev Up $nag --select next Down $nag --select prev } }
请注意,从 sway 版本 1.2 开始,模式名称区分大小写。
您可以将 sway 配置为使用 swaynagmode 和配置命令 swaynag_command swaynagmode
.
更改光标主题和大小[编辑 | 编辑源代码]
要设置光标主题和大小:
~/.config/sway/config
seat seat0 xcursor_theme my_cursor_theme my_cursor_size
其中 my_cursor_theme
可以设置为或替换为特定值 ,如 default
, Adwaita
或者 Simple-and-Soft
,以及 my_cursor_size
值如 48
.
您可以使用 echo $XCURSOR_SIZE
和 echo $XCURSOR_THEME
去检查它们的值。
Note that you need to restart the application to see the changes.
$XCURSOR_SIZE
和 $XCURSOR_THEME
的值。使用 systemd 管理特定于 Sway 的守护程序[编辑 | 编辑源代码]
Systemd 提供了一个 graphical-session.target
用户单元,每当任何图形会话正在运行时,无论是Xorg还是Wayland,它都是活跃的。应该在所有图形环境中运行的用户服务可以绑定到该 target, 它还允许将特定于窗口管理器的目标绑定到 graphical-session.target
去启动和停止仅在该窗口管理器下运行的服务。请参阅systemd.special(7)
用户可能希望仅在当前窗口管理器为 Sway 时才启动某些服务/守护程序(如 swayidle包 或 kanshi包),并且他们可能还希望这些服务在 Sway 停止时停止。此外,运行 systemd-oomd.service(8) 的用户可能希望将服务放在单独的 cgroup 中,以便单个内存密集型服务不会关闭整个 Sway 会话(请参阅 Fedora bug 报告)。
部分或全部此功能由 Arch Sway 程序包提供。例如,社区中的 sway包 包提供 sway-session.target
文件,而 sway包 和 sway-gitAUR 都为/etc/sway/config.d/
目录提供一个 50-systemd-user.conf
插入文件。如果 Sway config
文件包含 include /etc/sway/config.d/*
则此文件将所需的环境变量导入到 systemd 用户会话和 dbus 中。
如果您打算使用下面描述的 roll-your-own 方法或使用专业包(如sway-systemd-gitAUR 或 sway-services-gitAUR)来提供功能,则应考虑删除提供相同功能的文件。
此功能可以在一个 roll-your-own 基础上通过创建一个 sway-session.target
并让那些守护进程/服务通过sway-session.target
进行提供。 此 systemd 目标应该是用户目标(请参见 systemd/用户)。 例如:
~/.config/systemd/user/sway-session.target
[Unit] Description=Sway compositor session Documentation=man:systemd.special BindsTo=graphical-session.target Wants=graphical-session-pre.target After=graphical-session-pre.target
然后,将以下行添加到 Sway 的配置文件中(例如,将该行追加到 ~/.config/sway/config
或将新文件添加到 /etc/sway/config.d/
):
~/.config/sway/config
... ... ... exec_always "systemctl --user import-environment; systemctl --user start sway-session.target"
当上述行在配置文件中, 每当 Sway 启动,他也会运行 sway-session.target
.
最后,将所需的服务链接到 sway-session.target
。例如,添加 kanshi包 (或者 kanshi-gitAUR) 服务:
~/.config/systemd/user/kanshi.service
[Unit] Description=Dynamic output configuration for Wayland compositors Documentation=https://sr.ht/~emersion/kanshi BindsTo=sway-session.target [Service] Type=simple ExecStart=/usr/bin/kanshi [Install] WantedBy=sway-session.target
当这个用户单元是启用时,它仅在 Sway 运行时激活,并在 Sway 停止时停用。
sway-session.target
文件的创建和环境的导入也可以通过安装sway-systemd-gitAUR来完成。除了将服务分离到 cgroup 中之外,sway-systemd 还将每个 GUI 应用程序放在自己的 cgroup 中。这样就可以对单个应用程序施加每组资源约束。请参阅 sway-systemd README。
更改屏幕分辨率[编辑 | 编辑源代码]
您可以使用图形程序 wdisplaysAUR 或终端程序 wlr-randrAUR 来更改分辨率、旋转和排列显示。
创建无外设输出[编辑 | 编辑源代码]
创建与物理 video 接口(HEADLESS-1, HEADLESS-2等), 无关的输出:
$ swaymsg create_output
打印新输出的说明:
$ swaymsg -pt get_outputs | grep -A 10 HEADLESS
使用 output
命令来配置新的输出,例如:
~/.config/sway/config
output HEADLESS-1 { pos 1920,0 mode 1280x720@75Hz }
疑难解答[编辑 | 编辑源代码]
应用程序启动器[编辑 | 编辑源代码]
i3-dmenu-desktop, dmenu包, 和 rofi包 在 Sway 中都运行得相对较好,但都在 XWayland 下运行,并且都存在相同的问题,如果将光标移动到本机 Wayland 窗口,它们可能会变得无响应。此问题的原因是 Wayland 客户端/窗口无法访问输入设备,除非它们具有屏幕焦点。XWayland 服务器本身就是 Wayland 合成器的客户端,因此其 XWayland 客户端之一必须具有焦点才能访问用户输入。但是,一旦其某个客户端具有焦点,它就可以收集输入,并通过 X11 协议将其提供给所有 XWayland 客户端。因此,将光标移动到 XWayland 窗口并按 Esc 键应该可以解决此问题,有时运行 pkill
也可以。
bemenu包 是一个原生的 Wayland dmenu 替代品,可以选择与 j4-dmenu-desktop包 结合使用,为启动桌面文件提供 Wayland-native 组合(如 i3-dmenu-desktop):
j4-dmenu-desktop --dmenu='bemenu -i --nb "#3f3f3f" --nf "#dcdccc" --fn "pango:DejaVu Sans Mono 12"' --term='termite'
如果选择不禁用 XWayland,则可能需要将 BEMENU_BACKEND
环境变量设置为“wayland”。
您还可以使用浮动终端和 fzf 构建自己的终端,如 GitHub issue中所述。
plasma-workspace包 软件包提供的 krunner
应用也可以作为启动器,提供XWayland和本机Wayland支持。
rofi-lbonn-wayland-gitAUR 是 rofi包 的一个分支,可以在 Wayland 中工作,如果你需要在 X11 会话中启动它,它也有一个 -x11
标志
wofi包 是一个命令启动器,它提供了一些与rofi相同的功能,但在Wayland下运行。wofi缺少rofi的一些功能,如SSH模式和窗口切换模式。它基于 wlroots包 库,并使用GTK3进行渲染。它与 sway 配合得很好。
虚拟化[编辑 | 编辑源代码]
Sway 可以与 VirtualBox 和 VMware ESXi 一起使用。
要使Sway在 QEMU 中工作,必须使用 -vga qxl
参数启动QEMU。另见 QEMU#qxl。
无法从 tty 启动 Sway[编辑 | 编辑源代码]
对于 ESXi, 您需要在 Hardware Configuration > Video card settings 下启用3D支持。另见 VMware#Enable 3D graphics on Intel, Optimus and AMD。
无可见光标[编辑 | 编辑源代码]
当使用某些图形驱动程序(例如VMSVGA图形控制器或专有的 NVIDIA 驱动程序)时,光标可能会变得不可见。以通过使用软件光标来解决此问题,具体讨论可以参考 [3] 中的相关内容:
$ export WLR_NO_HARDWARE_CURSORS=1
未检测到 Sway socket[编辑 | 编辑源代码]
使用 swaymsg
参数,例如 swaymsg -t get_outputs
,有时会返回以下消息:
sway socket not detected. ERROR: Unable to connect to
当在终端多路复用器(如 gnu 屏幕或 tmux)内运行时。这意味着swaymsg
无法连接到 SWAYSOCK
中提供的套接字。
要查看 SWAYSOCK
的当前值,输入:
$ env | grep -F "SWAYSOCK"
SWAYSOCK=/run/user/1000/sway-ipc.1000.4981.sock
要解决这个问题,您可以尝试基于正在运行的晃动过程连接到一个套接字:
$ export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock
若要避免此错误,请在多路复用器之外运行该命令。
无法获取 socket 路径[编辑 | 编辑源代码]
从 swaymsg -t
命令请求在tty上的消息可能会返回以下消息:
Unable to retrieve socket path
SWAYSOCK
环境变量在启动Sway后设置,因此解决此错误的一个方法是在Sway内部的终端中请求 swaymsg -t [message]
。
按键设置和键盘布局[编辑 | 编辑源代码]
默认情况下,如果你使用多个键盘布局,例如 input * xkb_layout "us,ru"
,在切换到某个次要布局时可能会导致绑定失效。
感谢 https://github.com/swaywm/sway/pull/3058 ,你只需要在敏感的 bindsym
行中添加 --to-code
键,就像这样:
bindsym --to-code { $mod+$left focus left $mod+$down focus down $mod+$up focus up $mod+$right focus right }
或者你可以创建一个变量 set $mybind bindsym --to-code
,然后将所有的 bindsym
实例替换为 $mybind
,就像这样: $mybind $mod+w thing
Java 应用[编辑 | 编辑源代码]
当打开一些基于Java的应用程序时,例如JetBrains的编辑器如IntelliJ、CLion或PyCharm,可能会显示空白屏幕。为了解决这个问题,可以设置环境变量 _JAVA_AWT_WM_NONREPARENTING
为1来启动应用程序。
如果你从像 rofi包 或 dmenu包 这样的启动器中启动应用程序,你可能希望修改应用程序的桌面入口,如 Desktop entries#Modify environment variables 所示。
在OpenJDK 11和Sway 1.5中,已经修复了一些 Java 应用程序的问题。然而,对于某些应用程序,需要进行额外的配置才能使用更新版本的 OpenJDK。对于 Android Studio 来说,你需要设置 STUDIO_JDK=/usr/lib/jvm/java-11-openjdk/
。 [4]
边框上的滚动[编辑 | 编辑源代码]
如果在应用程序边框上使用鼠标滚轮导致Sway崩溃,您可以为 app_id
(例如Firefox)使用border none
来禁用边框。
程序无法打开显示[编辑 | 编辑源代码]
如果一个程序在出现“无法打开显示”错误消息时崩溃,那么您正在使用的程序很可能是 X11程序。你可以使用 XWayland 兼容层在韦兰下运行 x11程序,详见 #XWayland。