2 XCOMM ##########################################################################
6 XCOMM Common Desktop Environment (CDE)
8 XCOMM Configuration script for the Login Manager
10 XCOMM (c) Copyright 1996 Digital Equipment Corporation.
11 XCOMM (c) Copyright 1993,1994,1996 Hewlett-Packard Company.
12 XCOMM (c) Copyright 1993,1994,1996 International Business Machines Corp.
13 XCOMM (c) Copyright 1993,1994,1996 Sun Microsystems, Inc.
14 XCOMM (c) Copyright 1993,1994,1996 Novell, Inc.
15 XCOMM (c) Copyright 1996 FUJITSU LIMITED.
16 XCOMM (c) Copyright 1996 Hitachi.
18 XCOMM ************** DO NOT EDIT THIS FILE **************
20 XCOMM CDE_INSTALLATION_TOP/bin/Xsession is a factory-default file and will
21 XCOMM be unconditionally overwritten upon subsequent installation.
22 XCOMM Modification is discouraged.
24 XCOMM $TOG: Xsession.src /main/19 1999/03/30 09:38:50 mgreess $
26 XCOMM Usage: $0 [-session session_name]
28 XCOMM ##########################################################################
36 if [ -z "$OPENWINHOME" ]
38 export OPENWINHOME="/usr/openwin"
45 * Platform specific definitions
47 * cpp_XINITUSER - user's xinit startup file
48 * cpp_MAIL - system mail file
49 * cpp_HELLO - dthello command line
50 * cpp_XDMSYS - xdm system session file
55 # define cpp_XINITUSER "$HOME/.xinitrc"
56 # define cpp_MAIL "/var/spool/mail/$USER"
57 #elif defined (__hpux)
58 # define cpp_XDMSYS "/usr/lib/X11/xdm/sys.xsession"
60 # define cpp_MAIL "/var/mail/$USER"
65 # define cpp_MAIL "/usr/spool/mail/$USER"
68 #if defined (__hpux) && defined (BLS)
70 # define cpp_HELLO "$DT_BINPATH/dthello -file /etc/copyright -file $HOME/.dtlogininfo &"
74 # define cpp_MAIL "/var/spool/mail/$USER"
75 # define cpp_XDIR "/usr/bin"
76 # define cpp_XINITUSER "$HOME/.xinitrc"
77 # define cpp_XDMSYS "/etc/X11/Xsession"
79 # define cpp_HELLO "$DT_BINPATH/dthello -file $DT_INSTALL/copyright &"
83 # define cpp_MAIL "/var/mail/$USER"
84 # define cpp_XINITUSER "$HOME/.xinitrc"
85 # define cpp_XDMSYS "/usr/local/lib/X11/xdm/Xsession"
87 # define cpp_HELLO "$DT_BINPATH/dthello -file $DT_INSTALL/copyright &"
91 # define cpp_MAIL "/var/mail/$USER"
92 # define cpp_XINITUSER "$HOME/.xinitrc"
93 # define cpp_XDMSYS "/etc/X11/xdm/Xsession"
95 # define cpp_HELLO "$DT_BINPATH/dthello -file $DT_INSTALL/copyright &"
99 # define cpp_MAIL "/var/mail/$USER"
100 # define cpp_XINITUSER "$HOME/.xinitrc"
101 # define cpp_XDMSYS "/etc/X11/xdm/Xsession"
103 # define cpp_HELLO "$DT_BINPATH/dthello -file $DT_INSTALL/copyright &"
109 * Fallback definitions
113 #if !defined (cpp_XINITUSER)
114 # define cpp_XINITUSER "$HOME/.x11start"
117 #if !defined (cpp_MAIL)
118 # define cpp_MAIL "/usr/mail/$USER"
121 #if !defined (cpp_HELLO)
122 # define cpp_HELLO "$DT_BINPATH/dthello &"
125 #if !defined (cpp_XDMSYS)
126 # define cpp_XDMSYS "/usr/lib/X11/xdm/Xsession"
129 XCOMM ##########################################################################
132 XCOMM This script starts the user's session. It searches for one of three
133 XCOMM types of startup mechanisms, in the following order:
135 XCOMM DT existence of CDE DT Session Manager on the system
136 XCOMM XDM "$HOME/.xsession" (executable)
137 XCOMM xinit cpp_XINITUSER (executable)
139 XCOMM If none of these startup mechanisms exist, a default window manager
140 XCOMM and terminal emulator client are started.
142 XCOMM ##########################################################################
145 XCOMM Variables must be explicitly exported
149 XCOMM ##########################################################################
151 XCOMM Initialize session startup logging
153 XCOMM ##########################################################################
155 exec >/dev/null 2>/dev/null
158 LOGFILENAME=$LOGDIR/startlog
159 MSGLOGFILENAME=$LOGDIR/errorlog
161 if [ ! -d $LOGDIR ]; then
163 if [ -d $LOGDIR ]; then
168 [ -f $LOGFILENAME.older ] && rm -f $LOGFILENAME.older
169 [ -f $LOGFILENAME.old ] && mv -f $LOGFILENAME.old $LOGFILENAME.older
170 [ -f $LOGFILENAME ] && mv -f $LOGFILENAME $LOGFILENAME.old
172 [ ! -f $MSGLOGFILENAME ] && touch $MSGLOGFILENAME
174 if [ -w $LOGFILENAME ]; then
175 exec >>$LOGFILENAME 2>&1
181 echo "--- $1" >>$LOGFILENAME 2>&1
187 XCOMM ##########################################################################
189 XCOMM Global environment section
191 XCOMM DT pre-sets the following environment variables for each user.
195 XCOMM DISPLAY set to the value of the first field in the Xservers file.
196 XCOMM HOME set to the user's home directory (from /etc/passwd)
197 XCOMM LANG set to the display's current NLS language (if any)
198 XCOMM LC_ALL set to the value of $LANG
199 XCOMM LOGNAME set to the user name
200 XCOMM PATH set to the value of the Dtlogin "userPath" resource
201 XCOMM USER set to the user name
202 XCOMM SHELL set to the user's default shell (from /etc/passwd)
203 XCOMM TZ set to the value of the Dtlogin "timeZone" resource
208 XCOMM TERM set to xterm
209 XCOMM EDITOR set to the default editor
210 XCOMM KBD_LANG set to the value of $LANG for certain languages
211 XCOMM MAIL set to cpp_MAIL
214 XCOMM Three methods are available to modify or add to this list depending
215 XCOMM on the desired scope of the resulting environment variable.
217 XCOMM 1. X server and/or all users on a display (Xconfig file)
218 XCOMM 2. all users on a display (Xsession file)
219 XCOMM 3. individual users (.dtprofile file)
221 XCOMM See DT on-line help, the DT Users Guide, or the Dtlogin(1X) man
222 XCOMM page for details on setting environment variables.
225 XCOMM ##########################################################################
227 [ -z "$EDITOR" ] && EDITOR=CDE_INSTALLATION_TOP/bin/dtpad
228 [ -z "$MAIL" ] && MAIL=cpp_MAIL
229 [ -z "$LANG" ] && LANG="C"
231 SESSION_SVR=`hostname`
233 export PATH EDITOR MAIL TERM SESSION_SVR LANG
235 #if defined (_AIX) && defined (AIXV4)
237 XCOMM Clear the LFT message locale override if set
239 if [ "$LC_MESSAGES" = "C@lft" ]
245 #if defined (__osf__)
247 HASH Set XFILESEARCHPATH if necessary
249 if [ -z "$XFILESEARCHPATH" ]
251 export XFILESEARCHPATH="%D"
254 HASH check if network is configured. If not, set environment variable
255 HASH so that tooltalk will use localhost/loopback rather than system
257 RCMGR=/usr/sbin/rcmgr
258 NUM_NETCONFIG=`$RCMGR get NUM_NETCONFIG`
259 if [ "$NUM_NETCONFIG" = '' -o "$NUM_NETCONFIG" = 0 ]; then
260 export DTNONETWORK=true
266 HASH Set the keyboard language if necessary...
271 bulgarian | czech | hebrew | hungarian | \
272 japanese | korean | polish | rumanian | \
273 russian | serbocroatian)
277 chinese-t) KBD_LANG=t_chinese
279 chinese-s) KBD_LANG=s_chinese
288 HASH Locate configuration file directories
290 XDIR=XPROJECTROOT/bin
291 DT_BINPATH=CDE_INSTALLATION_TOP/bin
292 DT_INSTALL=CDE_INSTALLATION_TOP
293 DT_INSTALL_CONFIG=CDE_INSTALLATION_TOP/config
294 DT_CONFIG=CDE_CONFIGURATION_TOP/config
295 DT_CONFIG_PATH="$DT_INSTALL_CONFIG $DT_CONFIG"
297 XCOMM ##########################################################################
299 XCOMM Default desktop component configuration variable settings
301 XCOMM This section sets the default value for variables controlling
302 XCOMM some desktop components.
304 XCOMM ##########################################################################
307 HASH Input method server startup
309 if [ -z "$DTSTARTIMS" ]; then
313 if [ "$DTSTARTIMS" = "False" ]; then
318 HASH Default desktop screen saver action list
320 export DTSCREENSAVERLIST="StartDtscreenSwarm StartDtscreenQix \
321 StartDtscreenFlame StartDtscreenHop StartDtscreenImage StartDtscreenLife \
322 StartDtscreenRotor StartDtscreenPyro StartDtscreenWorm StartDtscreenBlank"
325 HASH Session startup clients and args
327 if [ "$SESSIONTYPE" = "altDt" ]; then
328 dtstart_session[0]="$SDT_ALT_SESSION"
329 dtstart_hello[0]="$SDT_ALT_HELLO"
332 if [ $# -ge 2 ]; then
333 if [ "$1" = "-session" ]; then
334 DTSESSION_ARGS="$1 $2"
337 dtstart_session[0]="$DT_BINPATH/dtsession $DTSESSION_ARGS"
338 dtstart_hello[0]=cpp_HELLO
340 dtstart_session[1]="$HOME/.xsession"
341 dtstart_session[2]=cpp_XINITUSER
342 dtstart_session[3]="$XDIR/xterm -geometry 80x24+10+10"
343 dtstart_hello[1]="$XDIR/xsetroot -default &"
344 dtstart_searchpath="$DT_BINPATH/dtsearchpath -ksh"
345 dtstart_ttsession="$DT_BINPATH/ttsession -s"
346 dtstart_dtdbcache="$DT_BINPATH/dtdbcache -init"
348 HASH dtdbcache file's directory should match
349 HASH _DTDTSMMTEMPDIR in DtSvc/DtUtil1/DtsMM.h
352 dtdbcacherm="rm -f /var/tmp/dtdbcache_$DISPLAY"
354 dtdbcacherm="rm -f /tmp/dtdbcache_$DISPLAY"
356 dtstart_appgather="$DT_BINPATH/dtappgather &"
357 #if defined(USL) || defined(sun) || defined(__uxp__)
358 dtstart_dsdm="$DT_BINPATH/dsdm &"
361 xdmstart_session[0]="$HOME/.xsession"
362 xdmstart_session[1]=cpp_XDMSYS
363 xdmstart_session[2]="xterm -geometry 80x24+10+10 -ls"
364 xdmstart_hello="$XDIR/xsetroot -default &"
367 SESSIONLOGDIR=$LOGDIR/sessionlogs
368 SESSIONLOGFILENAME="$SESSIONLOGDIR/$SESSION_SVR"_DISPLAY=$DISPLAY
370 if [ ! -d $SESSIONLOGDIR ]; then
372 if [ -d $SESSIONLOGDIR ]; then
373 chmod 755 $SESSIONLOGDIR
377 touch $SESSIONLOGFILENAME
379 if [ -w $SESSIONLOGFILENAME ]; then
380 dtstart_sessionlogfile="$SESSIONLOGFILENAME"
382 dtstart_sessionlogfile="/dev/null"
385 rm -f $SESSIONLOGFILENAME
388 if [ "$DTXSERVERLOCATION" != "remote" ]
391 HASH Start fallback console
393 if [ -x $XDIR/fbconsole ]
401 #include "_common.ksh.src"
404 #if defined (__osf__)
406 XCOMM Bring up the sysman checklist if it hasn't been run before
408 if [ -f /usr/sbin/start_checklist ]
410 Log "Starting the checklist setup"
411 /usr/sbin/start_checklist&
415 XCOMM ##########################################################################
417 XCOMM Source user's desktop profile
419 XCOMM This section determines if the user has a desktop profile in their
420 XCOMM home directory. If not, the desktop default profile is copied to
421 XCOMM the home directory. The desktop profile is then sourced. The purpose
422 XCOMM is to incorporate any per-user/per-session environment customizations
423 XCOMM and thereby propagate them to applications and desktop components.
425 XCOMM ##########################################################################
428 DTSYSPROFILE=sys.dtprofile
431 if [ ! -f $HOME/$DTPROFILE ]; then
432 for i in $DT_CONFIG_PATH
434 if [ -f $i/$DTSYSPROFILE ]; then
437 /SYSPROFILE COMMENT START/ {printit=0; next}
438 /SYSPROFILE COMMENT END/ {printit=1; next}
439 printit==1 {print}' <$i/$DTSYSPROFILE >$HOME/$DTPROFILE
440 /bin/chmod 755 $HOME/$DTPROFILE
447 HASH source the .dtprofile.
449 if [ -f $HOME/$DTPROFILE ]; then
450 dtprofile_errors=`KORNSHELL -n $HOME/$DTPROFILE 2>&1`
451 if [ "0" = "$?" ]; then
452 Log "sourcing $HOME/$DTPROFILE..."
455 Log "not sourcing $HOME/$DTPROFILE due to errors..."
456 Log "$dtprofile_errors"
461 XCOMM ##########################################################################
463 XCOMM External Xsession processing section
465 XCOMM This section searches the Xsession.d subdirectory and sources
466 XCOMM the files contained therein. The purpose is to set up any
467 XCOMM per-user/per-session environment customizations and thereby propagate
468 XCOMM them to applications and desktop components.
470 XCOMM ##########################################################################
472 DT_XSESSION_DIR=Xsession.d
474 for i in $DT_CONFIG_PATH
476 if [[ -d $i/$DT_XSESSION_DIR ]]; then
478 HASH Run custom Xsession scripts for this session.
480 for SCRIPT in $(ls $i/$DT_XSESSION_DIR); do
481 if [ -x $i/$DT_XSESSION_DIR/$SCRIPT -a \
482 \( ! -d $i/$DT_XSESSION_DIR/$SCRIPT \) ]; then
483 Log "sourcing $i/$DT_XSESSION_DIR/$SCRIPT..."
484 . $i/$DT_XSESSION_DIR/$SCRIPT
491 XCOMM ##########################################################################
493 XCOMM Startup section.
495 XCOMM Note: The ksh syntax ${parameter%% *} is used when appropriate to
496 XCOMM remove any command line options that may have been included
497 XCOMM in the definition of a DT executable below.
499 XCOMM ##########################################################################
502 XCOMM Return first command in array named by $1 that is executable
508 eval "cmd=\${$1[$i]}"
509 [ -z "$cmd" ] && break
510 [ -x "${cmd%% *}" ] && echo "$cmd" && break
511 Log "could not start $cmd"
517 XCOMM Start first command in array named by $1 that is executable. If
518 XCOMM $2 is 'eval', command result will be 'eval'ed.
523 if [ ! -z "$first" ]; then
524 Log "starting $first"
525 if [ "$2" = "eval" ]; then
526 eval `eval "PATH=$DT_BINPATH:$PATH $first"`
528 eval "PATH=$DT_BINPATH:$PATH $first"
534 HASH Prepare for session startup
537 if [ "$DTSOURCEPROFILE" = "true" ]
540 sh | ksh | ksh93 | dtksh) shellprofile="$HOME/.profile";;
541 bash) shellprofile="$HOME/.bash_profile";;
542 csh | tcsh) shellprofile="$HOME/.login";;
543 *) Log "non-standard shell $SHELL"
547 if [ "$shellprofile" -a ! -f "$shellprofile" ]
549 Log "could not read $shellprofile"
553 if [ "$SESSIONTYPE" = "xdm" ]; then
554 startup=$(GetFirst xdmstart_session) # get xdm session client
555 StartFirst xdmstart_hello # start xdm hello client
557 startup=$(GetFirst dtstart_session) # get desktop session client
558 StartFirst dtstart_hello # start desktop hello client
559 StartFirst dtstart_searchpath eval # setup desktop search paths
561 tooltalk=$(GetFirst dtstart_ttsession) # get tooltalk client
562 dtdbcache=$(GetFirst dtstart_dtdbcache) # get dtdbcache client
564 #if defined(USL) || defined(sun) || defined(__uxp__)
565 if [ -z "$SDT_NO_DSDM" ]; then
566 StartFirst dtstart_dsdm # start drag and drop proxy
569 StartFirst dtstart_appgather # setup session applications
573 HASH Start the session.
576 if [ $shellprofile ]; then
577 Log "execing $startup using $shellprofile..."
581 sh | bash | ksh | ksh93 | dtksh)
582 dotprofile_errors=`$SHELL -n $shellprofile 2>&1`
583 if [ "0" = "$?" ]; then
584 source_profile=". $shellprofile"
585 source_login="source $shellprofile"
587 Log "parse errors found in $shellprofile..."
588 Log "$dotprofile_errors"
589 source_profile="echo 'not execing $shellprofile due to errors'"
590 source_login="echo 'not execing $shellprofile due to errors'"
594 source_profile=". $shellprofile"
595 source_login="source $shellprofile";;
599 Log "execing $startup..."
601 source_profile="echo 'not execing $HOME/.profile (see $HOME/.dtprofile)'"
602 source_login="echo 'not execing $HOME/.login (see $HOME/.dtprofile)'"
605 if [ -z "$dtdbcache" ]; then
606 dtdbcache="echo could not start $dtstart_dtdbcache"
611 sh | bash) $SHELL -c "$source_profile; \
614 PATH=$DT_BINPATH:\$PATH $tooltalk; \
615 $startup > $dtstart_sessionlogfile 2>&1" ;;
617 ksh | ksh93 | dtksh) $SHELL -c "$source_profile; \
620 PATH=$DT_BINPATH:\$PATH $tooltalk;\
621 $startup >| $dtstart_sessionlogfile 2>&1" ;;
623 csh | tcsh) $SHELL -c "unsetenv _ PWD; \
627 (set path = ( $DT_BINPATH \$path ); $tooltalk ); \
628 $startup >&! $dtstart_sessionlogfile" ;;
632 StartFirst dtstart_ttsession
633 $startup >| $dtstart_sessionlogfile 2>&1 ;;
636 $dtdbcacherm # remove the actions/datatypes cachefile
638 XCOMM #################### eof #################################