#!/bin/sh
#
#  DEFAULT KDE STARTUP SCRIPT ( KDE-3.0.2 )
#

# Boot sequence:
#
# kdeinit is used to fork off processes which improves memory usage
# and startup time.
#
# * kdeinit starts the dcopserver and klauncher first.
# * Then kded is started. kded is responsible for keeping the sycoca
#   database up to date. When an up to date database is present it goes
#   into the background and the startup continues.
# * Then kdeinit starts kcminit. kcminit performs initialisation of
#   certain devices according to the user's settings
#
# * Then ksmserver is started which in turn starts 
#   1) the window manager (kwin)
#   2) everything in $KDEDIR/share/autostart (kdesktop, kicker, etc.)
#   3) the rest of the session.

# Set a left cursor instead of the standard X11 "X" cursor, since I've heard
# from some users that they're confused and don't know what to do. This is
# especially necessary on slow machines, where starting KDE takes one or two
# minutes until anything appears on the screen.
#
# Set the background to standard Mandrake Linux colors
# The standard X background is nasty, causing moire effects and exploding
# people's heads. We use colours from the standard KDE palette for those with
# palettised displays.

#test "$XDM_MANAGED" || bkg="-solid #C0C0C0"
#xsetroot -cursor_name left_ptr $bkg
if [ ! -d $HOME/.kde3/share/config ] ; then
   mkdir -p $HOME/.kde3/share/config
fi

if [ ! -e /dev/dsp ] && [ ! -e $HOME/.kde3/share/config/kcmartsrc ] ; then
   echo "[Arts]" > $HOME/.kde3/share/config/kcmartsrc
   echo "StartServer=false" >> $HOME/.kde3/share/config/kcmartsrc
fi

if [ "`whoami`" = root ] ; then
   xsetroot -cursor_name left_ptr -solid '#B20003'

   if [ ! -e /root/.kde3/share/config/kdesktoprc ] ; then
       cp /usr/share/mdk/kde/root-interface/kdesktoprc /root/.kde3/share/config/kdesktoprc
   fi

   if [ ! -e /root/.kde3/share/config/kdeglobals ] ; then
       cp /usr/share/mdk/kde/root-interface/kdeglobals /root/.kde3/share/config/kdeglobals
   fi

   if [ ! -e /root/.kde3/share/config/kickerrc ] ; then
       cp /usr/share/mdk/kde/root-interface/kickerrc /root/.kde3/share/config/kickerrc
   fi

   if [ ! -d /root/.kde3/share/autostart/ ] ; then
       mkdir -p /root/.kde3/share/autostart/
       cp /usr/share/mdk/kde/root-interface/klipper.desktop /root/.kde3/share/autostart/
   fi

   if [ ! -d /root/.kde3/share/apps/kdisplay/color-schemes/ ] ; then
       mkdir -p /root/.kde3/share/apps/kdisplay/color-schemes/
       cp /usr/share/mdk/kde/root-interface/Root_interface.kcsrc /root/.kde3/share/apps/kdisplay/color-schemes/
   fi

else
   xsetroot -cursor_name left_ptr -solid '#21449C';

   if [ ! -d ~/Desktop ] ; then
          mkdir -p ~/Desktop/ ;
   fi

   if [ ! -d ~/.kde3/Autostart/ ] ; then
          mkdir -p ~/.kde3/Autostart/ ;
   fi

   if [ -e ~/.drakfw ] && [ "$(cat ~/.kde3/share/apps/konqueror/bookmarks.xml | wc -l | awk '{print $1}')" = "1" ] ; then
       cp -f /usr/share/mdk/kde/bookmarks.xml ~/.kde3/share/apps/konqueror/
       perl -pi -e "/\[KonqMainWindow Toolbar bookmarkToolBar\]/ .. /^\s*$/ and s/Hidden=true/Hidden=false/" ~/.kde3/share/config/konquerorrc
   fi

   if [ ! -d ~/.kde3/share/apps/konqueror ] ; then
           mkdir -p ~/.kde3/share/apps/konqueror/ && cp /usr/share/mdk/kde/bookmarks.xml ~/.kde3/share/apps/konqueror/
   fi

   if [ ! -e ~/Desktop/.ArrangeIcons ] ; then
          cp /usr/share/mdk/kde/ArangeIcons.desktop ~/.kde3/Autostart/ && touch ~/Desktop/.ArrangeIcons
   else rm -f ~/.kde3/Autostart/ArangeIcons.desktop
   fi

   /opt/kde3/bin/kdesktop-links > /dev/null 2>&1
fi

export HELP_BROWSER="kfmclient openProfile webbrowsing"
export BROWSER="kfmclient openProfile webbrowsing"

# Dadou - 2.1.1-4mdk - To be able to use the Windows key to open the K menu
# laurent kde 2.2-22mdk test windows-key
/opt/kde3/bin/test-windows-key

# Laurent kde2.2-30mdk scan-nsplugins
if [ -x /opt/kde3/bin/nspluginscan ]; then
   /opt/kde3/bin/nspluginscan
fi


# The user's personal KDE directory is usually ~/.kde, but this setting
# may be overridden by setting KDEHOME.

kdehome=$HOME/.kde
test -n "$KDEHOME" && kdehome=`echo "$KDEHOME"|sed "s,^\~/,$HOME/,"`

# Activate the kde font directories.
#
# There are 4 directories that may be used for supplying fonts for KDE.
#
# There are two system directories. These belong to the administrator.
# There are two user directories, where the user may add her own fonts.
#
# The 'override' versions are for fonts that should come first in the list,
# i.e. if you have a font in your 'override' directory, it will be used in
# preference to any other.
#
# The preference order looks like this:
# user override, system override, X, user, system
#
# Where X is the original font database that was set up before this script
# runs.

usr_odir=$kdehome/share/fonts/override
usr_fdir=$kdehome/share/fonts
if test -n "$KDEDIRS"; then
  kdedirs_first=`echo $KDEDIRS|sed -e 's/:.*//'`
  sys_odir=$kdedirs_first/share/fonts/override
  sys_fdir=$kdedirs_first/share/fonts
else
  sys_odir=$KDEDIR/share/fonts/override
  sys_fdir=$KDEDIR/share/fonts
fi

# We run mkfontdir on the user's font dirs (if we have permission) to pick
# up any new fonts they may have installed. If mkfontdir fails, we still
# add the user's dirs to the font path, as they might simply have been made
# read-only by the administrator, for whatever reason.

test -d $usr_odir && (mkfontdir $usr_odir ; xset +fp $usr_odir)
test -d $sys_odir && xset +fp $sys_odir
test -d $usr_fdir && (mkfontdir $usr_fdir ; xset fp+ $usr_fdir)
test -d $sys_fdir && xset fp+ $sys_fdir

#
# Add any user-installed font directories to the X font path
kde_fontsdir=$kdehome/share/fonts
kde_fontpaths=$kde_fontsdir/fontpaths
 
if test -r $kde_fontpaths ; then
    for fpath in `cat $kde_fontpaths | grep -v '#'` ; do
        if test -s $fpath/fonts.dir ; then
            xset fp+ $fpath
        fi
    done
fi

# Ask X11 to rebuild its font list.
xset fp rehash

#
# Get Ghostscript to look into user's KDE fonts dir for additional Fontmap
if test -n "$GS_LIB" ; then
    GS_LIB=$kde_fontsdir:$GS_LIB
    export GS_LIB
else
    GS_LIB=$kde_fontsdir
    export GS_LIB
fi

# Link "tmp" resource to directory in /tmp
# Creates a directory /tmp/kde-$USER and links $KDEHOME/tmp-$HOSTNAME to it.
lnusertemp tmp >/dev/null

# Link "socket" resource to directory in /tmp
# Creates a directory /tmp/ksocket-$USER and links $KDEHOME/socket-$HOSTNAME to it.
lnusertemp socket >/dev/null

# In case of dcop sockets left by a previous session, cleanup
dcopserver_shutdown

# run KPersonalizer before the session, if this is the first login
grep 'FirstLogin=false' $kdehome/share/config/kpersonalizerrc >/dev/null 2>/dev/null
if test $? -ne 0; then
    # start only dcopserver, don't start whole kdeinit (takes too long)
    dcopserver
    kwin &
    kpersonalizer --before-session
    # handle kpersonalizer restarts (language change)
    while test $? -eq 1; do
        kpersonalizer --r --before-session
    done
    dcopserver_shutdown
    # shutdown will also make kwin quit, give it time to do so
    sleep 1
fi

# the splashscreen and progress indicator

# Laurent kdebase-2.2.2-7mdk fix conflict with ksplashml
if [ -e /usr/bin/ksplashml ]; then
   ksplashml
else
   ksplash
fi

# We set LD_BIND_NOW to increase the efficiency of kdeinit.
# kdeinit unsets this variable before loading applications.
LD_BIND_NOW=true kdeinit +kcminit +knotify || \
  xmessage -geometry 500x100 "Couldn't start kdeinit. Check your installation."

# finally, give the session control to the session manager
# Syntax:   ksmserver [--restore] [--windowmanager <wm>]
# if no windowmanager is specified, ksmserver will ensure kwin is started.
# [--restore] should be controlled by kdm
# kwrapper is used to reduce startup time and memory usage
kwrapper ksmserver --restore || \
  xmessage -geometry 500x100 "Couldn't start ksmserver. Check your installation."

# Clean up
kdeinit_shutdown
dcopserver_shutdown
artsshell -q terminate
