Skip to content

Instantly share code, notes, and snippets.

@Canx
Created April 29, 2021 07:53
Show Gist options
  • Save Canx/db2692a29e399ee7e2c97aebd837f4c0 to your computer and use it in GitHub Desktop.
Save Canx/db2692a29e399ee7e2c97aebd837f4c0 to your computer and use it in GitHub Desktop.
Parche para que funcione el control de epoptes en el login en Lliurex19. Sustituir get-display en /usr/share/epoptes-client en clientes. Ver líneas 52-55.
#!/bin/sh
###########################################################################
# Output DISPLAY and XAUTHORITY for the current user's X screen.
# A root user can then use those to access the user's display.
# Usage: export $(get-display)
#
# Copyright (C) 2012 Alkis Georgopoulos <[email protected]>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# On Debian GNU/Linux systems, the complete text of the GNU General
# Public License can be found in `/usr/share/common-licenses/GPL'.
###########################################################################
exit_if_found() {
# Check if DISPLAY/XAUTHORITY are valid.
# XAUTHORITY may even be empty, in which case it must not be exported.
test -n "$DISPLAY" || return
export DISPLAY XAUTHORITY
test -n "$XAUTHORITY" || unset XAUTHORITY
if xwininfo -root -size >/dev/null 2>&1; then
echo "DISPLAY=$DISPLAY"
test -n "$XAUTHORITY" && echo "XAUTHORITY=$XAUTHORITY"
exit 0
else
unset DISPLAY XAUTHORITY
fi
}
# Plan A: check if the variables are already set
exit_if_found
# Plan B: check if we can get the info from some running process
for p in $(pgrep -x 'ldm|gdmgreeter|kdm_greet|lxdm-greeter-gt|dbus-daemon'); do
# The first DISPLAY= is only there to prevent a possible syntax error
export DISPLAY="$DISPLAY" $(tr '\0' '\n' 2>/dev/null < /proc/$p/environ |
egrep '^DISPLAY=|^XAUTHORITY=')
exit_if_found
done
# Plan B2 (by Canx): test sddm Xauthority file if not logged in
XAUTHORITY="$(/usr/bin/find /var/run/sddm/ -type f)"
DISPLAY=":0"
exit_if_found
# 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
$(ck-list-sessions)
EOF
# Plan D: give up!
echo "Could not detect or access the active display" >&2
echo "DISPLAY=
XAUTHORITY="
exit 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment