Xorg was starting before udev could finish the monitor command. This prevented the X server from having access to the input devices. For some reason, any subsequent starts would be fine.
Adding a small delay to the X server start and triggering a request for device events from the kernel after a delay seems to fix this issue.
- Remove launcher for X11 and just call it from
- Improvements to the '/tmp/.X11-unix' directory
- Move lockfile clearing to init script rather than launcher
- Configure the 'XDG_RUNTIME_DIR' to something that is easily shared between containers
- Ensure all logs in home directory are readable
- Log Xorg service in home directory so they are more easily accessable to users
- Add a DEBUGGING flag
- Make the location of the unix socket configurable
While I was here I moved all the priority configs in supervisord to the top. I like it better there
This will allow this web UI to sit nicely behind a reverse proxy.
Dynamically set the ports used for the
- VNC service
- noVNC service
- Pulseaudio socket
- VNC audio transport websocket
Remove all mentions of the above used ports in the Dockerfile.
This allows this container to start up before X is ready on the main container and restart the process until it becomes available.
Each restart will have a small delay of a few seconds. So 50 attempts should be a few mins.
This requires that you still have setup a primary container instance of this image.
We can then run a secondary instance of steam that will use the existing X server.
We are still limited to running one of these steam instances at a time.
The current supervisor.d configs are configured specifically for a particular supervisor version / installation.
This decouples the configuration so we can use it on any distro.