]> git.pld-linux.org Git - packages/entrance.git/blob - entrance.gen-conf
57c61982e779c633836e8dd0e07eb8d9e99c2767
[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 CONFIGOUT="/tmp/build_config.sh"
7 SESSIONS="/tmp/sessions"
8 ICONDIR="/usr/share/entrance/images/sessions"
9
10 die() {
11         echo "$2" >&2
12         exit $1
13 }
14 [ -f $CONFIGIN -a -r $CONFIGIN ] || \
15         die 1 "No config file $CONFIGIN, or not readable"
16
17 [ -d /usr/share/xsessions ] || die 2 "No xsessions dir"
18
19 # two common desktops
20 cat << EOF > /tmp/default.desktop
21 Name=Default
22 Exec=default
23 EOF
24 cat << EOF > /tmp/failsafe.desktop
25 Name=Failsafe
26 Exec=failsafe
27 EOF
28
29
30 SESSION_SRTING="$(grep -E "^#session:" $CONFIGIN | sed 's/^#session://')"
31
32 : > $SESSIONS
33 NUM=0
34 for DESKTOP in /tmp/default.desktop /usr/share/xsessions/*.desktop \
35         /tmp/failsafe.desktop; do
36
37         EXEC=$(grep -E "^Exec=" $DESKTOP | sed 's/^Exec=//' )
38         [ -n "$EXEC" ] || ( echo "Skipping $DESKTOP !!!" >&2; continue )
39         [ -n "$(which $EXEC 2>/dev/null)" ] && EXEC=$(which $EXEC)
40         EXEC=$(echo $EXEC | sed 's_/_\\/_g')
41         
42         NAME="$(grep -E "^Name=" $DESKTOP | sed 's/^Name=//' | \
43                 sed 's_/_\\/_g')"
44         [ -n $NAME ] || NAME="$EXEC"
45
46         ICON="$(basename $DESKTOP .desktop).png"
47         [ -r $ICONDIR/$ICON ] || ICON=default.png
48
49         echo "$SESSION_SRTING" | \
50                 sed -e "s/@NUM@/$NUM/g" -e "s/@SESSION@/$EXEC/g" \
51                     -e "s/@TITLE@/$NAME/g" -e "s/@ICON@/$ICON/g" >> $SESSIONS
52         NUM=$(($NUM+1))
53 done
54
55 sed -e "s/@auth_mode@/1/" -e "s/@COUNT@/$NUM/" $CONFIGIN > $CONFIGOUT
56 chmod 755 $CONFIGOUT
57 exec $CONFIGOUT
This page took 0.021393 seconds and 2 git commands to generate.