blob: 9ee81c3b3a5b75d94b8646cefe93ac455aec0ed2 (
plain) (
tree)
|
|
#!/bin/sh
#
# Description: Session chooser for kdm/gdm
#
# Author(s): Michael Janczyk <mj0@uni-freiburg.de>, 03-10-2006
#
# Copyright: (c) 2003, 2006 - RZ Universitaet Freiburg
#
# Version: 0.2.435
#
################################################################################
# read from machine-setup (for slxgrp)
. /etc/machine-setup
# set X background
res=$(xvidtune -show | grep -wo "\".*\"" | sed "s/\"//g")
if ! [ -f /var/lib/openslx/themes/bootsplash/images/silent-${res}.jpg ]; then
img=$(ls /var/lib/openslx/themes/bootsplash/images/ | grep -m 1 "silent")
display -window root /var/lib/openslx/themes/bootsplash/images/${img}
else
display -window root /var/lib/openslx/themes/bootsplash/images/silent-${res}.jpg
fi
# Xdailog test
xdialog=$(which Xdialog)
[ -z "${xdialog}" ] && xterm -e 'echo -e "\n\n\n\n\n\n\t\t\tNo Xdialog installed!!!\
\n\n\t\t\tClosing in 3 seconds."; sleep 3' && exit 1
x_dialog () {
xsessions="/usr/share/xsessions"
vmsessions="/var/lib/vmware/vmsessions"
tmpdir="/tmp"
menu=
execute=
slxgrp=$(echo ${slxgrp} | tr [A-Z] [a-z])
slxgrptest=
xdesktopsnr=( `ls ${xsessions}/*.desktop | grep -v "default.*" \
| wc -l 2>/dev/null` )
desktops=( `ls ${xsessions}/*.desktop | grep -v "default.*" \
| sort -bf 2>/dev/null; \
ls ${vmsessions}/*.desktop | sort -bf 2>/dev/null` )
desktopsnr=$(echo "${#desktops[*]}")
(( args=0 ))
declare -i i=0
while [ "${xdesktopsnr}" -gt "${args}" ]; do
# exec in .desktop
execute[${i}]=$(grep -m 1 -i "exec" ${desktops[${args}]} \
| awk -F "=" '{print $2}')
menu="$menu \"\${execute[${i}]}\""
i=${i}+1
# name in .desktop
execute[${i}]=$(grep -m 1 -i "name" ${desktops[${args}]} \
| awk -F "=" '{print $2}')
execute[${i}]=${execute[${i}]:-`echo ${execute[${i}-1]} | sed -e "s,-, ,g"`}
menu="$menu \"\${execute[${i}]}\""
i=${i}+1
# comment in .desktop
execute[${i}]=$(grep -m 1 -i "comment" ${desktops[${args}]} \
| awk -F "=" '{print $2}')
execute[${i}]="| Desktop Environment |
${execute[${i}]:-"No comment"}"
menu="$menu \"\${execute[${i}]}\""
i=${i}+1
(( args=${args}+1 ))
done
while [ "${desktopsnr}" -gt "${args}" ]; do
# check for slxgrp
slxgrptest=$(grep -m 1 -i "slxgrp" ${desktops[${args}]} \
| awk -F "=" '{print $2}' | tr [A-Z] [a-z])
if [ -z "${slxgrp}" -o "${slxgrp}" = "${slxgrptest}" -o "${slxgrp}" = "default" ]; \
then
# exec in .desktop
execute[${i}]=$(grep -m 1 -i "exec" ${desktops[${args}]} \
| awk -F "=" '{print $2}')
menu="$menu \"\${execute[${i}]}\""
i=${i}+1
# name in .desktop
execute[${i}]=$(grep -m 1 -i "name" ${desktops[${args}]} \
| awk -F "=" '{print $2}')
execute[${i}]=${execute[${i}]:-`echo ${execute[${i}-1]} | sed -e "s,-, ,g"`}
menu="$menu \"\${execute[${i}]}\""
i=${i}+1
# comment in .desktop
execute[${i}]=$(grep -m 1 -i "comment" ${desktops[${args}]} \
| awk -F "=" '{print $2}')
execute[${i}]="| VMware Image |
${execute[${i}]:-"No comment"}"
menu="$menu \"\${execute[${i}]}\""
i=${i}+1
fi
(( args=${args}+1 ))
done
# test if menu not empty?
[ -z "${menu}" ] && Xdialog --infobox "No items found to display!!!" 10 30 3000 && exit 1
# --stderr because of 1>/dev/null
# echoing to file because Xdialog sux when used w/ quotes
echo -e "Xdialog --rc-file /var/lib/openslx/themes/Xdialog/gtkrc \
--title \"Desktop / VMware-Image Menu\" \
--screen-center \
--fill \
--no-wrap \
--stderr \
--no-tags \
--ok-label \"START\" \
--item-help \
--menubox \"Which desktop or VMware-image to start?\" 35 80 0 \
$menu 1>/dev/null" \
> ${tmpdir}/Xdialog
. ${tmpdir}/Xdialog
rm -f ${tmpdir}/Xdialog
}
args_dial=$(x_dialog 2>&1) # 2>&1, see function
exec ${args_dial}
exit 0
|