]> git.pld-linux.org Git - packages/kde4-kdebase-workspace.git/blobdiff - kdebase-kdm.Xsession
- Partiaslly backport changes from DEVEL
[packages/kde4-kdebase-workspace.git] / kdebase-kdm.Xsession
index 75bad3fd169776eca476d7d4b9aaab38ff9a1f50..d68dbcb8358f61936ac38d8ac8b4178e9e3969a8 100644 (file)
@@ -1,11 +1,23 @@
 #!/bin/sh
-# Copyright (c) 1999, 2000 Red Hat, Inc.
 
-# redirect errors to a file in user's home directory if we can
-for errfile in "${TMPDIR-/tmp}/.xsession-$USER" \
-               "/tmp/.xsession-$USER" \
-               "$HOME/.xsession-errors"
-do
+# Make it login shell
+case $SHELL in
+       */csh|*/tcsh)
+       # [t]cshrc is always sourced automatically.
+       # Note that sourcing csh.login after .cshrc is non-standard.\n"
+       eval `$SHELL -c 'if (-f /etc/csh.login) source /etc/csh.login; if (-f ~/.login) source ~/.login; sh -c set'`
+       ;;
+       *)
+       if [ "$HAVE_LOGIN_SHELL" != "yes" ]; then
+               export HAVE_LOGIN_SHELL=yes
+               exec $SHELL -l $0 $*
+       fi
+       unset HAVE_LOGIN_SHELL  
+esac
+
+# Redirect errors to a file in user's home directory if possible
+errfn=xerr-$USER-$DISPLAY
+for errfile in "${TMPDIR-/tmp}/$errfn" "/tmp/$errfn" "$HOME/.$errfn"; do
        if cp /dev/null "$errfile" 2> /dev/null ; then
                chmod 600 "$errfile"
                exec > "$errfile" 2>&1
@@ -13,43 +25,52 @@ do
        fi
 done
 
-[ "`echo $PATH | grep -q /usr/X11R6/bin`" = "" ] && PATH="${PATH}:/usr/X11R6/bin"
-[ "`echo $PATH | grep -q "$HOME/bin"`" = "" ] && PATH="$PATH:$HOME/bin"
+# System wide settings
+sysxkbmap=/etc/X11/xinit/Xkbmap
+sysmodmap=/etc/X11/xinit/Xmodmap
+sysresources=/etc/X11/xinit/Xresources
 
-test -f /etc/profile && . /etc/profile
-test -f $HOME/.profile && . $HOME/.profile
+# Also usable locations
+another_sysxkbmap=/etc/X11/Xkbmap
+another_sysmodmap=/etc/X11/Xmodmap
+another_sysresources=/etc/X11/Xresources
 
-if [ ! -f $HOME/.profile ] && echo $SHELL |grep -q "bash"; then
-    test -f $HOME/.bash_profile && . $HOME/.bash_profile
-fi
-
-userresources=$HOME/.Xresources
-usermodmap=$HOME/.Xmodmap
+# User settings
 userxkbmap=$HOME/.Xkbmap
+usermodmap=$HOME/.Xmodmap
+userresources=$HOME/.Xresources
+userdefaults=$HOME/.Xdefaults
+
+# Merge in defaults
+if [ -f $sysresources ]; then
+       xrdb -merge $sysresources
+elif [ -f $another_sysresources ]; then
+       xrdb -merge $another_sysresources
+fi             
+
+if [ -f $userresources ]; then
+       xrdb -merge $userresources
+elif [ -f $userdefaults ]; then
+       xrdb -merge $userdefaults
+fi
 
-sysresources=/etc/X11/Xresources
-sysmodmap=/etc/X11/Xmodmap
-sysxkbmap=/etc/X11/Xkbmap
-
-# merge in defaults
-[ -f "$sysresources" ] && xrdb -merge "$sysresources"
-[ -f "$userresources" ] && xrdb -merge "$userresources"
-
-# merge in keymaps
+# Merge in keymaps
 if [ -f "$sysxkbmap" ]; then
-    setxkbmap `cat "$sysxkbmap"`
-    XKB_IN_USE=yes
+       setxkbmap `cat "$sysxkbmap"`
+       XKB_IN_USE=yes
+elif [ -f "$another_sysxkbmap" ]; then
+       setxkbmap `cat "$another_sysxkbmap"`
+       XKB_IN_USE=yes
 fi
 
 if [ -f "$userxkbmap" ]; then
-    setxkbmap `cat "$userxkbmap"`
-    XKB_IN_USE=yes
+       setxkbmap `cat "$userxkbmap"`
+       XKB_IN_USE=yes
 fi
 
 if [ -z "$XKB_IN_USE" -a ! -L /etc/X11/X ]; then
-       if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 \
-                       && [ -f /etc/X11/XF86Config ]; then
-               xkbsymbols=`sed -n -e 's/^[     ]*XkbSymbols[   ]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config`
+       if grep '^exec.*/Xsun' /etc/X11/X > /dev/null 2>&1 && [ -f /etc/X11/XF86Config ]; then
+               xkbsymbols=`sed -n -e 's/^[     ]*XkbSymbols[   ]*"\(.*\)".*$/\1/p' /etc/X11/XF86Config`
                if [ -n "$xkbsymbols" ]; then
                        setxkbmap -symbols "$xkbsymbols"
                        XKB_IN_USE=yes
@@ -59,17 +80,23 @@ fi
 
 # xkb and xmodmap don't play nice together
 if [ -z "$XKB_IN_USE" ]; then
-       [ -f "$sysmodmap" ] && xmodmap "$sysmodmap"
-       [ -f "$usermodmap" ] && xmodmap "$usermodmap"
+       if [ -f $sysmodmap ]; then
+               xmodmap $sysmodmap
+       elif [ -f $another_sysmodmap ]; then
+               xmodmap $another_sysmodmap
+       fi              
+       if [ -f $usermodmap ]; then
+               xmodmap $usermodmap
+       fi      
 fi
 
 unset XKB_IN_USE
 
-# run all system xinitrc shell scripts.
+# Run all system xinitrc shell scripts.
 for i in /etc/X11/xinit/xinitrc.d/* ; do
-    if [ -x "$i" ]; then
-       . "$i"
-    fi
+       if [ -x "$i" ]; then
+               . "$i"
+       fi
 done
 
 # Keep in sync with Xclients from xinitrc-ng 
This page took 0.145877 seconds and 4 git commands to generate.