通用Wayland会话管理器
通用Wayland会话管理器 (uwsm) 运行时会将独立 Wayland合成器变成一组systemd 单元。这提供一个包括环境的稳定的会话管理,并且支持XDG Autostart,与登录会话双向连接,并且可以完全关闭。
loginctl terminate-user ""来将D-Bus守护进程引用的环境分离安装 uwsm包(或者你也可以安装uwsm-gitAUR的Git版本以获取master分支上的最新提交)
WAYLAND_DISPLAY(和其他有用的环境变量)添加到systemd激活的环境中,那么你可以跳过这部分,并且比不需要使用uwsm finalize
为了找到当前的合成器,一个Wayland软件作为systemd服务运行需要WAYLAND_DISPLAY环境变量(如果它们预期是在Xwayland中运行则是DISPLAY)。因此,一旦合成器设置了这个和其他有用的环境变量,都应该被放进systemd/dbus 激活环境中。
uwsm finalize会将WAYLAND_DISPLAY、DISPLAY和其他环境变量列出加入到激活环境,并通过空格与UWSM_FINALIZE_VARNAMES列表分开。建议在合成器就绪后执行该命令。
如果合成器在激活环境中设置其他它需要的变量,也可以通过uwsm finalize传递或将其放入在UWSM_FINALIZE_VARNAMES里使用空格分割的列表中。例如:
exec uwsm finalize VAR1 VAR2 ... export UWSM_FINALIZE_VARNAMES=VAR1 VAR2 ...
所有来源于uwsm的环境变量都设置在${XDG_CONFIG_HOME}/uwsm/env并且可用于在这个会话中所有的被管理合成器和图形化软件。
如果你想仅仅为一个指定的合成器(与在图形化会话中图形化软件)设置一些环境变量,那么请将变量放在${XDG_CONFIG_HOME}/uwsm/env-compositor
这个文件的模板如下:
~/.config/uwsm/env
export KEY1=VAR1 export KEY2=VAR2 export KEY3=VAR3 ...
uwsm start中的环境变量被成功使用,那么环境预加载器不再生效POSIX shell配置。uwsm 可以使用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取代了登录shell,那么它会在uwsm start后启动代码或终止用户会话)
uwsm 默认通过在session.slice中的一个自定义systemd服务来运行合成器。很多Wayland合成器允许你在合成器服务中启动其他软件,然而这将会消耗合成器资源,甚至干扰通知sockets
你可以通过uwsm app来以独立的systemd范围单元启动应用程序
uwsm app -- /my/program/path
和桌面项
uwsm app -- myprogram.desktop
uwsm默认会将其运行范围设置在app-graphical.slice。如果你想要将它们放置在background-graphical.slice或session-graphical.slice,那么你分别可以使用-s b和-s s:
uwsm app -s b -- background-app.desktop
你可以使用app2unit-gitAUR来代替uwsm app(运行一个Python脚本),app2unit-gitAUR应该是更快的,因为它是一个shell脚本。你可以通过设置APP2UNIT_SLICES环境变量为如下值来让它作为uwsm app的替代方案:
APP2UNIT_SLICES='a=app-graphical.slice b=background-graphical.slice s=session-graphical.slice'
runappAUR也是一个快速的替代品,它是由C++编写的,但是少了些许功能
当前版本(0.23.1)由于作者错误的代码提交,导致出现该报错[1],若想正常使用,请降级该软件至0.23.0版本。或手动编译安装GitHub仓库的0.23.2版本。目前uwsm包和uwsmAUR都是0.23.1版本。请耐心等待打包者更新该软件后再将其升级。