ports/104255: Unable to change window manager after the first selection/login.

martinko gamato at pobox.sk
Tue Oct 10 11:20:36 UTC 2006


>Number:         104255
>Category:       ports
>Synopsis:       Unable to change window manager after the first selection/login.
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Oct 10 11:20:19 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     martinko
>Release:        FreeBSD 6.2-PRERELEASE
>Organization:
>Environment:
FreeBSD mb-aw1n-bsd 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #0: Sat Sep 23 10:05:07 CEST 2006     root at mb-aw1n-bsd:/usr/obj/usr/src/sys/MB-AW1N  i386
>Description:
A bug in Xsession makes it impossible (under certain circumstances) for a user to change window manager for new session.

Other amendments and enhancements are part of this delivery, too.  For details please see description/discussion below.

---

On Sat, Oct 07, 2006 at 08:35:59PM +0200, "mato" wrote:
> > Soeren,
> > 
> > I haven't received any response from you to my latest email, yet.
> > I guess you've either been busy or my mail server failed me again.

I'm sorry i've been busy lately, but your not forgotten

> > 
> > Either way, I've made some changes to the files which I'm sending to you.

Hi can i get you to send a pr with these files? Since that is the right
way to do it.

> > Here's what I've done:
> > 
> > In /usr/X11R6/lib/X11/wdm/Xsession:
> > 
> > - I changed bash to sh(1).
> > - I quoted some variables.
> > - I changed ">" to ">|" in order to force overwriting of .wm_style.
> > - I amended sourcing of X11 resources and start-up code. [Based on
> > original X11 code.]
> > 
> > In /usr/X11R6/lib/X11/wdm/Xclients:
> > 
> > - I changed some bash constructs/syntax to sh(1)
> > - I double checked Xrootenv.0 stuff and commented it out.
> > - I quoted some variables.
> > - I got rid off the original WINMGR_* stuff (which was not used at all)
> > and transformed it to something useful.
> > - I amended sourcing of X11 resources. [This we do actually twice now
> > (!) but I'm not sure where it should be left/done. Well, better twice
> > than never.]
> > - I expanded case selectors.
> > - I refactored some of the code. [Except for Afterstep part which I
> > wasn't sure about.]
> > 
> > I believe the changes made improves the quality of the code as well as
> > user experience and I hope you would agree.  Should anything be not
> > clear, please let me know.
> > 
> > With regards,
> > 
> > Martin
> > 
> > :mato: wrote:
>How-To-Repeat:
Add "set -o noclobber" into your .bashrc file and you won't be able to change window manager after initial selection on login.

For other "issues" pls read description above. Thanks.
>Fix:
Output redirection must force file overwriting in Xsession.
And there are actually a couple of other places where this needs to be fixed in both Xsession and Xclients.

Please apply attached patches.

NOTE: I am sorry but I was not able to figure out how to substitute the following hardcoded paths with autoconf @*@ stuff:

Xclients.in:sysresources="/usr/X11R6/lib/X11/xinit/.Xresources"
Xclients.in:sysmodmap="/usr/X11R6/lib/X11/xinit/.Xmodmap"
Xsession.in:sysresources="/usr/X11R6/lib/X11/xinit/.Xresources"


Patch attached with submission follows:

--- configs/Xsession.in.orig	Sat Mar 26 14:57:04 2005
+++ configs/Xsession.in	Tue Oct 10 11:51:31 2006
@@ -1,6 +1,8 @@
-#!@SHELL_LOGIN@
+#!/bin/sh
 # @configure_input@
 # $XConsortium: Xsession /main/10 1995/12/18 18:21:28 gildea $
+#
+# /usr/X11R6/lib/X11/wdm/Xsession : FreeBSD : mato [24-sep-2006]
 
 # This is the basic login script for a user.  Much of the logic/code
 # for selecting and invoking the window manager is in the related file
@@ -9,17 +11,16 @@
 # ~/.Xclients.
 
 # cleanup wdm resources
-        @XRDB_PATH@ -load /dev/null
-
+ at XRDB_PATH@ -load /dev/null
 
 case $# in
 1)
-        case $1 in
-        failsafe)
-                exec @FAILSAFE@ -geometry 80x24-0-0
-                ;;
+        case "$1" in
+                failsafe)
+                        exec @FAILSAFE@ -geometry 80x24+0+0
+                        ;;
         esac
-        echo $1 >$HOME/.wm_style
+        echo "$1" >| "$HOME/.wm_style"
 esac
 
 # redirect errors to a file in user's home directory if we can
@@ -66,19 +67,23 @@
 #       fi
 #       exec @DMDIR@/Xclients
 
-startup=$HOME/.xsession
-resources=$HOME/.Xresources
+sysresources="/usr/X11R6/lib/X11/xinit/.Xresources"
+userresources="$HOME/.Xresources"
+
+if [ -f "$sysresources" ]; then
+        @XRDB_PATH@ -merge "$sysresources"
+fi
 
-if [ -f $resources ]; then
-        @XRDB_PATH@ -load $resources
+if [ -f "$userresources" ]; then
+        @XRDB_PATH@ -merge "$userresources"
 fi
 
-if [ -x $startup ]; then
-        exec $startup
+if [ -x "$HOME/.xsession" ]; then
+        exec "$HOME/.xsession"
 fi
 
-if [ -x $HOME/.Xclients ]; then
-        exec $HOME/.Xclients
+if [ -x "$HOME/.Xclients" ]; then
+        exec "$HOME/.Xclients"
 fi
 
 if [ -x @DMDIR@/Xclients ]; then
--- configs/Xclients.in.orig	Sat Mar 26 14:57:04 2005
+++ configs/Xclients.in	Tue Oct 10 12:31:47 2006
@@ -1,5 +1,7 @@
 #!@SHELL_LOGIN@
 # @configure_input@
+#
+# ~/.Xclients * WDM/FreeBSD * modified by martinko [23-sep-2006]
 
 ########################################################################
 # -*- sh -*-                                                           #
@@ -32,133 +34,279 @@
 	done
 }
 
+# output startup message
+Starting()
+{
+	echo "Starting $1 on `date`" >| "$xwm_msgs"
+}
+
+
+wm_style="$HOME/.wm_style"
+xwm_msgs="$HOME/.xwm.msgs"
+xrootenv="$HOME/Xrootenv.0"
 
 
 # these files are left sitting around by TheNextLevel.
-rm -f $HOME/Xrootenv.0
+rm -f "$xrootenv"
 rm -f /tmp/fvwmrc* 2>/dev/null
 
-# check for and set x-resources
-if [ -f $HOME/.Xresources ] ; then
-	@XRDB_PATH@ -merge $HOME/.Xresources
+# check for and set X-resources
+
+sysresources="/usr/X11R6/lib/X11/xinit/.Xresources"
+sysmodmap="/usr/X11R6/lib/X11/xinit/.Xmodmap"
+userresources="$HOME/.Xresources"
+usermodmap="$HOME/.Xmodmap"
+
+# merge in defaults and keymaps
+
+if [ -f "$sysresources" ]; then
+	xrdb -merge "$sysresources"
 fi
 
-if [ -f $HOME/.Xdefaults ] ; then
-	@XRDB_PATH@ -merge $HOME/.Xdefaults
+if [ -f "$sysmodmap" ]; then
+	xmodmap "$sysmodmap"
 fi
 
-WINMGR_NAME=@WINMGR_NAME@
-if test -z "$WINMGR_NAME"; then
-	WINMGR_NAME="UserDefined"
+if [ -f "$userresources" ]; then
+	xrdb -merge "$userresources"
+fi
+
+if [ -f "$usermodmap" ]; then
+	xmodmap "$usermodmap"
 fi
 
-# First thing - check the user preferences
-if [ -f $HOME/.wm_style ] ; then
-	WMSTYLE=`cat $HOME/.wm_style`
-	case "$WMSTYLE" in 
-#
-# first, a general purpose entry:
-	$WINMGR_NAME*)
-		# startup a window manager
-		WINMGR_PATH=@WINMGR_PATH@
-		if test -x "$WINMGR_PATH" ; then
-	        	echo Starting $WINMGR_NAME >$HOME/.xwm.msgs
-			exec $WINMGR_PATH >>$HOME/.xwm.msgs 2>&1
-		fi
-		;;
 
-	wmaker*|WindowMaker*)
-		# startup WindowMaker
-		WMAKER_PATH=@WMAKER_PATH@
+# First thing - check the user preferences
+if [ -f "$wm_style" ]
+then
+	WMSTYLE="`cat "$wm_style"`"
+	case "$WMSTYLE" in
+
+	wmaker*|WMaker*|WindowMaker*)
+		# startup Window Maker
+		WMAKER_PATH=wmaker
 		if ! test -x $WMAKER_PATH ; then
 			FindInPath $WMAKER_PATH
 			if test -n "$result" -a -x "$result"; then
-				WMAKER_PATH="$result";
+				WMAKER_PATH="$result"
 			fi
 		fi
-	
 		if test -x $WMAKER_PATH ; then
-			echo Starting WindowMaker >$HOME/.xwm.msgs
-			env > "$HOME"/Xrootenv.0
-			exec $WMAKER_PATH >>$HOME/.xwm.msgs 2>&1
+			Starting "Window Maker"
+			#env >| "$xrootenv"
+			exec $WMAKER_PATH >> "$xwm_msgs" 2>&1
 		fi
 		;;
 
 	afterstep*|Afterstep*|AfterStep*)
-		# we have to start up afterstep
-		AFTERSTEP_PATH=@AFTERSTEP_PATH@
+		# we have to start up AfterStep
+		AFTERSTEP_PATH=afterstep
 		if ! test -x $AFTERSTEP_PATH ; then
 			FindInPath $AFTERSTEP_PATH
 			if test -n "$result" -a -x "$result"; then
-				AFTERSTEP_PATH="$result";
+				AFTERSTEP_PATH="$result"
 			fi
 		fi
 		if [ -x $AFTERSTEP_PATH -a -f /usr/share/afterstep/wmconfig.conf ] ; then
 			mkdir -p $HOME/GNUstep/Library/AfterStep
 			wmconfig --output=afterstep --directories /usr/share/afterstep/wmconfig.conf 2>/dev/null
-			env > "$HOME"/Xrootenv.0
+			#env >| "$xrootenv"
 			# if this works, we stop here
-			eval "exec $AFTERSTEP_PATH" > "$HOME"/.AfterStep-errors 2>&1
+			eval "exec $AFTERSTEP_PATH" >| "$HOME"/.AfterStep-errors 2>&1
 		fi
 		;;
 
-	blackbox*|BlackBox)
-		# startup blackbox
-		BLACKBOX_PATH=@BLACKBOX_PATH@
+	blackbox*|Blackbox*|BlackBox*)
+		# startup Blackbox
+		BLACKBOX_PATH=blackbox
 		if ! test -x $BLACKBOX_PATH ; then
 			FindInPath $BLACKBOX_PATH
 			if test -n "$result" -a -x "$result"; then
-				BLACKBOX_PATH="$result";
+				BLACKBOX_PATH="$result"
 			fi
 		fi
 		if [ -x $BLACKBOX_PATH ] ; then
-			echo Starting BlackBox >$HOME/.xwm.msgs
-			exec $BLACKBOX_PATH >>$HOME/.xwm.msgs 2>&1
+			Starting "Blackbox"
+			#env >| "$xrootenv"
+			exec $BLACKBOX_PATH >> "$xwm_msgs" 2>&1
 		fi
 		;;
 
-	icewm*|IceWm)
-		# startup icewm
-		ICEWM_PATH=@ICEWM_PATH@
+	fluxbox*|Fluxbox*|FluxBox*)
+		# startup Fluxbox
+		FLUXBOX_PATH=startfluxbox
+		if ! test -x $FLUXBOX_PATH ; then
+			FindInPath $FLUXBOX_PATH
+			if test -n "$result" -a -x "$result"; then
+				FLUXBOX_PATH="$result"
+			fi
+		fi
+		if [ -x $FLUXBOX_PATH ] ; then
+			Starting "Fluxbox"
+			#env >| "$xrootenv"
+			exec $FLUXBOX_PATH >> "$xwm_msgs" 2>&1
+		fi
+		;;
+
+	fvwm*|FVWM*)
+		# startup FVWM
+		FVWM_PATH=fvwm
+		if ! test -x $FVWM_PATH ; then
+			FindInPath $FVWM_PATH
+			if test -n "$result" -a -x "$result"; then
+				FVWM_PATH="$result"
+			fi
+		fi
+		if test -x $FVWM_PATH ; then
+			Starting "FVWM"
+			#env >| "$xrootenv"
+			exec $FVWM_PATH >> "$xwm_msgs" 2>&1
+		fi
+		;;
+
+	fvwm2*|FVWM2*)
+		# startup FVWM2
+		FVWM2_PATH=fvwm2
+		if ! test -x $FVWM2_PATH ; then
+			FindInPath $FVWM2_PATH
+			if test -n "$result" -a -x "$result"; then
+				FVWM2_PATH="$result"
+			fi
+		fi
+		if test -x $FVWM2_PATH ; then
+			Starting "FVWM2"
+			#env >| "$xrootenv"
+			exec $FVWM2_PATH >> "$xwm_msgs" 2>&1
+		fi
+		;;
+
+	fvwm95*|FVWM95*)
+		# startup FVWM95
+		FVWM95_PATH=fvwm95
+		if ! test -x $FVWM95_PATH ; then
+			FindInPath $FVWM95_PATH
+			if test -n "$result" -a -x "$result"; then
+				FVWM95_PATH="$result"
+			fi
+		fi
+		if test -x $FVWM95_PATH ; then
+			Starting "FVWM95"
+			#env >| "$xrootenv"
+			exec $FVWM95_PATH >> "$xwm_msgs" 2>&1
+		fi
+		;;
+
+	icewm*|IceWm*|IceWM*)
+		# startup IceWM
+		ICEWM_PATH=icewm
 		if ! test -x $ICEWM_PATH ; then
 			FindInPath $ICEWM_PATH
 			if test -n "$result" -a -x "$result"; then
-				ICEWM_PATH="$result";
+				ICEWM_PATH="$result"
 			fi
 		fi
 		if [ -x $ICEWM_PATH ] ; then
-			echo Starting icewm >$HOME/.xwm.msgs
-			exec $ICEWM_PATH >>$HOME/.xwm.msgs 2>&1
+			Starting "IceWM"
+			#env >| "$xrootenv"
+			exec $ICEWM_PATH >> "$xwm_msgs" 2>&1
+		fi
+		;;
+
+	twm*|TWM*)
+		# startup TWM
+		TWM_PATH=twm
+		if ! test -x $TWM_PATH ; then
+			FindInPath $TWM_PATH
+			if test -n "$result" -a -x "$result"; then
+				TWM_PATH="$result"
+			fi
+		fi
+		if test -x $TWM_PATH ; then
+			Starting "TWM"
+			#env >| "$xrootenv"
+			exec $TWM_PATH >> "$xwm_msgs" 2>&1
+		fi
+		;;
+
+	xfce*|Xfce*|XFce*|XFCE*)
+		# startup Xfce
+		XFCE_PATH=startxfce4
+		if ! test -x $XFCE_PATH ; then
+			FindInPath $XFCE_PATH
+			if test -n "$result" -a -x "$result"; then
+				XFCE_PATH="$result"
+			fi
+		fi
+		if test -x $XFCE_PATH ; then
+			Starting "Xfce"
+			#env >| "$xrootenv"
+			exec $XFCE_PATH >> "$xwm_msgs" 2>&1
+		fi
+		;;
+
+	gnome*|Gnome*)
+		# startup Gnome
+		GNOME_PATH=gnome-session
+		if ! test -x $GNOME_PATH ; then
+			FindInPath $GNOME_PATH
+			if test -n "$result" -a -x "$result"; then
+				GNOME_PATH="$result"
+			fi
+		fi
+		if test -x $GNOME_PATH ; then
+			Starting "Gnome"
+			#env >| "$xrootenv"
+			exec $GNOME_PATH >> "$xwm_msgs" 2>&1
+		fi
+		;;
+
+	startkde*|kde*|KDE*)
+		# startup KDE
+		STARTKDE_PATH=startkde
+		if ! test -x $STARTKDE_PATH ; then
+			FindInPath $STARTKDE_PATH
+			if test -n "$result" -a -x "$result"; then
+				STARTKDE_PATH="$result"
+			fi
+		fi
+		if [ -x $STARTKDE_PATH ] ; then
+			Starting "KDE"
+			#env >| "$xrootenv"
+			exec $STARTKDE_PATH -console >> "$xwm_msgs" 2>&1
 		fi
 		;;
 
 	xsession*|Xsession*)
 		# startup xsession
-		XSESSION_PATH=@XSESSION_PATH@
+		XSESSION_PATH=xsession
 		if ! test -x $XSESSION_PATH ; then
 			FindInPath $XSESSION_PATH
 			if test -n "$result" -a -x "$result"; then
-				XSESSION_PATH="$result";
+				XSESSION_PATH="$result"
 			fi
 		fi
 		if [ -x $XSESSION_PATH ] ; then
-			echo Starting xsession >$HOME/.xwm.msgs
-			exec $XSESSION_PATH -console >>$HOME/.xwm.msgs 2>&1
+			Starting "xsession"
+			#env >| "$xrootenv"
+			exec $XSESSION_PATH -console >> "$xwm_msgs" 2>&1
 		fi
 		;;
 
-	startkde*|kde*|KDE*)
-		# startup kde
-		STARTKDE_PATH=@STARTKDE_PATH@
-		if ! test -x $STARTKDE_PATH ; then
-			FindInPath $STARTKDE_PATH
+	# last, a general purpose entry:
+	*)
+		# try and startup a window manager
+		WINMGR_NAME="$WMSTYLE"
+		WINMGR_PATH="$WMSTYLE"
+		if ! test -x $WINMGR_PATH ; then
+			FindInPath $WINMGR_PATH
 			if test -n "$result" -a -x "$result"; then
-				STARTKDE_PATH="$result";
+				WINMGR_PATH="$result"
 			fi
 		fi
-		if [ -x $STARTKDE_PATH ] ; then
-			echo Starting kde >$HOME/.xwm.msgs
-			exec $STARTKDE_PATH -console >>$HOME/.xwm.msgs 2>&1
+		if test -x "$WINMGR_PATH" ; then
+	        	Starting "$WINMGR_NAME"
+			#env >| "$xrootenv"
+			exec $WINMGR_PATH >> "$xwm_msgs" 2>&1
 		fi
 		;;
     esac
@@ -186,16 +334,16 @@
 # with both fvwm95 and fvwm2
 # (try fvwm95 first, then fvwm2).
 for FVWMVER in 95 95-2 2; do
-    if [ -n "$(type -path fvwm${FVWMVER})" ]; then
-        env > "$HOME"/Xrootenv.0
+    if [ -n "`type -path fvwm${FVWMVER}`" ]; then
+        #env >| "$xrootenv"
         # if this works, we stop here
-        eval "exec fvwm${FVWMVER} ${FVWMOPTIONS}" > "$HOME"/.FVWM${FVWMVER}-errors 2>&1
+        eval "exec fvwm${FVWMVER} ${FVWMOPTIONS}" >| "$HOME"/.FVWM${FVWMVER}-errors 2>&1
     fi
 done
 
 # gosh, neither fvwm95 nor fvwm2 is available;
 # let's try regular fvwm (AnotherLevel doesn't work with fvwm1).
-if [ -n "$(type -path fvwm)" ]; then
+if [ -n "`type -path fvwm`" ]; then
     # if this works, we stop here
     exec fvwm
 fi
--- configs/KillConsole.orig	Tue Oct 10 13:04:27 2006
+++ configs/KillConsole	Tue Oct 10 13:01:47 2006
@@ -0,0 +1,7 @@
+#!/bin/sh
+#
+# /usr/X11R6/lib/X11/wdm/KillConsole * mato [10-oct-2006]
+#
+# Kill xconsole process started before the Login window.
+#
+pkill xconsole || true

>Release-Note:
>Audit-Trail:
>Unformatted:
 >> > > Soeren wrote:
 >> > >   
 >>> > >> On Sun, 17 Sep 2006 mato wrote:
 >>> > >>
 >>> > >>     
 >>>> > >>> Hello Soeren,
 >>>> > >>>
 >>>> > >>> I've just installed WDM and am looking around and trying to configure it
 >>>> > >>> for my needs.
 >>>> > >>>
 >>>> > >>> while investigating /usr/X11R6/lib/X11/wdm/Xclients i've noticed
 >>>> > >>> Xrootenv.0 file being created. -- what is the purpose of this file pls
 >>>> > >>> ?? and couldn't it be hidden so as not to pollute user home ??
 >>>> > >>>       
 >>> > >> I'm looking at it and can't seem to see why Xrootenv.0 is needed.
 >>> > >>
 >>> > >>     
 >> > >
 >> > > it is not needed. at least not for wdm.
 >> > > i googled around but found only questions "what is it good for?" but no
 >> > > answers.
 >> > > i believe we can safely comment it out.
 >> > >
 >> > >   
 >>>> > >>> also what is the point of WINMGR_NAME and "general purpose entry" in the
 >>>> > >>> same file ??
 >>>> > >>>
 >>>> > >>>       
 >>> > >> I'll look into that later.
 >>> > >>
 >>> > >>     
 >>>> > >>> pls note that the scripts provided with wdm make use of bash which is
 >>>> > >>> not listed as a dependency. (!)
 >>>> > >>>
 >>>> > >>> and why is bash in shebang line of the scripts called with -login ?
 >>>> > >>>       
 >>> > >> Cause the configure script looks to see if bash is installed if so it
 >>> > >> uses it.
 >>> > >>
 >>> > >>     
 >> > >
 >> > > ok, i see. and what happens when bash is not installed. do we use sh(1) ?
 >> > > and if so, why not to use it always?
 >> > > btw, does sh(1) know $() ??
 >> > > and still -- why used with -login pls ?
 >> > >
 >> > >   
 >>>> > >>> also ps(1) shows 3 instances of wdm running:
 >>>> > >>> root         726  0.0  0.3  5992  2828  ??  S    11:52AM   0:00.33
 >>>> > >>> /usr/X11R6/bin/wdm -nodaemon ttyv8
 >>>> > >>> root         727  0.0  0.3  5988  2864  ??  I    11:52AM   0:00.11
 >>>> > >>> /usr/X11R6/bin/wdm -nodaemon ttyv8
 >>>> > >>> root        1188  0.0  0.3  6128  3304  ??  Is   12:06PM   0:00.13
 >>>> > >>> /usr/X11R6/bin/wdm -nodaemon ttyv8
 >>>> > >>> why is that so pls ???
 >>>> > >>>
 >>>> > >>>       
 >>> > >> I have to look further into that.
 >>> > >>
 >>> > >>     
 >>>> > >>> /usr/X11R6/lib/X11/wdm/Xsession needs a fix. here's what i've done:
 >>>> > >>>
 >>>> > >>> [mb-aw1n-bsd][mato][/usr/home/mato]
 >>>> > >>> $ diff -u /usr/X11R6/lib/X11/wdm/Xsession.old
 >>>> > >>> /usr/X11R6/lib/X11/wdm/Xsession
 >>>> > >>> --- /usr/X11R6/lib/X11/wdm/Xsession.old Sun Sep 17 09:37:41 2006
 >>>> > >>> +++ /usr/X11R6/lib/X11/wdm/Xsession     Sun Sep 17 16:07:59 2006
 >>>> > >>> @@ -1,6 +1,8 @@
 >>>> > >>> #!/usr/local/bin/bash -login
 >>>> > >>> # configs/Xsession.  Generated from Xsession.in by configure.
 >>>> > >>> # $XConsortium: Xsession /main/10 1995/12/18 18:21:28 gildea $
 >>>> > >>> +#
 >>>> > >>> +# /usr/X11R6/lib/X11/wdm/Xsession : FreeBSD : mato [17-sep-2006]
 >>>> > >>>
 >>>> > >>> # This is the basic login script for a user.  Much of the logic/code
 >>>> > >>> # for selecting and invoking the window manager is in the related file
 >>>> > >>> @@ -9,17 +11,16 @@
 >>>> > >>> # ~/.Xclients.
 >>>> > >>>
 >>>> > >>> # cleanup wdm resources
 >>>> > >>> -        /usr/X11R6/bin/xrdb -load /dev/null
 >>>> > >>> -
 >>>> > >>> +/usr/X11R6/bin/xrdb -load /dev/null
 >>>> > >>>
 >>>> > >>> case $# in
 >>>> > >>> 1)
 >>>> > >>> -        case $1 in
 >>>> > >>> -        failsafe)
 >>>> > >>> -                exec /usr/X11R6/bin/xterm -geometry 80x24-0-0
 >>>> > >>> -                ;;
 >>>> > >>> +        case "$1" in
 >>>> > >>> +               failsafe)
 >>>> > >>> +                       exec /usr/X11R6/bin/xterm -geometry 80x24-0-0
 >>>> > >>> +                       ;;
 >>>> > >>>         esac
 >>>> > >>> -        echo $1 >$HOME/.wm_style
 >>>> > >>> +        echo "$1" >| $HOME/.wm_style
 >>>> > >>> esac
 >>>> > >>>
 >>>> > >>> # redirect errors to a file in user's home directory if we can
 >>>> > >>> [mb-aw1n-bsd][mato][/usr/home/mato]
 >>>> > >>> $
 >>>> > >>>       
 >>> > >> I'll add the ", but i don't see why there is a need for the |
 >>> > >>
 >>> > >>     
 >> > >
 >> > > it is necessary. otherwise it might not work with some configurations
 >> > > (like mine;)) where "set -o noclobber" is used (as Xsession is (i
 >> > > believe) run under user just logged on and thus bash (or other shell)
 >> > > makes use of users config/rc files).
 >> > >
 >> > > another thing i've been just thinking of is that we source/merge
 >> > > .Xresources both in Xsession and then in Xclients. i think it
 >> > > might/should be done in one place only, .Xsession preferably.
 >> > > also i'd like to expand Xsession as follows (taken from default
 >> > > /usr/X11R6/lib/X11/xinit/xinitrc :
 >> > >
 >> > > --
 >> > >
 >> > > userresources=$HOME/.Xresources
 >> > > usermodmap=$HOME/.Xmodmap
 >> > > sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
 >> > > sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap
 >> > >
 >> > > # merge in defaults and keymaps
 >> > >
 >> > > if [ -f $sysresources ]; then
 >> > >     /usr/X11R6/bin/xrdb -merge $sysresources
 >> > > fi
 >> > >
 >> > > if [ -f $sysmodmap ]; then
 >> > >     /usr/X11R6/bin/xmodmap $sysmodmap
 >> > > fi
 >> > >
 >> > > if [ -f $userresources ]; then
 >> > >     /usr/X11R6/bin/xrdb -merge $userresources
 >> > > fi
 >> > >
 >> > > if [ -f $usermodmap ]; then
 >> > >     /usr/X11R6/bin/xmodmap $usermodmap
 >> > > fi
 >> > >
 >> > > --
 >> > >
 >> > > what do you say ?
 >> > > i'd prefer a new patch for you.
 >> > >
 >> > > with regards,
 >> > >
 >> > > Martin
 >> > >
 >> > >   
 



More information about the freebsd-ports-bugs mailing list