通用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 命令會根據 UWSM_FINALIZE_VARNAMES 列表(使用空白字符 (white-space) 作為分隔符),將 WAYLAND_DISPLAY、DISPLAY 和其他環境變量加入到激活環境。建議在混成器就緒後執行該命令。
如果在激活環境中需要其他由混成器設置的變量,可以將變量名稱作為參數傳遞給 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或者顯示管理器啟動。
從TTY啟動
將如下代碼添加進~/.profile:
if uwsm check may-start && uwsm select; then exec uwsm start default fi
如果你想始終啟動指定混成器,將上述代碼替換為:
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
要將應用程式作為獨立的 systemd 範圍單元 (scope units) 啟動,你可以使用 uwsm app,它既可以啟動可執行文件:
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
替代
你可以使用以下方案作為替代,比起uwsm app(運行一個Python腳本)會更快:
- uwsm 的
uwsm-app腳本,與 uwsm 的應用守護進程進行通信。 -
app2unit-gitAUR,一個shell腳本。你可以通過設置
APP2UNIT_SLICES環境變量為如下值來讓它作為uwsm app的替代方案:APP2UNIT_SLICES='a=app-graphical.slice b=background-graphical.slice s=session-graphical.slice'
- runappAUR,由C++編寫,但是少了些許功能。