#!/bin/sh
#
#  DEFAULT KDE STARTUP SCRIPT ( KDE-2.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.

if [ ! -d $HOME/.kde/share/config ] ; then
	mkdir -p $HOME/.kde/share/config
fi
	
if [ "`whoami`" = root ] ; then
	xsetroot -cursor_name left_ptr -solid '#B20003'
	
	if [ ! -e /root/.kde/share/config/kdesktoprc ] ; then
		cp /usr/share/mdk/kde/root-interface/kdesktoprc /root/.kde/share/config/kdesktoprc
	fi
	
	if [ ! -e /root/.kde/share/config/kickerrc ] ; then
		cp /usr/share/mdk/kde/root-interface/kickerrc /root/.kde/share/config/kickerrc
	fi

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

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

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

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

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

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

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

	/usr/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
/usr/bin/test-windows-key

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

[ -f /etc/profile.d/lang.sh ] && source /etc/profile.d/lang.sh

function setkdefont()
{
cat >>$HOME/.kde/share/config/kdeglobals <<EOF
[Locale]
Charset=$CHARSET
Country=$COUNTRY
Language=$LNG
EOF

if [ "`whoami`" = root ] ; then
cat >>$HOME/.kde/share/config/kdeglobals <<EOF
[General]
alternateBackground=240,240,240
background=220,220,220
buttonBackground=228,228,228
buttonForeground=0,0,0
foreground=0,0,0
linkColor=0,0,192
selectBackground=193,0,3
selectForeground=255,255,255
visitedLinkColor=128,0,128
windowBackground=255,255,255
windowForeground=0,0,0

[KDE]
colorScheme=Root_interface.kcsrc
contrast=7

[WM]
activeBackground=193,0,3
activeBlend=193,0,3
activeFont=helvetica,12,5,$CHARSET,75,0
activeForeground=255,255,255
activeTitleBtnBg=220,220,220
inactiveBackground=220,220,220
inactiveBlend=220,220,220
inactiveForeground=0,0,0
inactiveTitleBtnBg=220,220,220
EOF
else
cat >>$HOME/.kde/share/config/kdeglobals <<EOF
[WM]
activeFont=helvetica,12,5,$CHARSET,75,0
EOF
fi

cat >>$HOME/.kde/share/config/konquerorrc <<EOF
[FMSettings]
StandardFont=helvetica,12,5,$CHARSET,0,0
EOF

cat >>$HOME/.kde/share/config/kdesktoprc <<EOF
[FMSettings]
StandardFont=helvetica,12,5,$CHARSET,50,0
EOF
}

if [ ! -e $HOME/.kde/share/config/kdeglobals ]; then
        # First startup - As an additional hack, get locales in sync with the
        #                 system
        # The language is the first part of the locale, e.g. en for en_US
        LNG=`echo $LANG |sed -e "s/@.*//;s/\..*//;s/_.*//"`

        # The country is the second part of the locale (us for en_US); fall
        # back to the first part if necessary (some broken configs use
        # LANG=de instead of LANG=de_DE...)
        COUNTRY=`echo $LANG |sed -e "s/.*_//;s/@.*//;s/\..*//;s/_.*//" |tr A-Z a-z`

        CHARSET=`locale charmap |sed -e "s/ISO-/ISO/g" |tr A-Z a-z`

	
        # Dadou - 2.2-61mdk - Above hacks are only used when correct parameters
	#                     are unknown. All languages supported in Mandrake Linux
	#                     distribution should be configured below to be sure they
	#                     are correctly configured.
	#
	#                     Please note that all languages are not yet supported by
	#                     KDE (see http://www.kde.org/ if you want to help). So we
	#                     tried to configure KDE using the best available
	#                     parameters. If we have made a mistake, please report bug
	#                     here: https://qa.mandrakesoft.com/

	if [ $LANGUAGE = "af:en_ZA" ] ; then
		CHARSET="iso8859-15" COUNTRY="za" LNG="C"

	elif [ $LANGUAGE = "ar" ] ; then
		CHARSET="iso8859-15" COUNTRY="C" LNG="C"

	elif [ $LANGUAGE = "az:tr" ] ; then
		CHARSET="iso10646-1" COUNTRY="az" LNG="az"

	elif [ $LANGUAGE = "be:be_BY.CP1251:ru_RU.CP1251" ] ; then
		CHARSET="iso8859-5" COUNTRY="ru" LNG="ru"

	elif [ $LANGUAGE = "bg:bg.CP1251:bg_BG.CP1251:bg_BG" ] ; then
		CHARSET="microsoft-cp1251" COUNTRY="bg" LANGUAGE="C"

	elif [ $LANGUAGE = "br:fr_FR:fr" ] ; then
		CHARSET="iso8859-15" COUNTRY="fr" LNG="fr"

	elif [ $LANGUAGE = "bs:hr:sr" ] ; then
		CHARSET="iso8859-2" COUNTRY="C" LNG="C"

	elif [ $LANGUAGE = "ca:es_ES:es:fr_FR:fr" ] ; then
		CHARSET="iso8859-15" COUNTRY="es" LNG="ca"

	elif [ $LANGUAGE = "cs" ] ; then
		CHARSET="iso8859-2" COUNTRY="cz" LNG="cs"

	elif [ $LANGUAGE = "cy:en_GB:en" ] ; then
		CHARSET="iso8859-15" COUNTRY="gb" LNG="en_GB"

	elif [ $LANGUAGE = "da" ] ; then
		CHARSET="iso8859-15" COUNTRY="dk" LNG="da"

	elif [ $LANGUAGE = "de_AT:de" ] ; then
		CHARSET="iso8859-15" COUNTRY="at" LNG="de"

	elif [ $LANGUAGE = "de_BE:de" ] ; then
		CHARSET="iso8859-15" COUNTRY="be" LNG="de"

	elif [ $LANGUAGE = "de_CH:de" ] ;  then
		CHARSET="iso8859-15" COUNTRY="ch" LNG="de"

	elif [ $LANGUAGE = "de_DE:de" ] ; then
		CHARSET="iso8859-15" COUNTRY="de" LNG="de"

	elif [ $LANGUAGE = "el" ] ; then
		CHARSET="iso8859-7" COUNTRY="gr" LNG="el"

	elif [ $LANGUAGE = "en_GB:en" ] ; then
		CHARSET="iso8859-15" COUNTRY="gb" LNG="en_GB"

	elif [ $LANGUAGE = "en_US:en" ] ; then
		CHARSET="iso8859-15" COUNTRY="us" LNG="C"

	elif [ $LANGUAGE = "eo" ] ; then
		CHARSET="iso8859-3" COUNTRY="C" LNG="eo"

	elif [ $LANGUAGE = "es_AR:es_UY:es:es_ES" ] ; then
		CHARSET="iso8859-15" COUNTRY="ar" LNG="es"

	elif [ $LANGUAGE = "es_ES:es" ] ; then
		CHARSET="iso8859-15" COUNTRY="es" LNG="es"

	elif [ $LANGUAGE = "es@tradicional" ] ; then
		CHARSET="iso8859-15" COUNTRY="es" LNG="es"
		
	elif [ $LANGUAGE = "es_MX:es:es_ES" ] ; then
		CHARSET="iso8859-15" COUNTRY="mx" LNG="es"

	elif [ $LANGUAGE = "et" ] ; then
		CHARSET="iso8859-15" COUNTRY="ee" LNG="et"

	elif [ $LANGUAGE = "eu:es_ES:fr_FR:es:fr" ] ; then
		CHARSET="iso8859-15" COUNTRY="fr" LNG="fr"

	elif [ $LANGUAGE = "fi" ] ; then
		CHARSET="iso8859-15" COUNTRY="fi" LNG="fi"

	elif [ $LANGUAGE = "fr_BE:fr" ] ; then
		CHARSET="iso8859-15" COUNTRY="be" LNG="fr"

	elif [ $LANGUAGE = "fr_CA:fr" ] ; then
		CHARSET="iso8859-15" COUNTRY="ca" LNG="fr"

	elif [ $LANGUAGE = "fr_CH:fr" ] ; then
		CHARSET="iso8859-15" COUNTRY="ch" LNG="fr"

	elif [ $LANGUAGE = "fr_FR:fr" ] ; then
		CHARSET="iso8859-15" COUNTRY="fr" LNG="fr"

	elif [ $LANGUAGE = "ga:en_IE:en" ] ; then
		CHARSET="iso8859-15" COUNTRY="gb" LNG="en_GB"

	elif [ $LANGUAGE = "gl:es_ES:pt_PT:pt_BR:es:pt" ] ; then
		CHARSET="iso8859-15" COUNTRY="es" LNG="es"

	elif [ $LANGUAGE = "he:iw_IL" ] ; then
		CHARSET="iso10646-1" COUNTRY="il" LNG="he"

	elif [ $LANGUAGE = "hr" ] ; then
		CHARSET="iso8859-2" COUNTRY="hr" LNG="C"

	elif [ $LANGUAGE = "hu" ] ; then
		CHARSET="iso8859-2" COUNTRY="hu" LNG="hu"

	elif [ $LANGUAGE = "hy" ] ; then
		CHARSET="iso8859-5" COUNTRY="C" LNG="ru"

	elif [ $LANGUAGE = "id:in_ID" ] ; then
		CHARSET="iso8859-15" COUNTRY="C" LNG="C"

	elif [ $LANGUAGE = "is" ] ; then
		CHARSET="iso8859-15" COUNTRY="is" LNG="is"

	elif [ $LANG = "it_CH" ] ; then
		CHARSET="iso8859-15" COUNTRY="ch" LNG="it"

	elif [ $LANGUAGE = "it_IT:it" ] ; then
		CHARSET="iso8859-15" COUNTRY="it" LNG="it"

	elif [ $LANGUAGE = "ja_JP.ujis:ja" ] ; then
		CHARSET="ksc5601.1987-0" COUNTRY="jp" LNG="ja"

	elif [ $LANGUAGE = "ka" ] ; then
		CHARSET="iso8859-5" COUNTRY="C" LNG="ru"

	elif [ $LANGUAGE = "ko" ] ; then
		CHARSET="ksc5601.1987-0" COUNTRY="ko" LNG="ko"
		
	elif [ $LANGUAGE = "lt" ] ; then
		CHARSET="iso8859-13" COUNTRY="lt" LNG="lt"

	elif [ $LANGUAGE = "lv" ] ; then
		CHARSET="iso8859-13" COUNTRY="lv" LNG="lv"
	
	elif [ $LANGUAGE = "mi" ] ; then
		CHARSET="iso8859-13" COUNTRY="nz" LNG="en_GB"

	elif [ $LANGUAGE = "mk" ] ; then
		CHARSET="iso8859-5" COUNTRY="mk" LNG="C"

	elif [ $LANGUAGE = "nl_BE:nl" ] ; then
		CHARSET="iso8859-15" COUNTRY="be" LNG="nl"

	elif [ $LANGUAGE = "nl_NL:nl" ] ; then
		CHARSET="iso8859-15" COUNTRY="nl" LNG="nl"

	elif [ $LANGUAGE = "no:nb:nn:no@nynorsk:no_NY" ] ; then
		CHARSET="iso8859-15" COUNTRY="no" LNG="no"

	elif [ $LANGUAGE = "nn:no@nynorsk:no_NY:no:nb" ] ; then
		CHARSET="iso8859-15" COUNTRY="no" LNG="no_NY"

	elif [ $LANGUAGE = "pl" ] ; then
		CHARSET="iso8859-2" COUNTRY="pl" LNG="pl"
		
	elif [ $LANGUAGE = "pt_BR:pt_PT:pt" ] ; then
		CHARSET="iso8859-15" COUNTRY="br" LNG="pt_BR"

	elif [ $LANGUAGE = "pt_PT:pt:pt_BR" ] ; then
		CHARSET="iso8859-15" COUNTRY="pt" LNG="pt"

	elif [ $LANGUAGE = "ro" ] ; then
		CHARSET="iso8859-2" COUNTRY="ro" LNG="ro"

	elif [ $LC_MESSAGES = "ru_RU.KOI8-R" ] ; then
		CHARSET="koi8-u" COUNTRY="ru" LNG="ru"

	elif [ $LC_MESSAGES = "ru_RU.CP1251" ] ; then
		CHARSET="koi8-u" COUNTRY="ru" LNG="ru"

	elif [ $LANGUAGE = "sk" ] ; then
		CHARSET="iso8859-2" COUNTRY="sk" LNG="sk"

	elif [ $LANGUAGE = "sl" ] ; then
		CHARSET="iso8859-2" COUNTRY="si" LNG="sl"

	elif [ $LANGUAGE = "sp:sr" ] ; then
		CHARSET="iso8859-5" COUNTRY="sr" LNG="sr"

	elif [ $LANGUAGE = "sr" ] ; then
		CHARSET="iso8859-2" COUNTRY="sr" LNG="sr"

	elif [ $LANGUAGE = "sv" ] ; then
		CHARSET="iso8859-15" COUNTRY="se" LNG="sv"

	elif [ $LC_MESSAGES = "tg_TJ.UTF-8" ] ; then
		CHARSET="iso10646-1" COUNTRY="C" LNG="C"

	elif [ $LANGUAGE = "th" ] ; then
		CHARSET="tis620-0" COUNTRY="th" LNG="C"

	elif [ $LANGUAGE = "tr" ] ; then
		CHARSET="iso8859-9" COUNTRY="tr" LNG="tr"

	elif [ $LANGUAGE = "uk_UA:uk" ] ; then
		CHARSET="koi8-u" COUNTRY="ua" LNG="uk"

	elif [ $LANGUAGE = "uz" ] ; then
		CHARSET="iso8859-15" COUNTRY="C" LNG="C"

	elif [ $LC_MESSAGES = "vi_VN.TCVN" ] ; then
		CHARSET="iso10646-1" COUNTRY="C" LNG="C"

	elif [ $LC_MESSAGES = "vi_VN.VISCII" ] ; then
		CHARSET="iso10646-1" COUNTRY="C" LNG="C"

	elif [ $LANGUAGE = "wa:fr_BE:fr" ] ; then
		CHARSET="iso8859-15" COUNTRY="be" LNG="fr"

	elif [ $LANGUAGE = "zh_TW.Big5:zh_TW.big5:zh_TW:zh_HK:zh" ] ; then
		CHARSET="big5-0" COUNTRY="tw" LNG="zh_TW.Big5"
	
	elif [ $LANGUAGE = "zh_CN.GB2312:zh_CN.gb2312:zh_CN:zh" ] ; then
		CHARSET="gb2312.1980-0" COUNTRY="cn" LNG="zh_CN.GB2312"
	fi

        setkdefont
fi


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

kdehome=$HOME/.kde
test -n "$KDEHOME" && kdehome=$KDEHOME

# 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

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

# 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

# the splashscreen and progress indicator
ksplash

# 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

# 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
ksmserver --restore
# Clean up
kdeinit_shutdown
