#!/bin/sh # # session chooser # # Michael Janczyk # # Last changes: 15-05-2006 # # set X background xsetroot -solid "slate grey" x_dialog () { xsessions="/usr/share/xsessions" vmsessions="/var/lib/vmware/vmsessions" tmpdir="/tmp" menu= execute= 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 # 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 (( args=${args}+1 )) done # --stderr because of 1>/dev/null # echoing to file because Xdialog sux when used w/ quotes echo -e "Xdialog --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