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 CDE_INSTALLATION_TOP/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 CDE_INSTALLATION_TOP/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 CDE_INSTALLATION_TOP/copyright &"
101 * Fallback definitions
105 #if !defined (cpp_XINITUSER)
106 # define cpp_XINITUSER "$HOME/.x11start"
109 #if !defined (cpp_MAIL)
110 # define cpp_MAIL "/usr/mail/$USER"
113 #if !defined (cpp_HELLO)
114 # define cpp_HELLO "$DT_BINPATH/dthello &"
117 #if !defined (cpp_XDMSYS)
118 # define cpp_XDMSYS "/usr/lib/X11/xdm/Xsession"
121 XCOMM ##########################################################################
124 XCOMM This script starts the user's session. It searches for one of three
125 XCOMM types of startup mechanisms, in the following order:
127 XCOMM DT existence of CDE DT Session Manager on the system
128 XCOMM XDM "$HOME/.xsession" (executable)
129 XCOMM xinit cpp_XINITUSER (executable)
131 XCOMM If none of these startup mechanisms exist, a default window manager
132 XCOMM and terminal emulator client are started.
134 XCOMM ##########################################################################
137 XCOMM Variables must be explicitly exported
141 XCOMM ##########################################################################
143 XCOMM Initialize session startup logging
145 XCOMM ##########################################################################
147 exec >/dev/null 2>/dev/null
150 LOGFILENAME=$LOGDIR/startlog
151 MSGLOGFILENAME=$LOGDIR/errorlog
153 if [ ! -d $LOGDIR ]; then
155 if [ -d $LOGDIR ]; then
160 [ -f $LOGFILENAME.older ] && rm -f $LOGFILENAME.older
161 [ -f $LOGFILENAME.old ] && mv -f $LOGFILENAME.old $LOGFILENAME.older
162 [ -f $LOGFILENAME ] && mv -f $LOGFILENAME $LOGFILENAME.old
164 [ ! -f $MSGLOGFILENAME ] && touch $MSGLOGFILENAME
166 if [ -w $LOGFILENAME ]; then
167 exec >>$LOGFILENAME 2>&1
173 echo "--- $1" >>$LOGFILENAME 2>&1
179 XCOMM ##########################################################################
181 XCOMM Global environment section
183 XCOMM DT pre-sets the following environment variables for each user.
187 XCOMM DISPLAY set to the value of the first field in the Xservers file.
188 XCOMM HOME set to the user's home directory (from /etc/passwd)
189 XCOMM LANG set to the display's current NLS language (if any)
190 XCOMM LC_ALL set to the value of $LANG
191 XCOMM LOGNAME set to the user name
192 XCOMM PATH set to the value of the Dtlogin "userPath" resource
193 XCOMM USER set to the user name
194 XCOMM SHELL set to the user's default shell (from /etc/passwd)
195 XCOMM TZ set to the value of the Dtlogin "timeZone" resource
200 XCOMM TERM set to xterm
201 XCOMM EDITOR set to the default editor
202 XCOMM KBD_LANG set to the value of $LANG for certain languages
203 XCOMM MAIL set to cpp_MAIL
206 XCOMM Three methods are available to modify or add to this list depending
207 XCOMM on the desired scope of the resulting environment variable.
209 XCOMM 1. X server and/or all users on a display (Xconfig file)
210 XCOMM 2. all users on a display (Xsession file)
211 XCOMM 3. individual users (.dtprofile file)
213 XCOMM See DT on-line help, the DT Users Guide, or the Dtlogin(1X) man
214 XCOMM page for details on setting environment variables.
217 XCOMM ##########################################################################
219 [ -z "$EDITOR" ] && EDITOR=CDE_INSTALLATION_TOP/bin/dtpad
220 [ -z "$MAIL" ] && MAIL=cpp_MAIL
221 [ -z "$LANG" ] && LANG="C"
223 SESSION_SVR=`hostname`
225 export PATH EDITOR MAIL TERM SESSION_SVR LANG
227 #if defined (_AIX) && defined (AIXV4)
229 XCOMM Clear the LFT message locale override if set
231 if [ "$LC_MESSAGES" = "C@lft" ]
237 #if defined (__osf__)
239 HASH Set XFILESEARCHPATH if necessary
241 if [ -z "$XFILESEARCHPATH" ]
243 export XFILESEARCHPATH="%D"
246 HASH check if network is configured. If not, set environment variable
247 HASH so that tooltalk will use localhost/loopback rather than system
249 RCMGR=/usr/sbin/rcmgr
250 NUM_NETCONFIG=`$RCMGR get NUM_NETCONFIG`
251 if [ "$NUM_NETCONFIG" = '' -o "$NUM_NETCONFIG" = 0 ]; then
252 export DTNONETWORK=true
258 HASH Set the keyboard language if necessary...
263 bulgarian | czech | hebrew | hungarian | \
264 japanese | korean | polish | rumanian | \
265 russian | serbocroatian)
269 chinese-t) KBD_LANG=t_chinese
271 chinese-s) KBD_LANG=s_chinese
280 HASH Locate configuration file directories
282 XDIR=XPROJECTROOT/bin
283 DT_BINPATH=CDE_INSTALLATION_TOP/bin
284 DT_INSTALL_CONFIG=CDE_INSTALLATION_TOP/config
285 DT_CONFIG=CDE_CONFIGURATION_TOP/config
286 DT_CONFIG_PATH="$DT_INSTALL_CONFIG $DT_CONFIG"
288 XCOMM ##########################################################################
290 XCOMM Default desktop component configuration variable settings
292 XCOMM This section sets the default value for variables controlling
293 XCOMM some desktop components.
295 XCOMM ##########################################################################
298 HASH Input method server startup
300 if [ -z "$DTSTARTIMS" ]; then
304 if [ "$DTSTARTIMS" = "False" ]; then
309 HASH Default desktop screen saver action list
311 export DTSCREENSAVERLIST="StartDtscreenSwarm StartDtscreenQix \
312 StartDtscreenFlame StartDtscreenHop StartDtscreenImage StartDtscreenLife \
313 StartDtscreenRotor StartDtscreenPyro StartDtscreenWorm StartDtscreenBlank"
316 HASH Session startup clients and args
318 if [ "$SESSIONTYPE" = "altDt" ]; then
319 dtstart_session[0]="$SDT_ALT_SESSION"
320 dtstart_hello[0]="$SDT_ALT_HELLO"
323 if [ $# -ge 2 ]; then
324 if [ "$1" = "-session" ]; then
325 DTSESSION_ARGS="$1 $2"
328 dtstart_session[0]="$DT_BINPATH/dtsession $DTSESSION_ARGS"
329 dtstart_hello[0]=cpp_HELLO
331 dtstart_session[1]="$HOME/.xsession"
332 dtstart_session[2]=cpp_XINITUSER
333 dtstart_session[3]="$XDIR/xterm -geometry 80x24+10+10"
334 dtstart_hello[1]="$XDIR/xsetroot -default &"
335 dtstart_searchpath="$DT_BINPATH/dtsearchpath -ksh"
336 dtstart_ttsession="$DT_BINPATH/ttsession -s"
337 dtstart_dtdbcache="$DT_BINPATH/dtdbcache -init"
339 HASH dtdbcache file's directory should match
340 HASH _DTDTSMMTEMPDIR in DtSvc/DtUtil1/DtsMM.h
343 dtdbcacherm="rm -f /var/tmp/dtdbcache_$DISPLAY"
345 dtdbcacherm="rm -f /tmp/dtdbcache_$DISPLAY"
347 dtstart_appgather="$DT_BINPATH/dtappgather &"
348 #if defined(USL) || defined(sun) || defined(__uxp__)
349 dtstart_dsdm="$DT_BINPATH/dsdm &"
352 xdmstart_session[0]="$HOME/.xsession"
353 xdmstart_session[1]=cpp_XDMSYS
354 xdmstart_session[2]="xterm -geometry 80x24+10+10 -ls"
355 xdmstart_hello="$XDIR/xsetroot -default &"
358 SESSIONLOGDIR=$LOGDIR/sessionlogs
359 SESSIONLOGFILENAME="$SESSIONLOGDIR/$SESSION_SVR"_DISPLAY=$DISPLAY
361 if [ ! -d $SESSIONLOGDIR ]; then
363 if [ -d $SESSIONLOGDIR ]; then
364 chmod 755 $SESSIONLOGDIR
368 touch $SESSIONLOGFILENAME
370 if [ -w $SESSIONLOGFILENAME ]; then
371 dtstart_sessionlogfile="$SESSIONLOGFILENAME"
373 dtstart_sessionlogfile="/dev/null"
376 rm -f $SESSIONLOGFILENAME
379 if [ "$DTXSERVERLOCATION" != "remote" ]
382 HASH Start fallback console
384 if [ -x $XDIR/fbconsole ]
392 #include "_common.ksh.src"
395 #if defined (__osf__)
397 XCOMM Bring up the sysman checklist if it hasn't been run before
399 if [ -f /usr/sbin/start_checklist ]
401 Log "Starting the checklist setup"
402 /usr/sbin/start_checklist&
406 XCOMM ##########################################################################
408 XCOMM Source user's desktop profile
410 XCOMM This section determines if the user has a desktop profile in their
411 XCOMM home directory. If not, the desktop default profile is copied to
412 XCOMM the home directory. The desktop profile is then sourced. The purpose
413 XCOMM is to incorporate any per-user/per-session environment customizations
414 XCOMM and thereby propagate them to applications and desktop components.
416 XCOMM ##########################################################################
419 DTSYSPROFILE=sys.dtprofile
422 if [ ! -f $HOME/$DTPROFILE ]; then
423 for i in $DT_CONFIG_PATH
425 if [ -f $i/$DTSYSPROFILE ]; then
428 /SYSPROFILE COMMENT START/ {printit=0; next}
429 /SYSPROFILE COMMENT END/ {printit=1; next}
430 printit==1 {print}' <$i/$DTSYSPROFILE >$HOME/$DTPROFILE
431 /bin/chmod 755 $HOME/$DTPROFILE
438 HASH source the .dtprofile.
440 if [ -f $HOME/$DTPROFILE ]; then
441 dtprofile_errors=`KORNSHELL -n $HOME/$DTPROFILE 2>&1`
442 if [ "0" = "$?" ]; then
443 Log "sourcing $HOME/$DTPROFILE..."
446 Log "not sourcing $HOME/$DTPROFILE due to errors..."
447 Log "$dtprofile_errors"
452 XCOMM ##########################################################################
454 XCOMM External Xsession processing section
456 XCOMM This section searches the Xsession.d subdirectory and sources
457 XCOMM the files contained therein. The purpose is to set up any
458 XCOMM per-user/per-session environment customizations and thereby propagate
459 XCOMM them to applications and desktop components.
461 XCOMM ##########################################################################
463 DT_XSESSION_DIR=Xsession.d
465 for i in $DT_CONFIG_PATH
467 if [[ -d $i/$DT_XSESSION_DIR ]]; then
469 HASH Run custom Xsession scripts for this session.
471 for SCRIPT in $(ls $i/$DT_XSESSION_DIR); do
472 if [ -x $i/$DT_XSESSION_DIR/$SCRIPT -a \
473 \( ! -d $i/$DT_XSESSION_DIR/$SCRIPT \) ]; then
474 Log "sourcing $i/$DT_XSESSION_DIR/$SCRIPT..."
475 . $i/$DT_XSESSION_DIR/$SCRIPT
482 XCOMM ##########################################################################
484 XCOMM Startup section.
486 XCOMM Note: The ksh syntax ${parameter%% *} is used when appropriate to
487 XCOMM remove any command line options that may have been included
488 XCOMM in the definition of a DT executable below.
490 XCOMM ##########################################################################
493 XCOMM Return first command in array named by $1 that is executable
499 eval "cmd=\${$1[$i]}"
500 [ -z "$cmd" ] && break
501 [ -x "${cmd%% *}" ] && echo "$cmd" && break
502 Log "could not start $cmd"
508 XCOMM Start first command in array named by $1 that is executable. If
509 XCOMM $2 is 'eval', command result will be 'eval'ed.
514 if [ ! -z "$first" ]; then
515 Log "starting $first"
516 if [ "$2" = "eval" ]; then
517 eval `eval "PATH=$DT_BINPATH:$PATH $first"`
519 eval "PATH=$DT_BINPATH:$PATH $first"
525 HASH Prepare for session startup
528 if [ "$DTSOURCEPROFILE" = "true" ]
531 sh | ksh | ksh93 | dtksh) shellprofile="$HOME/.profile";;
532 bash) shellprofile="$HOME/.bash_profile";;
533 csh | tcsh) shellprofile="$HOME/.login";;
534 *) Log "non-standard shell $SHELL"
538 if [ "$shellprofile" -a ! -f "$shellprofile" ]
540 Log "could not read $shellprofile"
544 if [ "$SESSIONTYPE" = "xdm" ]; then
545 startup=$(GetFirst xdmstart_session) # get xdm session client
546 StartFirst xdmstart_hello # start xdm hello client
548 startup=$(GetFirst dtstart_session) # get desktop session client
549 StartFirst dtstart_hello # start desktop hello client
550 StartFirst dtstart_searchpath eval # setup desktop search paths
552 tooltalk=$(GetFirst dtstart_ttsession) # get tooltalk client
553 dtdbcache=$(GetFirst dtstart_dtdbcache) # get dtdbcache client
555 #if defined(USL) || defined(sun) || defined(__uxp__)
556 if [ -z "$SDT_NO_DSDM" ]; then
557 StartFirst dtstart_dsdm # start drag and drop proxy
560 StartFirst dtstart_appgather # setup session applications
564 HASH Start the session.
567 if [ $shellprofile ]; then
568 Log "execing $startup using $shellprofile..."
572 sh | bash | ksh | ksh93 | dtksh)
573 dotprofile_errors=`$SHELL -n $shellprofile 2>&1`
574 if [ "0" = "$?" ]; then
575 source_profile=". $shellprofile"
576 source_login="source $shellprofile"
578 Log "parse errors found in $shellprofile..."
579 Log "$dotprofile_errors"
580 source_profile="echo 'not execing $shellprofile due to errors'"
581 source_login="echo 'not execing $shellprofile due to errors'"
585 source_profile=". $shellprofile"
586 source_login="source $shellprofile";;
590 Log "execing $startup..."
592 source_profile="echo 'not execing $HOME/.profile (see $HOME/.dtprofile)'"
593 source_login="echo 'not execing $HOME/.login (see $HOME/.dtprofile)'"
596 if [ -z "$dtdbcache" ]; then
597 dtdbcache="echo could not start $dtstart_dtdbcache"
602 sh | bash) $SHELL -c "$source_profile; \
605 PATH=CDE_INSTALLATION_TOP/bin:\$PATH $tooltalk; \
606 $startup > $dtstart_sessionlogfile 2>&1" ;;
608 ksh | ksh93 | dtksh) $SHELL -c "$source_profile; \
611 PATH=CDE_INSTALLATION_TOP/bin:\$PATH $tooltalk;\
612 $startup >| $dtstart_sessionlogfile 2>&1" ;;
614 csh | tcsh) $SHELL -c "unsetenv _ PWD; \
618 (set path = ( $DT_BINPATH \$path ); $tooltalk ); \
619 $startup >&! $dtstart_sessionlogfile" ;;
623 StartFirst dtstart_ttsession
624 $startup >| $dtstart_sessionlogfile 2>&1 ;;
627 $dtdbcacherm # remove the actions/datatypes cachefile
629 XCOMM #################### eof #################################