From b185f310cd0c8be4a34374730ce3c77627b51682 Mon Sep 17 00:00:00 2001 From: Christian Rößler Date: Tue, 11 Apr 2017 17:05:21 +0200 Subject: [run-virt] Floppy (fd1)-scripts: No more display manager conf. patching, now via systemd service files started. To be tested! --- .../opt/openslx/vmchooser/data/linux/resolution | 32 ++++++++++++---------- 1 file changed, 17 insertions(+), 15 deletions(-) (limited to 'core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/resolution') diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/resolution b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/resolution index 24a0594f..a8942b9f 100755 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/resolution +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/resolution @@ -13,10 +13,10 @@ DISPLAY=:0.0 check_resolution() { # Now, let's wait even more seconds to see if another process re-changes res.: - ACTRES=$(xrandr|grep '*'|tr -s " "|cut -f 2 -d " ") + ACTRES=$(DISPLAY="${DISPLAY}" XAUTHORITY="${XAUTHORITY}" xrandr|grep '*'|tr -s " "|cut -f 2 -d " ") if [ "$ACTRES" != "$RESOLUTION" ]; then logger "openslx resolution utility: resolution changed; re-changing." - xrandr --output ${AUSGABE} --mode ${RESOLUTION} + DISPLAY="${DISPLAY}" XAUTHORITY="${XAUTHORITY}" xrandr --output ${AUSGABE} --mode ${RESOLUTION} else logger "openslx resolution utility: resolution unchanged." fi @@ -41,36 +41,38 @@ fi # Das ist mitunter ein Problem, da die richtige zu finden - Distroabhängig! # Hier ein Beispiel für openSuse 13.2, sollte auch für Debian, Ubuntu, Redhat usw. laufen:. -XAUTHDATEI=$(ps aux | grep -o "X.* \-auth *[^ ]*" | awk '{print $NF}') -if [ -n "$XAUTHDATEI" ]; then - logger "openslx resolution utility: XAUTHFILE found." - XAUTHORITY="${XAUTHDATEI}" -else - logger "openslx resolution utility: XAUTHFILE not found. Exiting." - exit 1 -fi +# XAUTHDATEI=$(ps aux | grep -o "root.*X.* \-auth *[^ ]*" | awk '{print $NF}') + +for wartezeit in 0 1 2 3 5 10 10 0 ende; do + [ "$wartezeit" = "ende" ] && { logger "openslx resolution utility: XAUTHFILE not found. Exiting." ; exit 1; } + XAUTHORITY=$(ps aux | grep -o "root.*X.* \-auth *[^ ]*" | awk '{print $NF}') + [ -n "${XAUTHORITY}" ] && break + sleep $wartezeit +done + +logger "openslx resolution utility: XAUTHFILE found." # Zu verbessern: Der Name des Verbundenen ist nicht immer bekannt. Daher nehmen wir das # erste 'connected' in der Ausgabe xrandrs: -AUSGABE=$(xrandr -q|grep -m 1 " connected "|awk '{print $1}') +AUSGABE=$(DISPLAY="${DISPLAY}" XAUTHORITY="${XAUTHORITY}" xrandr -q|grep -m 1 " connected "|awk '{print $1}') if [ -z "$AUSGABE" ]; then logger "openslx resolution utility: Could not detect output device. Exiting." exit 1 fi # Pruefen, ob xrand eine passende modeline ausgibt: -if [ "$(xrandr | grep -c ${RESOLUTION})" -eq 0 ]; then +if [ "$(DISPLAY=${DISPLAY} XAUTHORITY=${XAUTHORITY} xrandr | grep -c ${RESOLUTION})" -eq 0 ]; then logger "openslx resolution utility: xrandr yields no fitting modeline; adding one." MODELINE=$(cvt ${RESOLUTION//x/ } | grep -v "^#" | sed "s/Modeline //g" | sed 's/"//g') - xrandr --newmode $(echo ${MODELINE}) - xrandr --addmode ${AUSGABE} $(echo ${MODELINE} | cut -d " " -f 1) + DISPLAY="${DISPLAY}" XAUTHORITY="${XAUTHORITY}" xrandr --newmode $(echo ${MODELINE}) + DISPLAY="${DISPLAY}" XAUTHORITY="${XAUTHORITY}" xrandr --addmode ${AUSGABE} $(echo ${MODELINE} | cut -d " " -f 1) # Dann einzusteuernde Auflösung natürlich auf die neue ändern: RESOLUTION=$(echo ${MODELINE} | cut -d " " -f 1) logger "openslx resolution utility: (xrandr) modeline ${MODELINE} added (${RESOLUTION})." fi # Auflösung per xrandr setzen: -xrandr --output ${AUSGABE} --mode ${RESOLUTION} +DISPLAY="${DISPLAY}" XAUTHORITY="${XAUTHORITY}" xrandr --output ${AUSGABE} --mode ${RESOLUTION} ERR=$? if [ $ERR -ne 0 ]; then logger "openslx resolution utility: xrandr error code ${ERR}." -- cgit v1.2.3-55-g7522