#!/bin/sh # # session chooser # # Michael Janczyk # # Last changes: 26-04-2006 # x_dialog () { xsessions="/usr/share/xsessions" vmsessions="/var/lib/vmware/vmsessions" tmpdir="/tmp" menu= execute= desktops=( `ls ${xsessions} | grep -x ".*desktop" \ | grep -v "default.*" 2>/dev/null` ) xdesktopsnr=$(echo "${#desktops[*]}") desktops=( `ls ${xsessions} | grep -x ".*desktop" \ | grep -v "default.*" 2>/dev/null; \ ls ${vmsessions} | grep -x ".*desktop" 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" ${xsessions}/${desktops[${args}]} \ | awk -F "=" '{print $2}') menu="$menu \"\${execute[${i}]}\"" i=${i}+1 # name in .desktop execute[${i}]=$(grep -m 1 -i "name" ${xsessions}/${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" ${xsessions}/${desktops[${args}]} \ | awk -F "=" '{print $2}') execute[${i}]=${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" ${vmsessions}/${desktops[${args}]} \ | awk -F "=" '{print $2}') menu="$menu \"\${execute[${i}]}\"" i=${i}+1 # name in .desktop execute[${i}]=$(grep -m 1 -i "name" ${vmsessions}/${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" ${vmsessions}/${desktops[${args}]} \ | awk -F "=" '{print $2}') execute[${i}]=${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 \"VMware Image Menu\" \ --screen-center \ --fill \ --no-wrap \ --stderr \ --no-tags \ --ok-label \"START\" \ --item-help \ --menubox \"Please choose the image you would like to run:\" 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