Я использую YAD для создания «магазина приложений» с графическим интерфейсом, и я не могу найти никакого руководства о том, как выполнить команду, когда я выбираю параметр из списка и нажимаю кнопку `` ОК '' (`` ОК '' будет заменено на `` установить ''). Я хочу использовать Только сценарий оболочки.
Это сценарий, который я написал. Это простой список с 2 столбцами и 2 элементами в них. Значок Windows - это просто тест.
yad --list --center --width=800 --height=600
--title "apps4pi" \
--column "app name" --column "description" \
SimpleScreenRecorder " powerful feature packed yet simple and easy to use screen recorder" \
System-Tools "system maintenance commands all done for you"
В следующем коде показано, как выполнить некоторые действия с выбранной строкой:
#!/bin/bash
trap 'rm -f "$tmpfile"' EXIT
# you can also double-click on a row to "install" it.
tmpfile=$(mktemp -p /dev/shm)
if output=$(yad \
--button='Exit!application-exit:1' \
--button='Exit and Install!system-run:0' \
--button="Install!system-run:/bin/sh -c \"cat $tmpfile >&2\"" \
--list \
--dclick-action="/bin/sh -c \"printf \%\s'\n' %s >&2\"" \
--select-action="/bin/sh -c \"printf \%\s'\n' %s >$tmpfile\"" \
--separator='\n' \
--center --width=800 --height=600 --title "apps4pi" \
--column "app name" --column "description" \
SimpleScreenRecorder "powerful feature packed yet simple and easy to use screen recorder" \
System-Tools "system maintanance commands all done for you"); then
printf '%s\n' "$output" >&2
fi
Пример команды печатает столбцы строки построчно в стандартном устройстве ошибок. Кнопка «Выход и установка» выполняет команду, выходя из yad
и используя ее вывод. Кнопка «Установить» получает выборку из временного файла, поэтому ей не приходится ждать вывода; --select-action
используется для обновления этого файла.Вы также можете запустить действие как действие двойного щелчка по выделению; для этого вам не нужен временный файл. См. man yad
для получения дополнительной документации по параметрам.
Что касается названий значков, которые я использовал для кнопок, я выбрал их из числа значков стандартных действий, указанных в спецификации именования значков freedesktop.org.
Если вы хотите, чтобы «установка» происходила только после выхода yad
, а выход и установка происходили при выборе «Установить», используйте
#!/bin/bash
if output=$(yad \
--button='Exit!application-exit:1' \
--button='Install!system-run:0' \
--list \
--separator='\n' \
--center --width=800 --height=600 --title "apps4pi" \
--column "app name" --column "description" \
SimpleScreenRecorder "powerful feature packed yet simple and easy to use screen recorder" \
System-Tools "system maintanance commands all done for you"); then
printf '%s\n' "$output" >&2
fi
Вы можете изменить разделитель столбцов на то, что вам нравится, используя --separator
или используйте значение по умолчанию |
. Замените строку printf
вашей командой.