]>
Commit | Line | Data |
---|---|---|
1ad48481 | 1 | #!/bin/sh |
2 | # simple script that generates entrance config using build_config.sh.in | |
3 | # and .desktop files from /usr/share/xsessions | |
4 | ||
5 | CONFIGIN="/etc/X11/entrance/build_config.sh.in" | |
543e68fa JB |
6 | WORKDIR="/var/lib/entrance" |
7 | CONFIGOUT="$WORKDIR/build_config.sh" | |
8 | SESSIONS="$WORKDIR/sessions" | |
1ad48481 | 9 | ICONDIR="/usr/share/entrance/images/sessions" |
0183eca4 | 10 | THEMEDIR="/usr/share/entrance/themes" |
1ad48481 | 11 | |
12 | die() { | |
13 | echo "$2" >&2 | |
14 | exit $1 | |
15 | } | |
16 | [ -f $CONFIGIN -a -r $CONFIGIN ] || \ | |
17 | die 1 "No config file $CONFIGIN, or not readable" | |
18 | ||
19 | [ -d /usr/share/xsessions ] || die 2 "No xsessions dir" | |
20 | ||
21 | # two common desktops | |
543e68fa | 22 | cat << EOF > $WORKDIR/default.desktop |
1ad48481 | 23 | Name=Default |
24 | Exec=default | |
25 | EOF | |
543e68fa | 26 | cat << EOF > $WORKDIR/failsafe.desktop |
1ad48481 | 27 | Name=Failsafe |
28 | Exec=failsafe | |
29 | EOF | |
30 | ||
31 | ||
32 | SESSION_SRTING="$(grep -E "^#session:" $CONFIGIN | sed 's/^#session://')" | |
33 | ||
34 | : > $SESSIONS | |
35 | NUM=0 | |
543e68fa JB |
36 | for DESKTOP in $WORKDIR/default.desktop /usr/share/xsessions/*.desktop \ |
37 | $WORKDIR/failsafe.desktop; do | |
1ad48481 | 38 | |
a8f0a285 | 39 | EXEC=$(grep -E "^Exec=" $DESKTOP | sed 's/^Exec=//' ) |
1ad48481 | 40 | [ -n "$EXEC" ] || ( echo "Skipping $DESKTOP !!!" >&2; continue ) |
a8f0a285 | 41 | [ -n "$(which $EXEC 2>/dev/null)" ] && EXEC=$(which $EXEC) |
42 | EXEC=$(echo $EXEC | sed 's_/_\\/_g') | |
1ad48481 | 43 | |
44 | NAME="$(grep -E "^Name=" $DESKTOP | sed 's/^Name=//' | \ | |
45 | sed 's_/_\\/_g')" | |
71055f9a | 46 | [ -n "$NAME" ] || NAME="$EXEC" |
1ad48481 | 47 | |
48 | ICON="$(basename $DESKTOP .desktop).png" | |
49 | [ -r $ICONDIR/$ICON ] || ICON=default.png | |
50 | ||
51 | echo "$SESSION_SRTING" | \ | |
52 | sed -e "s/@NUM@/$NUM/g" -e "s/@SESSION@/$EXEC/g" \ | |
53 | -e "s/@TITLE@/$NAME/g" -e "s/@ICON@/$ICON/g" >> $SESSIONS | |
54 | NUM=$(($NUM+1)) | |
55 | done | |
56 | ||
0183eca4 | 57 | THEME=$(grep entrance/theme $CONFIGIN | sed 's/.*\s//; s/"//g') |
58 | OLDT= | |
59 | NEWT= | |
60 | if ! [ -r $THEMEDIR/$THEME ]; then | |
61 | OLDT=$(grep entrance/theme $CONFIGIN | sed 's/.*\s//') | |
62 | NEWT=$(ls $THEMEDIR | head -n 1) | |
63 | fi | |
64 | ||
65 | sed -e "s/@auth_mode@/1/" -e "s/@COUNT@/$NUM/" -e "s/$OLDT/$NEWT/" $CONFIGIN > $CONFIGOUT | |
1ad48481 | 66 | chmod 755 $CONFIGOUT |
67 | exec $CONFIGOUT |