Естественная нейронка каким-то непонятным образом отличается от искуственной казуальностью озарений. Вот стоило только написать предыдущий шитпост, как она мне шепчет: чё тупишь? Примонтируй wayland-1 в каталог LXC контейнера и не будет тебе замусоривания XDG_RUNTIME_DIR на хосте.
И правда. Но вот только только красивая идея "всё есть файл" разбивается об особенности реализации. Я не знаю об какие, но сделать mount --bind
для каталога - можно, для файла - можно, для девайса - можно, а для сокета - опаньки.
Ладно, придётся примонтировать весь XDG_RUNTIME_DIR хоста уж куда-нибудь и воспользоваться ссылками. Итак, на хосте крутим Sway под обычным юзером с id=1000, а в контейнере запускаем Weston (на самом деле без разницы, мне удобнее Weston). В конфиг LXC контейнера добавляем:
lxc.mount.entry = tmpfs run tmpfs noexec,nodev,nosuid,mode=755,size=4M 0 0
lxc.mount.entry = /run/user/1000 run/host-xdg-runtime-dir none bind,create=dir 0 0
Если в контейнере есть что-то похожее на /etc/init.d/mountkernfs.sh
который монтирует /run
- отключаем.
Для юзера в контейнере надо сделать:
mkdir -p /run/user/1000
chown user:user /run/user/1000
chmod 700 /run/user/1000
ln -s /run/host-xdg-runtime-dir/wayland-1 /run/user/1000/
ln -s /run/host-xdg-runtime-dir/wayland-1.lock /run/user/1000/
У меня это пока в виде примочки /etc/runit/boot-run/20-userdir-hack.sh
, потом доделаю.
Ссылка на lock-файл нужна, иначе Weston удалит символическую ссылку wayland-1, думая, что это сокет. В приципе, может это даже и фича.