Hey there,
Just curious how it would work (if its possible at all), if I want to display a GUI on ubuntu core from a docker container?
From what I understand graphical output goes through wayland, for which the wayland interface needs to be connected to the application that wants to output visuals.
However, I don’t see the wayland interface in docker connections:
Interface Plug Slot Notes
content - docker:docker-registry-certificates -
content[docker-executables] azure-iot-edge:docker-executables docker:docker-executables manual
content[graphics-core22] docker:graphics-core22 mesa-core22:graphics-core22 -
docker azure-iot-edge:docker docker:docker-daemon manual
docker docker:docker-cli docker:docker-daemon -
docker-support docker:privileged :docker-support -
docker-support docker:support :docker-support -
firewall-control docker:firewall-control :firewall-control -
home docker:home :home -
log-observe docker:log-observe - -
network docker:network :network -
network-bind docker:network-bind :network-bind -
network-control docker:network-control :network-control -
opengl docker:opengl :opengl -
removable-media docker:removable-media - -
I do see graphics-core22 interface connecting to mesa-core22.
It’s giving me the following error output:
error: XDG_RUNTIME_DIR not set in the environment.
[00007fd55000b580] gl vout display error: parent window not available
[00007fd55000b580] gles2 vout display error: parent window not available
[00007fd55000b580] xcb vout display error: window not available
[00007fd55000b580] xcb vout display error: window not available
Authorization required, but no authorization protocol specified
[00007fd55000b580] caca vout display error: cannot initialize libcaca
[00007fd55c109e40] main video output error: video output creation failed
[00007fd580f82a20] main decoder error: failed to create video output
[h264 @ 0x7fd580fb7240] get_buffer() failed
[h264 @ 0x7fd580fb7240] thread_get_buffer() failed
[h264 @ 0x7fd580fb7240] decode_slice_header error
[h264 @ 0x7fd580fb7240] no frame!
I’m assming I have to set some variables like XDG_RUNTIME_DIR. I found someone suggesting running docker as follows:
docker run -e XDG_RUNTIME_DIR=/tmp \
-e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--user=$(id -u):$(id -g) \
imagename waylandapplication
But I’m not sure what the values should be here, and I am confused about whether they would be accessible without connecting a wayland interface?
P.S I am trying to do this because we want to deploy our graphical application through Azure IoT Edge, which deploys through docker images.