通用 Wayland 会话管理器

出自 ArchWiki

The Universal Wayland Session Manager (uwsm) 将独立的 Wayland 合成器 封装成一组动态的 systemd 单元。这提供了强大的会话管理,包括环境、XDG Autostart 支持、与登录会话的双向绑定以及干净的关机。

注意: 强烈建议使用 dbus-broker 作为 D-Bus 守护进程的实现。 除其他优点外,它还重用 systemd 激活环境,而不是拥有单独的环境。 这简化了环境管理并允许正确清理。 参考实现 也受支持,但它不允许取消设置变量,因此通过将它们设置为空字符串来执行尽力而为的清理。 正确清理参考 D-Bus 守护进程的独立环境的唯一方法是运行 loginctl terminate-user ""

安装

安装 uwsm 软件包。

配置

服务启动通知和合成器设置的变量

注意: 如果托管的合成器已经将 WAYLAND_DISPLAY(和其他有用的环境变量)设置到 systemd 激活环境中,则可以跳过此部分,并且不需要使用 uwsm finalize

为了找到当前的合成器,wayland 应用程序需要 WAYLAND_DISPLAY(或 DISPLAY 变量,如果它们旨在通过 Xwayland 运行)。 因此,一旦合成器设置了它们的值,就应将此变量和其他有用的环境变量放入 systemd/dbus 激活环境中。

命令 uwsm finalizeWAYLAND_DISPLAYDISPLAY 和通过空格分隔的 UWSM_FINALIZE_VARNAMES 列表列出的其他环境变量放入激活环境中。 因此,您需要在合成器准备就绪后执行此命令。

如果您的激活环境中需要合成器设置的其他变量,您也可以将它们作为参数传递

exec uwsm finalize VAR1 VAR2 ...

环境变量

${XDG_CONFIG_HOME}/uwsm/env 文件中设置的所有环境变量都由 uwsm 提供,并且可用于所有托管的合成器以及在此会话中运行的图形应用程序。

如果您需要仅为特定的合成器(以及该图形会话中的图形应用程序)设置某些环境变量,请将它们放在 ${XDG_CONFIG_HOME}/uwsm/env-compositor 中。

所有这些文件都应使用以下格式设置环境变量

export KEY1=VAR1
export KEY2=VAR2
export KEY3=VAR3
...

并且不应包含注释。

用法

启动

uwsm 可以通过 TTY 和显示管理器启动。

TTY

添加到您的 ~/.profile 文件中

if uwsm check may-start && uwsm select; then
  exec uwsm start default
fi

如果您想始终启动相同的合成器,则可以在您的 ~/.profile 文件中使用以下内容代替

if uwsm check may-start; then
  exec uwsm start compositor.desktop
fi

显示管理器

您可以创建一个自定义会话桌面条目,通过 uwsm 启动您的合成器

/usr/share/wayland-sessions/my-compositor-uwsm.desktop
[Desktop Entry]
Name=My compositor (with UWSM)
Comment=My cool compositor, UWSM session

# either full command line with metadata and executable
Exec=uwsm start -N "My compositor" -D mycompositor:mylib -C "My cool compositor" -- my-compositor

# or a reference to another entry
Exec=uwsm start -- my-compositor.desktop

DesktopNames=mycompositor;mylib
Type=Application

会话终止

如果您想终止当前的 uwsm 会话,则应使用 loginctl terminate-user ""(终止整个用户会话)或 uwsm stop(在 uwsm start 之后执行代码或终止用户会话,如果它替换了登录 shell)。

警告: 请勿使用合成器的本机退出机制或直接终止其进程。 这会将合成器从所有客户端下方拉出,并干扰有序的单元停用序列。