/etc/X11/Xsession-debian-edu is in debian-edu-config 1.702.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | #!/bin/sh
#
# /etc/X11/Xsession
#
# global Xsession file -- used by display managers and xinit (startx)
set -e
message () {
  # pretty-print messages of arbitrary length
  echo "$*" | fold -s -w ${COLUMNS:-80} >&2;
  if [ ! -z "$DISPLAY" ] ; then
    echo "$*" | fold -s -w ${COLUMNS:-80} | xmessage -file -
  fi
}
message_nonl () {
  # pretty-print messages of arbitrary length (no trailing newline)
  echo -n "$*" | fold -s -w ${COLUMNS:-80} >&2;
  if [ ! -z "$DISPLAY" ] ; then
    echo -n "$*" | fold -s -w ${COLUMNS:-80} | xmessage -file -
  fi
}
errormsg () {
  # exit script with error
  message "$*"
  exit 1;
}
internal_errormsg () {
  # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message
  message "$*\n"
          "Please report the package name, version, and the text of the" \
          "above error message(s) to <debian-x@lists.debian.org>.";
  exit 1;
}
run_parts () {
  # until run-parts --noexec is implemented
  if [ -z "$1" ]; then
    internal_errormsg "internal run_parts called without an argument"
  fi
  if [ ! -d "$1" ]; then
    internal_errormsg "internal run_parts called, but $1 does not exist or is not a directory."
  fi
  for F in $(ls $1); do
    if expr "$F" : '[[:alnum:]_-]\+$' > /dev/null 2>&1; then
      if [ -f "$1/$F" ]; then
        echo "$1/$F"
      fi
    fi
  done;
}
# initialize variables for use by all session scripts
OPTIONFILE=/etc/X11/Xsession.options
SYSMODMAP=/etc/X11/Xmodmap
USRMODMAP=$HOME/.Xmodmap
SYSRESOURCES=/etc/X11/Xresources
USRRESOURCES=$HOME/.Xresources
SYSSESSIONDIR=/etc/X11/Xsession.d
STARTUP=$HOME/.xsession
ALTSTARTUP=$HOME/.Xsession
ERRFILE=$HOME/.xsession-errors
# attempt to create an error file; abort if we cannot
if touch $ERRFILE 2> /dev/null && [ -w $ERRFILE ]; then
  chmod 600 "$ERRFILE"
elif ERRFILE=$(tempfile 2> /dev/null); then
  if ! ln -sf "$ERRFILE" "${TMPDIR:=/tmp}/xsession-$USER"; then
    message "Xsession: unable to symlink \"$TMPDIR/xsession-$USER\" to" \
             "\"$ERRFILE\"."
  fi
else
  errormsg "Xsession: unable to create X session log/error file.  Aborting."
fi
exec > "$ERRFILE" 2>&1
# sanity check; is our session script directory present?
if [ ! -d "$SYSSESSIONDIR" ]; then
  errormsg "Xsession: no $SYSSESSIONDIR directory found.  Aborting." >&2
fi
# use run-parts to source every file in the session directory; we source
# instead of executing so that the variables and functions defined above
# are available to the scripts, and so that they can pass variables to each
# other
SESSIONFILES=$(run_parts $SYSSESSIONDIR)
if [ -n "$SESSIONFILES" ]; then
  for SESSIONFILE in $SESSIONFILES; do
    . $SESSIONFILE
  done
fi
exit 0
# vim:ai:et:sts=2:sw=2:tw=80:
 |