]> git.pld-linux.org Git - packages/entrance.git/blob - entrance.gen-conf
- security fix
[packages/entrance.git] / entrance.gen-conf
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"
6 WORKDIR="/var/lib/entrance"
7 CONFIGOUT="$WORKDIR/build_config.sh"
8 SESSIONS="$WORKDIR/sessions"
9 ICONDIR="/usr/share/entrance/images/sessions"
10 THEMEDIR="/usr/share/entrance/themes"
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
22 cat << EOF > $WORKDIR/default.desktop
23 Name=Default
24 Exec=default
25 EOF
26 cat << EOF > $WORKDIR/failsafe.desktop
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
36 for DESKTOP in $WORKDIR/default.desktop /usr/share/xsessions/*.desktop \
37         $WORKDIR/failsafe.desktop; do
38
39         EXEC=$(grep -E "^Exec=" $DESKTOP | sed 's/^Exec=//' )
40         [ -n "$EXEC" ] || ( echo "Skipping $DESKTOP !!!" >&2; continue )
41         [ -n "$(which $EXEC 2>/dev/null)" ] && EXEC=$(which $EXEC)
42         EXEC=$(echo $EXEC | sed 's_/_\\/_g')
43         
44         NAME="$(grep -E "^Name=" $DESKTOP | sed 's/^Name=//' | \
45                 sed 's_/_\\/_g')"
46         [ -n "$NAME" ] || NAME="$EXEC"
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
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
66 chmod 755 $CONFIGOUT
67 exec $CONFIGOUT
This page took 0.076139 seconds and 3 git commands to generate.