#!/bin/sh # simple script that generates entrance config using build_config.sh.in # and .desktop files from /usr/share/xsessions CONFIGIN="/etc/X11/entrance/build_config.sh.in" CONFIGOUT="/tmp/build_config.sh" SESSIONS="/tmp/sessions" ICONDIR="/usr/share/entrance/images/sessions" THEMEDIR="/usr/share/entrance/themes" die() { echo "$2" >&2 exit $1 } [ -f $CONFIGIN -a -r $CONFIGIN ] || \ die 1 "No config file $CONFIGIN, or not readable" [ -d /usr/share/xsessions ] || die 2 "No xsessions dir" # two common desktops cat << EOF > /tmp/default.desktop Name=Default Exec=default EOF cat << EOF > /tmp/failsafe.desktop Name=Failsafe Exec=failsafe EOF SESSION_SRTING="$(grep -E "^#session:" $CONFIGIN | sed 's/^#session://')" : > $SESSIONS NUM=0 for DESKTOP in /tmp/default.desktop /usr/share/xsessions/*.desktop \ /tmp/failsafe.desktop; do EXEC=$(grep -E "^Exec=" $DESKTOP | sed 's/^Exec=//' ) [ -n "$EXEC" ] || ( echo "Skipping $DESKTOP !!!" >&2; continue ) [ -n "$(which $EXEC 2>/dev/null)" ] && EXEC=$(which $EXEC) EXEC=$(echo $EXEC | sed 's_/_\\/_g') NAME="$(grep -E "^Name=" $DESKTOP | sed 's/^Name=//' | \ sed 's_/_\\/_g')" [ -n "$NAME" ] || NAME="$EXEC" ICON="$(basename $DESKTOP .desktop).png" [ -r $ICONDIR/$ICON ] || ICON=default.png echo "$SESSION_SRTING" | \ sed -e "s/@NUM@/$NUM/g" -e "s/@SESSION@/$EXEC/g" \ -e "s/@TITLE@/$NAME/g" -e "s/@ICON@/$ICON/g" >> $SESSIONS NUM=$(($NUM+1)) done THEME=$(grep entrance/theme $CONFIGIN | sed 's/.*\s//; s/"//g') OLDT= NEWT= if ! [ -r $THEMEDIR/$THEME ]; then OLDT=$(grep entrance/theme $CONFIGIN | sed 's/.*\s//') NEWT=$(ls $THEMEDIR | head -n 1) fi sed -e "s/@auth_mode@/1/" -e "s/@COUNT@/$NUM/" -e "s/$OLDT/$NEWT/" $CONFIGIN > $CONFIGOUT chmod 755 $CONFIGOUT exec $CONFIGOUT