This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch feature/openbox in repository live-build-x2go. commit afefc032b9a83456d3a999f0938d15f9563d815a Author: Stefan Baur (BAUR-ITCS) <kontakt@baur-itcs.de> Date: Sun Dec 16 01:54:12 2018 +0100 moving X startup related things from config/includes.chroot/lib/live/config/2900-x2go-thinclientconfig to config/includes.chroot/etc/X11/Xsession.d/60x11-* --- .../etc/X11/Xsession.d/60x11-blanking-dpms-config | 31 +++++++++ .../etc/X11/Xsession.d/60x11-openbox-start | 4 ++ .../etc/X11/Xsession.d/60x11-set-background | 43 +++++++++++++ .../Xsession.d/60x11-spawn-configure-pulseaudio | 32 ++++++++++ .../lib/live/config/2900-x2go-thinclientconfig | 74 ---------------------- 5 files changed, 110 insertions(+), 74 deletions(-) diff --git a/config/includes.chroot/etc/X11/Xsession.d/60x11-blanking-dpms-config b/config/includes.chroot/etc/X11/Xsession.d/60x11-blanking-dpms-config new file mode 100644 index 0000000..128c503 --- /dev/null +++ b/config/includes.chroot/etc/X11/Xsession.d/60x11-blanking-dpms-config @@ -0,0 +1,31 @@ +# code to fix blank screen happening with DisplayPort and some buggy TFTs (xset q reports "Monitor is on" even though it is pitch black) +if grep -q '\W*blankdpmsfix\W*' /proc/cmdline; then + xset dpms force suspend +fi + +BLANKINGTIME=$(sed -e 's/ \([^ ]*\)=/\n\1=/g' -e 's/\([^=]["'"'"']\) /\1\n/g' -e 's/ \([^ "'"'"']\)/\n\1/g' /proc/cmdline | awk -F '=' '$1 == "blank" { print $2 }' | tr -dc '0-9:') +if [ -n "$BLANKINGTIME" ]; then + DPMSARR=($(echo $BLANKINGTIME | awk -F ':' '$1 ~/^[0-9]*$/ && $2 ~/^[0-9]*$/ && $3 ~/^[0-9]*$/ { print $1 " " $2 " " $3}')) + if [ ${DPMSARR[0]} -eq 0 ]; then + # Disable screensaver and DPMS Power Saving if requested + xset s off + if grep -q '\W*nodpms\W*' /proc/cmdline; then + xset -dpms + fi + else + xset s on + xset s ${DPMSARR[0]} + if ! grep -q '\W*nodpms\W*' /proc/cmdline; then + # Yes, "+dpms dpms" is intentional. + xset +dpms dpms ${DPMSARR[0]} ${DPMSARR[1]} ${DPMSARR[2]} + fi + fi +fi + +if grep -q '\W*blankdpmsfix\W*' /proc/cmdline; then + xset dpms force on + xset dpms 0 0 0 + xset -dpms +fi + + diff --git a/config/includes.chroot/etc/X11/Xsession.d/60x11-openbox-start b/config/includes.chroot/etc/X11/Xsession.d/60x11-openbox-start new file mode 100644 index 0000000..9835ae9 --- /dev/null +++ b/config/includes.chroot/etc/X11/Xsession.d/60x11-openbox-start @@ -0,0 +1,4 @@ +# Spawn openbox +openbox & +echo -en "\n$(date +'%F | %T | ')'$0' spawned OpenBox." | tee -a /dev/tty8 + diff --git a/config/includes.chroot/etc/X11/Xsession.d/60x11-set-background b/config/includes.chroot/etc/X11/Xsession.d/60x11-set-background new file mode 100644 index 0000000..bb6f052 --- /dev/null +++ b/config/includes.chroot/etc/X11/Xsession.d/60x11-set-background @@ -0,0 +1,43 @@ +# set screen background to X2Go default blue on all detected screens, unless color or image is specified +XROOT=$(sed -e 's/ \([^ ]*\)=/\n\1=/g' -e 's/\([^=]["'"'"']\) /\1\n/g' -e 's/ \([^ "'"'"']\)/\n\1/g' /proc/cmdline | awk -F '=' '$1 == "xroot" { print $2 }' | tr -dc '0-9a-zA-Z,$-_.+!*'"'"'();/?:@=&') +XROOTMODE=$(cat /proc/cmdline | tr ' ' '\n' | awk -F'=' '"xrootmode"==$1 {print $2}') +IMAGEDIR=/var/tmp/images/ + +# TODO: mate-minidesktop: image is stored as /usr/share/backgrounds/x2go/x2gothinclient-minidesktop_background.svg - needs to be svg + +if [ -n "$XROOT" ] ; then + XROOTSHORT=$(echo "$XROOT" | tr -dc '0-9a-fA-Fx') + + if echo "$XROOTSHORT" | grep -q '^0x' && [ 8 = ${#XROOTSHORT} ] ; then + # this should be a hex color string + HEXCOLOR=${XROOTSHORT#0x} + if [ 6 = ${HEXCOLOR} ] ; then + xsetroot -solid "#$HEXCOLOR" # set requested color + else + xsetroot -grey # show that something's amiss + fi + elif echo "$XROOT" | grep -q "://" ; then + # this could be an URI + # TODO move this download part to an earlier script + wget -P $IMAGEDIR/background/ "${XROOT/|/ }" + if [ $(ls $IMAGEDIR 2>/dev/null| wc -l) -gt 0 ] ; then + #input validation + case "${XROOTMODE,,}" in # force lowercase + "center") POSITION=center ;; + "fill") POSITION=fill ;; + "scale") POSITION=scale ;; + "tile") POSITION=tile ;; + *) POSITION=max ;; + esac + # POSITION: center fill max scale tile; default: max + feh --nofehbg --bg-$POSITION $IMAGEDIR/background/* + else + xsetroot -grey # show that something's amiss + fi + fi + +else + # set our default color + xsetroot -solid "#246ed8" +fi + diff --git a/config/includes.chroot/etc/X11/Xsession.d/60x11-spawn-configure-pulseaudio b/config/includes.chroot/etc/X11/Xsession.d/60x11-spawn-configure-pulseaudio new file mode 100644 index 0000000..157cbb6 --- /dev/null +++ b/config/includes.chroot/etc/X11/Xsession.d/60x11-spawn-configure-pulseaudio @@ -0,0 +1,32 @@ +# Spawn PulseAudio +if ! ps -C pulseaudio >/dev/null ; then + pulseaudio -D -n -L 'module-native-protocol-tcp port=4713' -L 'module-udev-detect' --exit-idle-time=65535 & +fi + +AUDIOOUT=$(sed -e 's/ \([^ ]*\)=/\n\1=/g' -e 's/\([^=]["'"'"']\) /\1\n/g' -e 's/ \([^ "'"'"']\)/\n\1/g' /proc/cmdline | awk -F'=' ' /^audioout=/ { print $2 }' | tr -dc 'a-zA-Z0-9.:_\-@|') + +if [ -n "$AUDIOOUT" ] ; then + ( + while ! pacmd dump 2>&1| grep -q set-card-profile ; do + echo -en "\n$(date +'%F | %T | ')'$0': Waiting for pulseaudio to start ..." | tee -a /dev/tty8 + sleep 1 + done + if [ "$AUDIOOUT" = "list" ] ; then + echo -en "\n$(date +'%F | %T | ')'$0': Available audio outputs:" | tee -a /dev/tty8 + AUDIOOUTPUTS=$( for CARD in $(pacmd list-cards | grep -A1 index | awk -F '[<> \t]' ' $2 == "name:" { print $4 }'); do + pacmd list-cards | more +/"$CARD" | grep -m 1 "$CARD" -A100000 | + more +/"profiles:" | grep -m 1 -B10000 "active profile:" | grep -A10000 "profiles" | gre +p "\W\Woutput:" | grep -v "active profile:" | awk -F'[+:]' '{gsub("\t","",$1) ; print "\"'$CARD'|" $1 ":" $2 "\""} '; + done | sort -u ) + for AUDIOOUTPUT in $AUDIOOUTPUTS; do + echo -en "\n$(date +'%F | %T | ')'$0': $AUDIOOUTPUT" | tee -a /dev/tty8 + done + echo -en "\n$(date +'%F | %T | ')'$0': $(pacmd list | 'grep active profile')" | tee -a /dev/tty8 + elif (echo "$AUDIOOUT" | grep -q '^[^|]*|[^|]*$') ; then + $(echo "$AUDIOOUT" | sed -e 's/^/pacmd set-card-profile /' -e 's/|/ /') + else + : # NOP + fi + ) & +fi + diff --git a/config/includes.chroot/lib/live/config/2900-x2go-thinclientconfig b/config/includes.chroot/lib/live/config/2900-x2go-thinclientconfig index 6939b68..9685d8a 100755 --- a/config/includes.chroot/lib/live/config/2900-x2go-thinclientconfig +++ b/config/includes.chroot/lib/live/config/2900-x2go-thinclientconfig @@ -24,13 +24,6 @@ cat >/home/user/.xsession <<XSESSION # http://code.x2go.org/gitweb?p=x2gothinclient.git;a=blob_plain;f=displaymanag... # check the above file for ideas before reinventing the wheel -# Spawn PulseAudio -pulseaudio -D -n -L 'module-native-protocol-tcp port=4713' -L 'module-udev-detect' --exit-idle-time=65535 & - -AUDIOOUT=\$(sed -e 's/ \([^ ]*\)=/\n\1=/g' -e 's/\([^=]["'"'"']\) /\1\n/g' -e 's/ \([^ "'"'"']\)/\n\1/g' /proc/cmdline | \ - awk -F'=' ' /^audioout=/ { print \$2 }' | \ - tr -dc 'a-zA-Z0-9.:_\-@|') - # additional variable instead of "case \$(...) in", as we need the value again later on XRANDRCMDTAINTED=\$(sed -e 's/ \([^ ]*\)=/\n\1=/g' -e 's/\([^=]["'"'"']\) /\1\n/g' -e 's/ \([^ "'"'"']\)/\n\1/g' /proc/cmdline | awk -F '=' '\$1 == "xinerama" { print \$2 }') @@ -86,17 +79,6 @@ for NEXT_DISPLAY in \$(LANG=C xrandr 2>/dev/null | grep ' connected ' | cut -d ' THIS_DISPLAY=\$NEXT_DISPLAY done -# code to fix blank screen happening with DisplayPort and some buggy TFTs (xset q reports "Monitor is on" even though it is pitch black) -if grep -q '\W*blankdpmsfix\W*' /proc/cmdline; then - xset dpms force suspend -fi - -# Spawn openbox -openbox & - -# set screen background to X2Go default blue on all detected screens -xsetroot -solid "#246ed8" - # Get X2GoConfig BROKERURL=\$(sed -e 's/ \([^ ]*\)=/\n\1=/g' -e 's/\([^=]["'"'"']\) /\1\n/g' -e 's/ \([^ "'"'"']\)/\n\1/g' /proc/cmdline | \ awk -F'=' ' /^broker-url=/ { print \$2 }' | \ @@ -212,62 +194,6 @@ if [ -n "\$THROTTLEVALUES" ]; then fi fi -# code to fix blank screen happening with DisplayPort and some buggy TFTs (xset q reports "Monitor is on" even though it is pitch black) -if grep -q '\W*blankdpmsfix\W*' /proc/cmdline; then - xset dpms force on dpms 0 0 0 -dpms -fi - -BLANKINGTIME=\$(sed -e 's/ \([^ ]*\)=/\n\1=/g' -e 's/\([^=]["'"'"']\) /\1\n/g' -e 's/ \([^ "'"'"']\)/\n\1/g' /proc/cmdline | awk -F '=' '\$1 == "blank" { print \$2 }' | tr -dc '0-9:') -if [ -n "\$BLANKINGTIME" ]; then - DPMSARR=(\$(echo \$BLANKINGTIME | awk -F ':' '\$1 ~/^[0-9]*\$/ && \$2 ~/^[0-9]*\$/ && \$3 ~/^[0-9]*\$/ { print \$1 " " \$2 " " \$3}')) - if [ \${DPMSARR[0]} -eq 0 ]; then - # Disable screensaver and DPMS Power Saving if requested - xset s off - if grep -q '\W*nodpms\W*' /proc/cmdline; then - xset -dpms - fi - else - xset s on - xset s \${DPMSARR[0]} - if ! grep -q '\W*nodpms\W*' /proc/cmdline; then - # Yes, "+dpms dpms" is intentional. - xset +dpms dpms \${DPMSARR[0]} \${DPMSARR[1]} \${DPMSARR[2]} - fi - fi -fi - -if [ -n "\$AUDIOOUT" ] ; then - ( - while ! pacmd dump 2>&1| grep -q set-card-profile ; do - echo -en "\n\$(date +'%F | %T | ')'\$0': Waiting for pulseaudio to start ..." | tee -a /dev/tty8 - sleep 1 - done - if [ "\$AUDIOOUT" = "list" ] ; then - echo -en "\n\$(date +'%F | %T | ')'\$0': Available audio outputs:" | tee -a /dev/tty8 - AUDIOOUTPUTS=\$( for CARD in \$(pacmd list-cards | grep -A1 index | awk -F '[<> \t]' ' \$2 == "name:" { print \$4 }'); do - pacmd list-cards | \ - more +/"\$CARD" | \ - grep -m 1 "\$CARD" -A100000 | \ - more +/"profiles:" | \ - grep -m 1 -B10000 "active profile:" | \ - grep -A10000 "profiles" | \ - grep "\W\Woutput:" | \ - grep -v "active profile:" | \ - awk -F'[+:]' '{gsub("\t","",\$1) ; print "\"'\$CARD'|" \$1 ":" \$2 "\""} '; - done | \ - sort -u ) - for AUDIOOUTPUT in \$AUDIOOUTPUTS; do - echo -en "\n\$(date +'%F | %T | ')'\$0': \$AUDIOOUTPUT" | tee -a /dev/tty8 - done - echo -en "\n\$(date +'%F | %T | ')'\$0': \$(pacmd list | 'grep active profile')" | tee -a /dev/tty8 - elif (echo "\$AUDIOOUT" | grep -q '^[^|]*|[^|]*\$') ; then - \$(echo "\$AUDIOOUT" | sed -e 's/^/pacmd set-card-profile /' -e 's/|/ /') - else - : # NOP - fi - ) & -fi - eval \$THROTTLINGCOMMAND x2goclient --thinclient --no-session-edit --no-menu --maximize --add-to-known-hosts --haltbt --read-exports-from=/home/user/export \$LDAPPARAMS \$SESSIONFROM \$BACKGROUND \$BRANDING \$STARTSESSION XSESSION -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/live-build-x2go.git