Merge branch 'master' of git://openpandora.org/openpandora.oe
[openpandora.oe.git] / recipes / pandora-system / pandora-skel / .xinitrc
1 # This script sets up a few XDG vairables for the OpenPandora (to find the Xfce defaults etc.)
2 # and then launches the chosen user session (mainly Xfce or PMenu)
3
4 # The makes sure that /etc/xdg/op is added to the vairables to get the defaults for the OP.
5 if test "x$XDG_CONFIG_DIRS" = "x"
6 then
7   XDG_CONFIG_DIRS="/etc/xdg/op:/etc/xdg"
8 else
9   XDG_CONFIG_DIRS="/etc/xdg/op:$XDG_CONFIG_DIRS:/etc/xdg"
10 fi
11 export XDG_CONFIG_DIRS
12
13 if test "x$XDG_DATA_DIRS" = "x"
14 then
15   XDG_DATA_DIRS="/usr/local/share:/usr/share:@_datadir_@"
16   XDG_DATA_DIRS="/etc/xdg/op:/usr/local/share:/usr/share:@_datadir_@"
17 else
18   XDG_DATA_DIRS="$XDG_DATA_DIRS:@_datadir_@"
19   XDG_DATA_DIRS="/etc/xdg/op:$XDG_DATA_DIRS:@_datadir_@"
20 fi
21 export XDG_DATA_DIRS
22
23 # Use FreeDesktop XDG dir vars to put user data in non hidden dirs to make
24 # maintaince easier for users.
25 # These really should be set somewhere better but for now this will work.
26 export XDG_DATA_HOME=$HOME/Applications/Data
27 export XDG_CONFIG_HOME=$HOME/Applications/Settings
28 export XDG_CACHE_HOME=$HOME/Applications/Cache
29
30 #HACK: Run Xsession.d from here :-o
31 #Wrong, wrong, wrong but it works and sorting out OE's X server chain is not going to happen right now.
32
33 if [ -d /etc/X11/Xsession.d ]; then
34     for i in `ls /etc/X11/Xsession.d/` ; do
35         if [ -r "/etc/X11/Xsession.d/$i" ] && expr "$i" : '^[[:alnum:]_-]\+$' > /dev/null; then
36             . "/etc/X11/Xsession.d/$i"
37         fi
38     done
39 fi
40
41 #Load up the proper keymap for X
42 xmodmap ~/.pndXmodmap
43
44 #Write the current user into /tmp/currentuser for any scripts or programs who want to make use of it
45 whoami > /tmp/currentuser
46
47 # HUP pndnotifyd to make sure it picks up the users home.
48 killall -1 pndnotifyd &
49
50 # The following variable defines the session which is started if the user
51 # doesn't explicitely select a session in SLiM.
52
53 DEFAULT_SESSION=startxfce4
54 STOP_SESSION="xfce4-session-logout --logout"
55
56 # Write the default session into a temporary file.
57 # This way, we can easily add new sessions in the future by just
58 # setting the DEFAULT_SESSION to the executable or script.
59
60 echo $DEFAULT_SESSION > /tmp/gui.load
61
62 # If SLiM does pass a variable, use that. Otherwise use our DEFAULT_SESSION.
63
64 SESSION=$1
65
66 if [ "$SESSION" == "" ]
67
68         then
69         SESSION=$(cat /tmp/gui.load)
70 fi
71
72 STOP_SESSION=$(grep $SESSION /etc/pandora/conf/gui.conf | awk -F\; '{print $4}')
73 echo $STOP_SESSION > /tmp/gui.stop
74 chmod +x /tmp/gui.stop
75
76 # Starts our session and checks if a new session should be loaded
77 # after the old one is quit by simply executing the command that's in /tmp/gui.load
78
79 # This way, we can easily do a quick switch from any session to the next one by simply
80 # echo'ing the new session executable into /tmp/gui.load and exiting.
81
82 while true
83 do
84         rm /tmp/gui.load
85
86         if [ "$SESSION" == "" ]
87
88         then
89                 exit 0;
90         fi
91
92         $SESSION
93         
94         SESSION=$(cat /tmp/gui.load)
95         STOP_SESSION=$(grep $SESSION /etc/pandora/conf/gui.conf | awk -F\; '{print $4}')
96         echo $STOP_SESSION > /tmp/gui.stop
97         chmod +x /tmp/gui.stop
98 done