Home πŸ‡ΊπŸ‡¦ Support Ukraine

GUI in Containers

Created: 2022-02-03

Reading time: 1 min


LXD requirements

Assuming container name is gaming:

lxc config device add gaming gpu gpu
lxc config device add gaming pulse proxy bind=container listen=unix:/mnt/.pulse-native connect=unix:/run/user/1000/pulse/native mode=0666 security.uid=$(id -u) security.gid=$(id -g)
lxc config device add gaming x11 proxy bind=container listen=unix:@/tmp/.X11-unix/X0 connect=unix:@/tmp/.X11-unix/X0 security.uid=$(id -u) security.gid=$(id -g)
lxc stop gaming
# `security.nesting=true` is optional (if guest needs containerization)
lxc config set gaming security.nesting=true environment.DISPLAY=:0 environment.PULSE_LATENCY_MSEC=30 environment.PULSE_SERVER=/mnt/.pulse-native environment.QT_X11_NO_MITSHM=1

Inside container:

pacman -Syu mesa-utils pulseaudio xorg-apps xorg-server
sed -i "s/; enable-shm = yes/enable-shm = no/g" /etc/pulse/client.conf
useradd -m gaming
su gaming
glxinfo -B
pactl info
glxgears

Ref