~ eserte /.xinitrc

Handles different window managers and different initial applications depending on environment. There's also the ability to have a small vs. large set of initial applications.
#!/usr/bin/env tcsh

# Änderungen für Linux
# - gewöhnlich starte ich sonstwo direkt mit startx, also muss ich einen
#   Symlink .xinitrc erstellen
# - Keyboard-Handling (setxkbmap) beachten

cd $HOME

source .tcshrc
source .login

if !($?STDPERL) setenv STDPERL perl
if !($?XSESSION_EXTRA) setenv XSESSION_EXTRA ""
if !($?WINDOW_MANAGER) setenv WINDOW_MANAGER fvwm

setenv XAPPLRESDIR $HOME/lib/app-defaults

if ( -r $HOME/.Xdefaults ) then
        xrdb -load $HOME/.Xdefaults
endif

if (-f "/usr/X11R6/bin/setxkbmap") then
        #/usr/X11R6/bin/setxkbmap -variant eserte -option "ctrl:swapcaps"
        /usr/X11R6/bin/setxkbmap de -variant deadacute -option "ctrl:nocaps"
else if ( -r $HOME/.xmodmaprc ) then
        xmodmap $HOME/.xmodmaprc
endif

xset s 180 180 & # Bildschirmschoner
xset dpms 180 240 600 & # green saver ... Abfrage, was von beiden verwenden XXX
xset b 100 60 10 & # Tastaturbeep angenehmer gestalten

set charset = iso8859-1
set tktimex = tktimex

switch ("$HOST")
case "vran*":
        # fall through...
case "biokovo*":
## ISDN not needed anymore
#        $STDPERL $HOME/bin/sh/mytkisdn &
        ## note: the special keybindings do not work with USB keyboard (not implemented in FreeBSD yet)
        ## and with my old keyboard it also does not work, so it's disabled completely
        #(sleep 25; xterm -iconic -geometry 80x5-2-10 -e tcsh -c 'cd /usr/www/audio && playm3u -server -noplay -v') &
        xbiff -geometry -10+20 &
#        xhost +localhost
#        xhost +mom
        set tktimex = "$STDPERL $HOME/bin/sh/tktimex"
# Missing keycodes on my logitech cordless ex110 + Multi_key
        xmodmap -e "keycode 234 = XF86Back" -e "keycode 205 = XF86Close" -e "keycode 161 = XF86Calculator" -e "keycode 117 = Multi_key"
        set charset = iso10646-1
        breaksw
case "spiff*":
        xset b 10 100 100 & # hoert sich ansonsten noch bloeder am Laptop an
        xset r rate 300 30 &
        xmodmap -e 'keysym Alt_L = Meta_L'
        set charset = iso8859-15
        breaksw
case "*.iconmobile.de":
case "*.cellular.de":
        ssh-add
        setenv XSESSION_EXTRA 1
        set tktimex = /usr/perl5.8.7/bin/tktimex
        breaksw
case "devpc01-debian":
        ssh-add
        setenv XSESSION_EXTRA 1
        xmodmap -e 'keycode 117 = Multi_key'
        set charset = iso10646-1
        breaksw
case "acer-windev":
case "acer-*":
        # risky...
        setxkbmap -variant nodeadkeys -option "ctrl:swapcaps"
        breaksw
default:
endsw

if ( -r $HOME/.Xmodmap.$HOST ) then
        xmodmap $HOME/.Xmodmap.$HOST
endif

# in der Adventszeit gibt's xsnow 
(sleep 30; \
   ([ "`date +%m`" = 12 ] && nice xsnow -santa 2 -snowflakes 40 -delay 70)) &

if ( ! $?WINDOW_MANAGER ) then
        setenv WINDOW_MANAGER fvwm
endif

# wm without session management
switch ("$WINDOW_MANAGER")
case "twm":
case "fvwm":
case "E":
        switch ("$HOST")
        case "*.iconmobile.de":
        case "*.cellular.de":
                env LANG=de perl5.8.3 /usr/local/bin/tknotes &
                ## Tradingpost meldet sich nicht mehr...
                #(sleep 12; earthclock -timepos Australia/Sydney -geometry 75x75+1477+0) &
                (sleep 10; env LC_ALL=de_DE.utf8 earthclock -timepos Europe/Berlin -geometry 75x75-210+0) &
                breaksw
        case "devpc01-debian":
                env LANG=de tknotes &
                ## Tradingpost meldet sich nicht mehr...
                #(sleep 12; earthclock -timepos Australia/Sydney -geometry 75x75+1477+0) &
                (sleep 10; env LC_ALL=de_DE.utf8 earthclock -timepos Europe/Berlin -geometry 75x75-210+0) &
                breaksw
        default
                env LANG=de $STDPERL $HOME/bin/sh/tknotes &
                (sleep 10; earthclock -timepos Europe/Berlin -geometry 75x75-0+80) &
        endsw
        xsetroot &
        xterm -geometry 80x25+0+0 -fn "-*-lucidatypewriter-bold-*-*-sans-12-*-75-75-*-*-$charset" -fg black -bg grey80 &
        xterm -geometry 80x25+580+0 -fn "-*-lucidatypewriter-bold-*-*-sans-12-*-75-75-*-*-$charset" -fg SkyBlue -bg black &
#        xterm -geometry 80x25+0-10 -fn "-b&h-lucidatypewriter-bold-r-normal-sans-14-140-75-75-m-90-$charset" -fg SkyBlue -bg black &
        if ("$HOST" != "spiff") then
                xterm -geometry 80x7-0-10 -font 5x7 -iconic -C -T Console -e sleep 99999999999 &
        endif
        # sometimes xphoon is faster executed than xsetroot of the initial X start!
        (sleep 5; nice -10 xphoon) &
        env nice -10 xbiff++ &
        env nice -10 tail -f $HOME/.xsession-errors > /dev/console &
        env nice -10 env LANG=de_DE.ISO-8859-1 $tktimex -geometry 480x215+792+989 &
        ## not used anymore:
        #ical -calendar $HOME/.calendar.ical &

        if ("$XSESSION_EXTRA" != "") then
                switch ("$HOST")
                case "devpc01-debian":
                        (sleep 2; emacs-snapshot) &
                        breaksw
                default:
                        (sleep 2; emacs) &
                endsw

                switch ("$HOST")
                case "biokovo*":
                        switch ("`uname -p`")
                        case "amd64":
                                (sleep 4; seamonkey) &
                                breaksw
                        default:
                                (sleep 4; mozilla) &
                        endsw
                        (sleep 60; tkpod -xrm '*sansSerifFont: sans-serif' -xrm '*serifFont: serif' -xrm '*monospaceFont: monospace' -xrm '*font: sans-serif 10' -iconic -tree -filedialog Tk::PathEntry::Dialog) &
                        (sleep 20; xterm -T "Mail receive/send" -geometry 80x5-2-2 -e tcsh -c 'forever -600 "date; popme; sendpop3; wwwmirror news"') &
                        breaksw
                endsw
                switch ("$HOST")
                case "*.iconmobile.de":
                case "*.cellular.de":
                        $STDPERL $HOME/work2/bbbike/BBBikeAlarm.pm -restart &
                        (sleep 5; evolution) &
                        ## Usually already running in a VNC server
                        #(sleep 10; $STDPERL $HOME/work/framework/etc/tkclusterwatch -geometry -0+0) &
                        (sleep 20; /usr/local/mozilla/mozilla) &
                        #(sleep 30; /usr/perl5.8.7/bin/tkpod -iconic -tree -filedialog Tk::PathEntry::Dialog) &
                        (sleep 30; perl -Mblib=$HOME/work2/Tk $HOME/work2/Tk-Pod/tkpod -xrm '*sansSerifFont: sans-serif' -xrm '*serifFont: serif' -xrm '*monospaceFont: monospace' -xrm '*font: sans-serif' -iconic -tree -filedialog Tk::PathEntry::Dialog) &
                        (sleep 40; $HOME/work/drafts/slavenr/tkpop3sbiff/tkpop3sbiff >& /dev/null) &
                        ## I use gaim now
                        #(sleep 10; ymessenger) &
                        (sleep 60; ssh -n dev05 gaim) &
                        #(sleep 70; $STDPERL -I$HOME/work2/bbbike/lib $HOME/work2/Tk-AppMaster/appmaster) &
                        (sleep 120; env LANG=C $HOME/work2/bbbike/bbbike -iconic -nosplash) &
                        breaksw
                case "devpc01-debian":
                        $STDPERL $HOME/work2/bbbike/BBBikeAlarm.pm -restart &
                        ## Not yet:
                        # (sleep 5; evolution) &
                        #(sleep 10; $STDPERL $HOME/work/framework/etc/tkclusterwatch -geometry -0+0) &
                        (sleep 10; vncviewer -shared -viewonly devpc01:20 < /dev/null) &
                        (sleep 20; mozilla) &
                        (sleep 30; tkpod -xrm '*sansSerifFont: sans-serif' -xrm '*serifFont: times' -xrm '*monospaceFont: courier' -xrm '*font: helvetica' -iconic -tree) &
                        ## not needed anymore: it seems that seamonkey may do this functionality, too
                        #(sleep 40; $HOME/work/drafts/slavenr/tkpop3sbiff/tkpop3sbiff >& /dev/null) &
                        (sleep 60; gaim) &
                        (sleep 120; env LANG=de_DE.UTF-8 $HOME/work2/bbbike/bbbike -iconic -nosplash) &
                        (sleep 30; env DISPLAY=unix:0 xtb -geometry -0+0) &
                        breaksw
                default:
                        #(sleep 30; env LC_ALL=en_GB.ISO8859-1 dbbbike -iconic -nosplash -edit -edittools -fragezeichen -lazy -scale 1:6000 -fontfamily lucida) &
                        ## With a XFT-enabled Tk:
                        (sleep 30; env LC_ALL=en_GB.ISO8859-1 dbbbike -iconic -nosplash -edit -edittools -fragezeichen -lazy -scale 1:6000 -fontfamily "{bitstream vera}") &
                        (sleep 45; tkplotwetter -iconic) &
                        (sleep 60; gaim --away) &
                endsw
                (sleep 60; unwetterwarnung_dwd.pl -tk) &
        endif
        breaksw
endsw

if ( "$WINDOW_MANAGER" == twm ) then
        twm
else if ("$WINDOW_MANAGER" == none ) then
        xterm -T "Exit"
else if ("$WINDOW_MANAGER" == E ) then
        enlightenment
else if ("$WINDOW_MANAGER" == gnome ) then
        enlightenment & gnome-session
else if ("$WINDOW_MANAGER" == kde ) then
        startkde
else if ("$WINDOW_MANAGER" == vran ) then
        xterm -e vncviewer -fullscreen vran:1
else
        fvwm2 || fvwm-alternative || fvwm95 || fvwm
endif