Как я могу легко создать графический интерфейс с помощью bash-скрипта?
Мне нужно представить некоторый текст вместе с элементами (около 15 значений) для каждой из двух записей списка (файла) Bash. На том же экране мне нужно представить трехсторонний выбор (кнопки, прокручиваемое окно выбора и т. Д.).
Я новичок в Ubuntu(11.04), только начинающий использовать Zenity в сценариях. Мои друзья предложили ЯД.
Могу ли я сделать все это в YAD или использовать какой-то другой простой графический инструмент, неизвестный нам?
,
4 ответа
Вот очень минимальная реализация в Яде.
Текстовый файл с именем "mylist" в том же каталоге, что и скрипт, содержит "1 2 3 4 5 6 7 8 9 10". Пробел является разделителем по умолчанию для ввода в списки.
Пример сценария:
#/bin/bash
thelist=$(<mylist)
thechoice=$(yad --title="Choose a value" --width=200 --height=200 --list --column="Values" --separator="" $thelist)
exit $(yad --title="You chose..." --text=$thechoice)
Вот и все. Прокрутка списка обрабатывается автоматически. --separator=""
заключается в том, чтобы подавить значение Yad по умолчанию добавления символа канала ("|") к выводу.
Когда вы прочитаете справочную страницу, вы увидите, что у вас есть большой набор возможностей. Вы можете добавлять кнопки, значки, переключатели и т. Д. Вы можете создавать диалоги с вкладками, используя функцию ноутбука Yad для встраивания диалогов в другие диалоги в качестве плагинов.
Есть длинный пример на PCLinusOS mag и несколько интересных коротких примеров на сайте Yad.
Для простых диалогов Yad или kdialog действительно самые интересные. Однако полный графический интерфейс для bash может быть выполнен только двумя известными мне программами:
gtkdialog ( https://code.google.com/p/gtkdialog) предоставит вам полноценный веб-интерфейс для отдельных программ и, вероятно, именно то, что вы ищете в первую очередь, если yad окажется недостаточно для ваших нужд.
Другой - это gtkserver ( http://www.gtk-server.org/), который является отдельным запущенным GUI-сервером. Ваше bash-приложение может связываться с ним посредством каналов, сообщений или TCP-сокетов, что очень удобно, если вы планируете сложную настройку скриптов / приложений с единым центральным интерфейсом. Я думаю, что это будет слишком для вашего текущего проекта:-)
Некоторые примеры Zenity, на случай, если кто-то захочет придерживаться этого.
Это создаст окно сообщения "Hello world":
zenity --info --text "Saluton mondo"
Это создаст список, заполненный выводом ls:
ls /var/log | zenity --list --column="Files and directories"
Вот очень хороший пример, как создать зенитный диалог с несколькими входами.
Различные типы пользовательского интерфейса (флажок, дата, средство выбора цвета и т. д.) описаны здесь .
и насколько я могу судить:
zenity
устанавливается из коробки в Ubuntu 20.04 и выше.