I think I've got something working in Gutsy. It's a little less tidy than the original in that I'm displaying numbers in the OS list. Try as I might, I can't get grep to search correctly on the string returned by zenity from the OS list. However, I'm pretty new to bash scripting and may have missed something. Also I expect my new bit could be made shorter.
Code:
list_menu(){
#List a menu of installed operating systems. Double click to set default.
grep ^title $G_MENU > $AVAIL
grep ^title $AVAIL | grep -n ^title > $AVAIL
cat $AVAIL | sed '/Other operating systems/ d' | sed 's/:title / /' > $AVAIL # Remove unwanted line
OS_SEL=$(cat $AVAIL | zenity --list --width=400 --height=200 --title="Available Menu Items" --column "Operating Systems" --text="Choose an OS:")
if [ -n "$OS_SEL" ]
then
MENU_ITEM=$(echo $OS_SEL | grep -o ^[[:digit:]]*) # Strip OS number off
let MENU_ITEM=$MENU_ITEM-1
DEF_LINE=$(grep -n ^default $G_MENU | grep -o ^[[:digit:]]*)
DEF_CURR=$(grep ^default $G_MENU | grep -o [[:digit:]]*$)
vi -e -c "$DEF_LINE"s/"$DEF_CURR"/"$MENU_ITEM" $G_MENU -c :wq | zenity --progress --pulsate --auto-close --title="New Default" --text="Progress:"
success
fi
rm $AVAIL
}
Bookmarks