通用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版本。請耐心等待打包者更新該軟體後再將其升級。