Package: xfree86-common Subject: xfree86-common: allow-user-xsession does not allow user xsessions Version: 4.2.1-7 Severity: important Tags: patch sid
When trying to use a .xsession file, I discovered that the functionality doesn't work as it is documented. The core problem is on line 29 of 20xfree86-common_process-args, where the variable STARTUP is used to hold the program name of a non-default window manager. However, STARTUP is supposed to hold the string $HOME/.xsession. This causes problems in 50xfree86-common_determine-startup. I've reworked these scripts more than just that change, so that they set the default in a clearer way, and also exports a variable so that .xsession can exec the selected window manager. If you don't want to export this variable, delete the last three lines of 20xfree86-common_process-args I disclaim any copyright to these changes. (If that is what I'm supposed to say; please integrate these changes into any program you wish.) -- System Information: Debian Release: testing/unstable Architecture: powerpc Kernel: Linux polo 2.4.20-powerpc #1 Wed Mar 26 12:47:45 EST 2003 ppc Locale: LANG=C, LC_CTYPE=C Versions of packages xfree86-common depends on: ii debconf 1.2.38 Debian configuration management sy ii debianutils 2.5.2 Miscellaneous utilities specific t -- debconf information: xfree86-common/experimental_packages:
set_default_startup_session () { if [ -x /usr/bin/x-session-manager ]; then STARTUPSESSION=x-session-manager elif [ -x /usr/bin/x-window-manager ]; then STARTUPSESSION=x-window-manager elif [ -x /usr/bin/x-terminal-emulator ]; then STARTUPSESSION=x-terminal-emulator fi } case $# in 0) set_default_startup_session ;; 1) case "$1" in failsafe) if grep -qs ^allow-failsafe "$OPTIONFILE"; then if [ -e /usr/bin/x-terminal-emulator ]; then if [ -x /usr/bin/x-terminal-emulator ]; then exec x-terminal-emulator -geometry +1+1 else # fatal error errormsg "Xsession: unable to launch failsafe X session;" \ "x-terminal-emulator not executable. Aborting." fi else # fatal error errormsg "Xsession: unable to launch failsafe X session;" \ "x-terminal-emulator not found. Aborting." fi fi ;; default) set_default_startup_session ;; *) STARTUPSESSION=$(which $1) if [ -n "$STARTUPSESSION" -a -e "$STARTUPSESSION" ]; then if [ -x "$STARTUPSESSION" ]; then REALSTARTUP=$STARTUPSESSION else message "Xsession: unable to launch $1 X session; $1 not" \ "executable. Falling back to default session." fi else message "Xsession: unable to launch $1 X session; $1 not found." \ "Falling back to default session." fi ;; esac ;; *) message "Xsession: unsupported number of arguments ($#). Falling back" \ "to default session." ;; esac # Allow .xsession to use this variable export STARTUPSESSION
if grep -qs ^allow-user-xsession "$OPTIONFILE"; then for STARTUPFILE in "$STARTUP" "$ALTSTARTUP"; do if [ -e "$STARTUPFILE" ]; then if [ -x "$STARTUPFILE" ]; then REALSTARTUP=$STARTUPFILE else REALSTARTUP="sh $STARTUPFILE" fi break fi done fi if [ -z "$REALSTARTUP" ]; then REALSTARTUP=$STARTUPSESSION fi if [ -z "$REALSTARTUP" ]; then # fatal error ERRMSG="Xsession: unable to start X session; " if grep -qs ^allow-user-xsession "$OPTIONFILE"; then ERRMSG="$ERRMSG no $STARTUP file, no $ALTSTARTUP file," fi errormsg "$ERRMSG no session managers, no window managers, and no terminal" \ "emulators found. Aborting." fi