Как я могу легко создать графический интерфейс с помощью 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 и выше.

Другие вопросы по тегам