Laércio de Sousa has proposed merging lp:~oiteam/epoptes/fix-get-display into lp:epoptes.
Requested reviews: Epoptes Developers (epoptes) For more details, see: https://code.launchpad.net/~oiteam/epoptes/fix-get-display/+merge/244765 This patch fixes epoptes-client's script get-display for new contexts, namely: * systemd-loging has replaced ConsoleKit for seat/session/user management. * XAUTHORITY file is not found in ~/.Xauthority (KDE and GDM/GNOME store it in different paths). -- Your team Orientadores de Informática is subscribed to branch lp:~oiteam/epoptes/fix-get-display.
=== modified file 'epoptes-client/get-display' --- epoptes-client/get-display 2012-03-27 14:32:48 +0000 +++ epoptes-client/get-display 2014-12-15 17:13:24 +0000 @@ -38,6 +38,25 @@ fi } +find_xauthority() { + # Plan A: try GNOME/GDM + XAUTHORITY=$(ls /var/run/gdm/auth-for-$USER-*/database) + [ -s $XAUTHORITY ] && return + + # Plan B: try KDE + UID="$(getent passwd "$USER" | cut -d: -f3)" + XAUTHORITY=/tmp/kde-$USER/xauth-$UID-$(echo $DISPLAY | tr ':' '_') + [ -s $XAUTHORITY ] && return + + # Plan C: try ~/.Xauthority + HOME="$(getent passwd "$USER" | cut -d: -f6)" + XAUTHORITY=$HOME/.Xauthority + [ -s $XAUTHORITY ] && return + + #Plan D: give up! + unset XAUTHORITY +} + # Plan A: check if the variables are already set exit_if_found @@ -49,30 +68,55 @@ exit_if_found done -# Plan C: try ck-list-sessions -while read var equals value; do - case "$var" in - Session*) - unset USER DISPLAY XAUTHORITY - ;; - unix-user) - value=${value%\'} - USER=${value#\'} - ;; - x11-display) - value=${value%\'} - DISPLAY=${value#\'} - if [ -n "$DISPLAY" ]; then - XAUTHORITY="$(getent passwd "$USER" | cut -d: -f6)/.Xauthority" - exit_if_found - fi - ;; - esac -done <<EOF +# Plan C: try loginctl +if [ -x /usr/bin/loginctl ]; then + for session in $(loginctl --no-legend | awk '{ print $1 }'); do + while read line; do + eval $line + case "$line" in + Name*) + USER=$Name + ;; + Display*) + DISPLAY=$Display + if [ -n "$DISPLAY" ]; then + find_xauthority + exit_if_found + fi + ;; + esac + done << EOF +$(loginctl show-session $session) +EOF + done +fi + +# Plan D: try ck-list-sessions +if [ -x /usr/bin/ck-list-sessions ]; then + while read var equals value; do + case "$var" in + Session*) + unset USER DISPLAY XAUTHORITY + ;; + unix-user) + value=${value%\'} + USER=${value#\'} + ;; + x11-display) + value=${value%\'} + DISPLAY=${value#\'} + if [ -n "$DISPLAY" ]; then + find_xauthority + exit_if_found + fi + ;; + esac + done <<EOF $(ck-list-sessions) EOF +fi -# Plan D: give up! +# Plan E: give up! echo "Could not detect or access the active display" >&2 echo "DISPLAY= XAUTHORITY="
-- Mailing list: https://launchpad.net/~oiteam Post to : oiteam@lists.launchpad.net Unsubscribe : https://launchpad.net/~oiteam More help : https://help.launchpad.net/ListHelp