Как выполнить команду при выборе параметра и нажатии кнопки «ОК» в YAD?

Я использую 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"
0
задан 21 October 2020 в 09:28

1 ответ

В следующем коде показано, как выполнить некоторые действия с выбранной строкой:

#!/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 вашей командой.

1
ответ дан 24 October 2020 в 12:09

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

Похожие вопросы: