За такива непретенциозни и опростени диалогови прозорци в GTK среда (каквато е в Gnome, но не само) ти препоръчвам инструмента Zenity. В Qt среда (каквато е в KDE, но не само) подобният за тези цели инструмент е KDialog.
Ето пример със Zenity по твоя въпрос
GeSHi (Bash):
#!/bin/bash
SCRIPTS_DIR="/папка/със/скриптове"
CHOISE=$(zenity --list --text="Избери скрипт:" --column="" --column="Скрипт" --radiolist TRUE "script1.sh" FALSE "script2.sh" FALSE "script3.sh")
$SCRIPTS_DIR/$CHOISE
В този пример приемаме, че всички скриптове са разположени в директорията "/папка/със/скриптове", а в Zenity подаваме списък с имената на файловете на всеки скрипт, като с TRUE сме задали по подразбиране да е избран първият (не е задължително да е първият, а може и всички да са FALSE). Когато изпълниш този скрипт, ще ти се покаже диалогов прозорец, в който можеш да избереш скрипта, който да се изпълни, и той ще бъде изпълнен, благодарение на последния ред в примера, където се извиква пълният път до скрипта за изпълнение (папката, съдържаща скриптовете, последвана от името на файла, което сме избрали от списъка).
Разбира се, това е най-опростеният вариант. Ако скриптовете за изпълнение не са в една папка, то може да махнеш задаването на променливата $SCRIPTS_DIR (вече ще е излишна) и или да опишеш пълните им пътища в списъка, или в списъка да впишеш някакви фиктивни имена, а след това по тях да впишеш условия, извикващи точните скриптове. Например
GeSHi (Bash):
#!/bin/bash
CHOISE=$(zenity --list --text="Избери скрипт:" --column="" --column="Скрипт" --radiolist TRUE "ЕДНО" FALSE "ДВЕ" FALSE "ТРИ")
if [[ "$CHOISE" = "ЕДНО" ]]; then
/път/до/скрипта/script1.sh
elif [[ "$CHOISE" = "ДВЕ" ]]; then
/път/до/скрипта/script2.sh
else
/път/до/скрипта/script3.sh
fi
В примерите досега задавах флага "--radiolist", който даваше възможност за избор само на една позиция. Списъкът ("--list") в Zenity поддържа и флага "--checklist", при който има възможност от избор на повече от една позиции, с което в твоя случай ще имаш възможност едновременно да изпълниш повече от един скрипт. В този случай имай предвид, че избраните позиции ще влязат в променливата $CHOISE наведнъж, разделени с права черта "|".
Няма да изпадам в по-големи подробности засега. Разгледай примерите, документацията на Zenity и експериментирай, и ако имаш нужда от още помощ, питай.
Стартерите на програмите обикновено седят в /usr/share/applications. Разгледай съдържанието на .desktop файловете там за пример, направи си свой .desktop файл (трябват ти root права, за да правиш файлове там), впиши в него съответната информация и след това си добави стартера на десктопа или в някой от панелите по стандартния начин, по който си добавяш други програми (отдавна не съм работил с Gnome и не мога да те упътя точно). Ето пример за съдържанието на такъв стартер
[Desktop Entry]
Name=Моят скрипт
GenericName=My Script
Comment=Скрипт, извикваш други скриптове
Exec=/път/до/скрипта/zenity.sh
Icon=/път/до/иконата/icon.png
Terminal=false
Type=Application
Може да добавиш и ред Categories, в който да опишеш категорията (категории) от менютата на Gnome, където да се вижда стартерът. Използвай другите .desktop файлове за пример как се казват категориите.