diff --git a/x11-misc/virtualgl/files/vgl-helper.sh b/x11-misc/virtualgl/files/vgl-helper.sh new file mode 100644 index 0000000..8054092 --- /dev/null +++ b/x11-misc/virtualgl/files/vgl-helper.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +. /etc/vgl.conf + +vgl_start() { + truncate --size=0 /var/lib/VirtualGL/vgl_xauth_key + + set_xauth + # Check if XAUTHORITY was set successfully, if not wait up to + # 60 seconds to allow X start. + tries=120 + while [ ${tries} -gt 0 ]; do + tries=$((tries - 1)) + if [ -z "${XAUTHORITY}" ]; then + sleep 0.5 + set_xauth + continue + elif [ ! -e "${XAUTHORITY}" ]; then + sleep 0.5 + # fall through, file not existing yet + fi + break + done + + xauth -f /var/lib/VirtualGL/vgl_xauth_key add $DISPLAY . \ + $(xauth -f $XAUTHORITY list | awk '{print $3;exit}') && \ + chmod 644 /var/lib/VirtualGL/vgl_xauth_key +} + +vgl_stop() { + rm -f /var/lib/VirtualGL/vgl_xauth_key +} + + +if [ "${1}" = "start" ]; then + vgl_start +elif [ "${1}" = "stop" ]; then + vgl_stop +fi diff --git a/x11-misc/virtualgl/files/vgl.service b/x11-misc/virtualgl/files/vgl.service new file mode 100644 index 0000000..a001e8a --- /dev/null +++ b/x11-misc/virtualgl/files/vgl.service @@ -0,0 +1,13 @@ +[Unit] +Description=VirtualGL service +After=display-manager.service + +[Service] +RemainAfterExit=yes +PIDFile=/var/run/named/named.pid +ExecStart=/usr/libexec/vgl-helper.sh start +ExecStop=/usr/libexec/vgl-helper.sh stop + +[Install] +WantedBy=multi-user.target +