Форум проекта PuppyRus Linux

Разработки проекта PuppyRus => Программирование и компиляция => Тема начата: sfs от 29 Декабрь 2012, 11:16:13

Название: yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 29 Декабрь 2012, 11:16:13
http://code.google.com/p/yad/ http://wiki.puppyrus.org/programming/yad
Рецепты (http://murga-linux.com/puppy/viewtopic.php?t=97458&start=15)
Аналог gtkdialog, Xdialog.
Функционал меньше чем у gtkdialog, но больше чем у Xdialog
Cинтаксис похож на Xdialog.
Местами может заменить zenity.
yad может выводить в трей.
Скомпилил под PuppuRus218. Зависимостей не тянет. Иконки в yad-icon-browser нет - похоже проблема gtk-icon в 218
Документации мало. Вложил примеров. Кто еще найдет - выкладывайте.

Патч OK<->Cancel (http://forum.puppyrus.org/index.php/topic,15904.msg93085.html#msg93085)
yad --notification -image= маленькая иконка в трее (http://forum.puppyrus.org/index.php?topic=20196.msg136709#msg136709)
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: DdShurick от 29 Декабрь 2012, 13:46:32
но больше чем у Xdialog
Жаль --buildlist нет.
Cинтаксис похож на Xdialog.
Проще, и при ошибках не "вылетает"
Местами может заменить zenity.
Это и есть переработанный zenity.
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: k0l0p0k от 05 Январь 2013, 21:50:23
 простенький пример индикатора прогресса:
#! /bin/bash
COUNTER=0
element_count=400
echo "log" > /tmp/yad-log.txt
while [[ "$COUNTER" -lt "$element_count" ]]; do
  let COUNTER=COUNTER+1
  let "perc=100*COUNTER/element_count"
  sleep 0.002
  echo $perc"%" 
done | tee -a /tmp/yad-log.txt | \
yad --progress --image=gtk-execute --title="Выполнение сценария...." \
    --width 500 --height 50 --auto-close --sticky --text="...." \
    --center --no-buttons
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 02 Декабрь 2013, 19:18:39
Нельзя вывести кнопку с произвольной надписью и значком. Только из gtk-* набора.
Зато --geometry работает без сюрпризов ( в отличие от gtkdialog)
Для простых задач хорош. Для сложных gtkdialog вне конкуренции

131202
Вышла в.0.24.1. Добавлено
>   --image-path=PATH                           Add path for search icons by name
128a130]   --no-click                                  Disable clickable column headers[/quote]
147a150,151 --auto-close                                Dismiss the dialog when 100% of all bars has been reached   --auto-kill  
 
В трее панели задач по прежнему не появляется
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 16 Декабрь 2013, 17:45:15
В трее панели задач jwm по прежнему не появляется
Списался с автором. Он сразу же исправил: yad.gz в шапке
Исправленная версия в его svn
Не ожидал такой скорости реакции

131216 http://wiki.puppyrus.org/programming/yad
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 11 Август 2014, 15:09:46
Вышла версия 0.27 (аттач в шапке)
2014-04-18 07:50  v1c0nt

        * data/yad.1: update man page

2014-04-18 07:48  v1c0nt

        * po/ru.po, po/uk.po: add --hidden option for notification icon

2014-04-18 07:45  v1c0nt

        * po/ru.po, po/uk.po, src/notification.c, src/option.c, src/yad.h:
          fix tooltip-colimn description

2014-04-15 10:30  v1c0nt

        * data/yad.1, src/main.c: add YAD_XID variable

2014-04-15 04:59  v1c0nt

        * data/yad.1: fix typo in man page
       
2014-04-15 03:49  v1c0nt
       
        * src/option.c: fix build for windows

2014-03-17 16:02  v1c0nt
       
        * src/print.c, src/util.c, src/yad.h:

2014-02-28 11:48  v1c0nt
       
        * src/list.c:
2014-02-27 12:06  v1c0nt

        * src/icons.c: fix markup tooltip in icon dialog

2014-02-27 11:29  v1c0nt

        * src/form.c, src/util.c, src/yad.h: undelete escape_str function

2014-02-27 11:14  v1c0nt

        * configure.ac, src/form.c, src/icons.c, src/list.c, src/option.c,
          src/util.c, src/yad.h: add --tooltip-column option. cleanup
          parsing markup code
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 22 Март 2015, 18:37:51
Рецепты (http://murga-linux.com/puppy/viewtopic.php?t=97458&start=15)
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 20 Апрель 2015, 09:14:41
программа переехала на http://sourceforge.net/projects/yad-dialog/
надо бы исправить в wiki
исправил
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 28 Апрель 2015, 04:46:05
а как построить меню в трее? точнее как задать команду для выполнения при ПКМ
типа
gtk-ok! "выполнить" echo выполняем
какие разделители поставить не могу понять.
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 28 Апрель 2015, 09:11:24
Вдохновись моими trdo и peasymp3. Писал давно - подробностей не помню.
Чего-то полезное для всех пишешь?
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 28 Апрель 2015, 09:43:09
я помню что ты писал что разобрался с построением меню, в trdo и т.п. пункты передаются через пайп >3 но мне кажется в простом случае через --menu= должно же задаваться как то.
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 28 Апрель 2015, 09:55:23
Под "разобрался" я имел ввиду, что то, что хотел получилось. Однозначно сказать, что это оптимальный путь не возьмусь. Любые рабочие примеры интересны. Давай добавлять в вики (http://wiki.puppyrus.org/programming/yad)
Может быть добавить про трей что-то в виде шаблона в ntf
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 28 Апрель 2015, 10:13:15
не ну ты передавал через пайп  3 что-то, попробуй теперь восстановить в своем коде что получилось.
Я понял только что || это в меню будет черта с разделителем.
У меня нет проблемы с названием пунктов и значками (--separator=, --menu=gtk-ok! 1234,gtk-no! 5678 и т.п.) но блин действие при нажатии на меню как вписать, это же самое главное
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 28 Апрель 2015, 10:30:22
На примере trdo
Меню формируется через $GET_MENU
gtk-open! bash -c PLAYER , где gtk-open - значок+текст ; ! - разделитель внутри пункта; bash -c PLAYER - действие (если это не функция из этого скрипта, а внеш. команда - без bach)
| - разделитель между пунктами (подставляется в MENU_ITEMS)

В твоем примере - действие 1234 и это должен быть внешний скрипт (бинарник)
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 28 Апрель 2015, 10:33:53
Ну ладно, тогда как произвольный текст задать для пункта?
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 28 Апрель 2015, 10:41:11
Точно будет работать если вместо gtk-add написать "Любой текст" (но будет без иконки)
Возможно прокатит : "текст"!имя_иконку!"текст сплэша" - пример см. chpass (c кнопкой так работает)

Не бойся написать автору yad- он русскоязычный и отзывчивый
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 28 Апрель 2015, 17:05:07
автор дал ответ:

yad --notification --menu='item name 1!command1|item name 2!command2!icon-name'

формат описания элемента меню - имя[!команда[!иконка]]

разделители можешь назначать через --separator - (|) и --item-separator (!)
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 28 Апрель 2015, 17:26:27
Да - так попроще. Я у буржуев передирал - они как всегда накрутили. Не зря их Дядя Шурик ругает
Добавил в вики
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 28 Апрель 2015, 17:29:17
нет, в примерах которые автор приводит у себя на сайте, тоже используется >3
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 09 Январь 2016, 18:23:54
Пропатчил OK<->Cancel и скомпилил yad 0.33 - в шапке
Как скомпилить с ключом --enablr-html и что это даст не понял
Изменения (http://sourceforge.net/p/yad-dialog/code/HEAD/tree/trunk/NEWS)
Со старым не работал http://sourceforge.net/p/yad-dialog/wiki/FindFrontend/
Новые ключи
--help-paned                                Показывать параметры диалога с панелями
--help-picture                              Показывать параметры диалога отображения картинки
--help-filter                               Показывать параметры фильтров диалога выбора файлов
Пока пользы в них не нашел

Добавил в шапку yad-0.33.0_64.pfs
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 04 Февраль 2016, 09:21:03
Подскажите пожалуйста ключ "--expander=ТЕКСТ"  -Спрятать основной виджет
какие параметры вписать в TEXT ?
вот так пробовал

btn(){ yad --expander=TEXT ;} ; export -f btn ; yad --button=открыть:'bash -c btn'

что бы не писал вместо ТЕКСТ виджет не прячет
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 04 Февраль 2016, 11:37:54
У yad отзывчивый русскоязычный автор. Я спрашивал непонятное у него. По итогу http://wiki.puppyrus.org/programming/yad
Давайте продолжать эту тему
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ander от 04 Февраль 2016, 23:26:15
--expander - это показать свернутый основной виджет.  А где он у вас?
Например
 yad --list --column="A" --column="B" --expander="list" aaa bbb
покажет свернутый список
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 05 Февраль 2016, 18:51:57
--expander - это показать свернутый основной виджет.  А где он у вас?
Например
 yad --list --column="A" --column="B" --expander="list" aaa bbb
покажет свернутый список
Покажите пожалуйста пример, где есть основной и не основной виджет
думал окно это и есть виджет и при открытии другого окна то спрячется

Добрые люди покажите пример, где данные постоянно обновляются без закрытия окна
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ander от 05 Февраль 2016, 19:49:53
Чтобы обновлялось без закрытия - такое не знаю как сделать.
Можно дописывать чего-нибудь в уже открытое текстовое окно или в список, а вот очистить или перезаписать уже заполненное - тут
действительно разве что у автора спрашивать, таких примеров не видел.
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 05 Февраль 2016, 21:23:18
у автора спрашивать
Написал автору ждем...
Дописывать как знаю, через именной канал
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ander от 05 Февраль 2016, 23:37:43
дописывать можно просто через стандартный ввод

Кстати, придумал пример с постоянным изменением данных:
while :
do
  date
  date -u
  sleep 1
done | yad --list  --width=400 --height=150 \
           --column=a --column=b --limit=2 --print-all
Принцип в том, чтобы ограничить число строк, тогда новые данные просто вытесняют старые.

Еще пример для --form
while :
do
  date
  date -u
  sleep 1
done | yad --form --cycle-read --field="местное время":RO --field="время UTC":RO
Но этот работает только на 33 версии yad, pfs в шапке темы есть.
Также в мануале 33 версии написано, что если в --form используется --field="надпись":FBTN '@команда'
то вывод команды разбирается и строки, начинающиеся с цифры, подставляются как значения соответствующих номеру --field
Это пока не пробовал.
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 06 Февраль 2016, 18:20:59
ander все  замечательно получилось, сделал аналог conky
а можно с кнопки обновить? Очень надо!
автору не стал писать, ответов и на первые вопросы нет
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 06 Февраль 2016, 20:15:53
По примерам - а как выйти из этого бесконечного цикла?
сделал аналог conky
Выложите посмотреть
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ander от 06 Февраль 2016, 22:51:04
По примерам - а как выйти из этого бесконечного цикла?

Да никак, я просто по ^C убивал.  Это же только чтобы показать, как в yad можно окно не закрывая обновить.

Пример с обновлением полей формы запуском команды с кнопки

yad --width=300 --height=150 --form \
    --field='местное':RO 'пусто' \
    --field='UTC':RO 'тоже пусто' \
    --field='gtk-refresh':FBTN '@bash -c "echo \"1:$(date)\"; echo \"2:$(date -u)\""'
Но тут кнопку каждый раз нажимать надо.
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 16 Февраль 2016, 17:30:04
покажите пожалуйста пример для этого ключа

--command=КОМАНДА                           Задать команду-обработчик
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 16 Февраль 2016, 17:35:01
--command=КОМАНДА                           Задать команду-обработчик
netctl-tray в pra
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 17 Февраль 2016, 09:14:39
ничего не понимаю а можно пример?
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 18 Февраль 2016, 19:08:08
спасибо за netctl-tray.gz примерно понял,
вот еще,  как бороться с таким выводом

 file:///home/igor/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/%D0%AF%20%D0%BF%D0%BB%D1%8E%D1%8E%20%D0%BD%D0%B0%20%D0%B2%D0%B0%D1%88%D0%B8%20%D0%BC%D0%BE%D0%B3%D0%B8%D0%BB%D1%8B.jpg

все русские буквы в таком виде от "yad --html --print-uri"
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ander от 18 Февраль 2016, 22:12:56
Я вот так боролся:
qp="file:///home/igor/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/%D0%AF%20%D0%BF%D0%BB%D1%8E%D1%8E%20%D0%BD%D0%B0%20%D0%B2%D0%B0%D1%88%D0%B8%20%D0%BC%D0%BE%D0%B3%D0%B8%D0%BB%D1%8B.jpg"

echo "$qp" |sed  's|%\([[:xdigit:]]\{2\}\)|\\\\x\1|g' |while read s; do echo -e "$s"; done

Не уверен, что это лучший метод, наверняка есть куча программ, конвертирующих quoted-printable, но по крайней мере
быстро делается и работает.
Принцип такой.  sed своим страшным выражением преобразует всякие '%D0' в '\\xD0', потом read s их читает (при этом в s заносится уже '\xD0'), а такое выражение echo -e уже может вывести в виде символа.  while там на случай, если на входе будет не одна строка, а несколько.
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 18 Февраль 2016, 23:36:28
Спасибо за помощь,
Ваш вариант работает!
Проверил кодировку текста - utf 8 и открыл для себя страшное слово "urlencoded" , как из одной в другую кодировку перевести
я знаю а как тот же  utf 8 с urlencoded привести в человеческий вид непонятно...
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ander от 19 Февраль 2016, 11:46:11
А как оно получается и как выглядит?
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 20 Февраль 2016, 09:58:38
%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0

это он и есть utf 8, c методом пост обработки urlencode будет выглядеть по человечески.
пользуются им браузеры  в своих запросах к серверам и тд,

вашим способом перевести получилось, а правильно это или нет, не знаю, может есть способ попроще
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 21 Февраль 2016, 08:57:37
подскажите, это только у меня такая конструкция не работает         yad 0.33.1 (GTK+ 2.24.23)

cat "/tmp/cover.html" | yad --html

а так работает, но нужно через пайп передать html

yad --html --uri="/tmp/cover.html"
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 21 Февраль 2016, 09:26:24
ПРА64 не работают оба варианта. Это новая фича в  yad 0.33.1 ?
# yad --version
0.33.0 (GTK+ 2.24.28)
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 21 Февраль 2016, 15:34:09
Видимо новая, запилил на ней смену обложек для кнопок запуска, понял что нужно менять условия поиска
добавил в панель поле ввода, а через пайп передать не могу обновленную страницу картинок не видно
(http://s017.radikal.ru/i433/1602/ce/67967fee7e26t.jpg) (http://radikal.ru/fp/e3d0dfb4fadd4d7e9e101f4be96c7009)
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: drill от 21 Февраль 2016, 16:57:01
Это новая фича в  yad 0.33.1 ?
Впервые появилось в 0.28.0 (от 6 марта 2015). Требует конфигурации:
configure --enable-html
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 23 Февраль 2016, 17:16:08
В yad --list   есть вот такие ключи

  --sep-column=ЧИСЛО                          Задать колонку разделителя строк
  --sep-value=ТЕКСТ                           Задать значение разделителя строк

ничего не выходит с этими разделителями, "Ошибка сегментирования"
кто знает подскажите какие значения в ЧИСЛО ТЕКСТ поставить а лучше  пример

и есть ли ресурс в нете где описаны ключи YAD и нововведения на русском?
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ander от 23 Февраль 2016, 18:15:27
Из мануала:
Цитировать
  --sep-column=NUMBER                                                           
      Set the row separator column. If the cell value from this column equal to
      specified row separator value such row will be draw as separator.         
      Separator value must be set.                                             
  --sep-value=TEXT                                                             
      Set the TEXT as a row separator value. This feature highly depends on     
      your current GTK+ theme and may not work properly.

Пример:
echo 'aaa
bbb
ccc
ddd
eee
fff
ggg
hhh
iii
'|yad --list --width=150 --height=150 \
      --column=a --column=b --column=c \
      --sep-column=1 --sep-value="ddd"
Как видите, по идее там должно быть три строки, но поскольку в первой колонке второй строки значение совпало с sep-value, эта строка превратилась в сепаратор.

Работает только на 0.33, для чего можно применить, не знаю.
Название: Re:yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 23 Февраль 2016, 22:59:50
Спасибо за объяснения, думал все немного по другому,
 гугл переводчик выдает сплошные загадки... :-[
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 04 Март 2016, 09:43:39
подскажите как сменить шрифт в  yad --text-info а точнее нужно немного увеличить
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ander от 04 Март 2016, 12:05:34
Например, yad --text-info --fontname="Sans 20"

Чтобы подобрать нужный шрифт можно запустить yad --font, выбрать там, что понравится, а он имя шрифта на вывод выдаст.
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 04 Март 2016, 12:20:55
Спасибо! ::)
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 08 Март 2016, 08:51:50
Вот еще вопрос, куда подевалась переменная $Y
#!/bin/bash
for X in 10 20 30 40 50 60 70 80 90 100
do
echo $X%
Y=$[$Y+1]
sleep 1
done | yad --progress
echo $Y
но если без " yad --progress"  то все нормально
и еще, можно ли как нибудь сделать чтоб и " yad --progress" бало видно и исполнение скрипта
"echo $X% "
Пока копаюсь в сторону "tee"
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ander от 14 Март 2016, 10:16:26
Вот еще вопрос, куда подевалась переменная $Y
Это известный прикол, в мануале на bash  ясно сказано, что конвейеры выполняются в подоболочке, то есть все переменные в них получаются локальными - конвейер закончился, они и пропали.  Соответственно, использовать их можно только до выхода из конвейера.  Например:
#!/bin/bash
{ for X in 10 20 30 40 50 60 70 80 90 100
do
echo $X%
echo $X% >&2
Y=$[$Y+1]
sleep 1
done
echo $Y >&2; } | yad --progress
Цикл вместе с последующим выводом Y заключен в блок, стандартный вывод блока перенаправлен в yad, а вывод Y делается в stderr, туда же можно отправить и копию X.
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 14 Март 2016, 18:10:12
Спасибо! Теперь выполнение скрипта вижу,  а переменная все равно потерялась  :(
можно ли её экспортировать? Может не правильно выразился, скрипты пишу не так давно,
в общем, пока её записываю  во временный файл а далее вызываю Y=$(cat /tmp/Y)
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ander от 16 Март 2016, 10:04:56
Экспортировать бесполезно, она все равно останется локальной.
Что вообще значит "экспорт переменной"?  У каждого запущенного процесса есть свой набор переменных окружения.  Запускаем мы из скрипта какую-нибудь программу - этой программе будет передана область памяти с копиями всех экспортированных переменных.
А что значит "выполняется в подоболочке"?  Да почти то же самое.  Запускается еще несколько экземпляров bash, и уже они выполняют каждый свою команду из конвейера.  Но поскольку тут явного вызова нет, (fork без exec) то ему достаются копии всех переменных, не только экспортированных.  Но именно копии переменных!  Как только подоболочка завершилась, эти копии в любом случае потеряются.
А почему так делается?  Да потому что для перенаправления вывода одной команды на ввод другой они должны выполняться одновременно, то есть выполняться они будут двумя разными копиями bash - подоболочками.
В вашем примере, запустил bash скрипт, а там сразу перенаправление.  Тут же запустились еще две копии bash, первая пошла выполнять цикл, а вторая yad.  Но после того, как подоболочка, выполняющая цикл, завершилась, все ее переменные, разумеется, пропали.  Существуют они только до " | ", поэтому, когда я поставил echo $Y >&2 до " | ", то Y вывелся.
То есть, нужно сделать так, чтобы все использование переменной Y происходило в одной подоболочке, до перенаправления вывода конвейером.
Или есть еще такой метод (возможно, не во всех версиях сработает, у меня работает нормально):
#!/bin/bash                                                                     
exec 3> >(yad --progress)                                                       
Y=0                                                                             
for X in 10 20 30 40 50 60 70 80 90 100.                                       
do                                                                             
echo $X% >&3                                                                   
Y=$[$Y+1]                                                                       
sleep 1                                                                         
done                                                                           
echo Y=$Y
exec 3> >(yad --progress) означает "открыть в текущем интерпретаторе дескриптор 3 на запись и перенаправить его в отдельно запущенный процесс  yad, где он будет стандартным вводом"
Довольно мудрено выглядит, но зато позволяет избавиться от конвейера, в результате все остальное будет выполняться в текущей оболочке и переменные не потеряются.  Все, что нужно отправить в yad в этом случае надо писать в 3 дескриптор: echo $X% >&3
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 17 Март 2016, 18:12:25
Спасибо! Это то что нужно и благодарен за объяснения, такую конструкцию встречал но не знал как работает
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 09 Ноябрь 2016, 16:45:42
Прошу подсказки,
Вот в этом примере:
yad --notification  --text="test" --command="gedit"
нужно при клике лкм запустить программу "gedit"  и закрыть диалог оповещения "иконку в трее",
какую команду дописать в поле "--command=?"
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 09 Ноябрь 2016, 17:07:39
http://wiki.puppyrus.org/programming/yad#notification
Разберите /usr/local/netctl-tray из PRA
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 09 Ноябрь 2016, 18:18:02
/usr/local/netctl-tray
e меня по этому пути  нет  netctl-tray --> ос linuxmint 17.3
вопрос только в комманде которая закроет этот значёк.
Попробую пояснить,  Скрипт проверяет почту при наличии новых
писем запускается yad --notification, и при клике лкм открывается браузер с адресом почты,
так-как почта прочитана индикатор не нужен

http://wiki.puppyrus.org/programming/yad#notification  --> здесь нет такого примера
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 10 Ноябрь 2016, 09:10:41
Разберите /usr/local/netctl-tray из PRA
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 10 Ноябрь 2016, 10:35:50
Скрипт проверяет почту при наличии новых
писем запускается yad --notification, и при клике лкм открывается браузер с адресом почты,
так-как почта прочитана индикатор не нужен
http://zenway.ru/page/mailtc#cut
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 10 Ноябрь 2016, 16:37:03
http://zenway.ru/page/mailtc#cut
Готовые решения не интересны, пилю своё...
Может какой нибудь форум подскажете где задать вопросы по YAD
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 10 Ноябрь 2016, 16:41:09
Ну так разберите мой скрипт. Там есть ЛКМ. Убить - командой в сокет или pkill
https://plus.google.com/u/0/+VictorAnanjevsky
http://murga-linux.com/puppy/viewtopic.php?t=97458
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 17 Ноябрь 2016, 10:24:23
Автор ответил нужно добавить команду "kill $YAD_PID "
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 17 Ноябрь 2016, 10:28:14
Куда добавить? Где устанавливается эта переменная?
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: ribolovp от 22 Ноябрь 2016, 21:36:26
добавить нужно kill $YAD_PID

но лучше это дело оформить функцией и дергать уже ее, т.к. gedit надо запускать в фоне.

#! /bin/bash

function run_gedit {
    gedit &
    sleep 0.5
    kill -USR1 $YAD_PID
}
export -f run_gedit

yad --notification --command='bash -c run_gedit'

Это ответ автора ↑

себе сделал без вызова функции:
yad --notification  --text="test" --command='bash -c "gedit & kill $YAD_PID"'
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 23 Ноябрь 2016, 10:17:49
yad --notification  --text="test" --command='bash -c "gedit & kill $YAD_PID"'
Так работает. Значит это встроенная переменная. Это упрощает написание кода
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: dummy от 16 Апрель 2017, 09:41:09
При обработке фотографий появилась нужда в диалоге для редактирования их очередности. Вот очень хотелось бы передвигать их наглядным образом мышкой (drag-n-drop) в текстовом списке или, например, в списке иконок. Есть варианты такое сделать самому?
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 16 Апрель 2017, 09:56:13
Я такого не делал. Больше на форуме писателей на yad не просматривается. В итоге - лучше спросить у автора yad или на мурге и продублировать ответ сюда
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 28 Август 2017, 09:52:28
версия 0.39 для х32 с патчем ОК-Cancel
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 29 Август 2017, 11:21:05
версия 0.39 для х32 с патчем ОК-Cancel
Не нашел на фтп
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 29 Август 2017, 14:03:49
Она здесь в шапке темы
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 08 Сентябрь 2017, 09:36:58
bt-obex выдает проценты в одной строке, не могу выловить их чтобы передать yad --progress, grep не отлавливает, чем еще можно?
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: sfs от 08 Сентябрь 2017, 10:24:53
awk ;sed
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 08 Сентябрь 2017, 10:32:40
думается мне что дело сложнее. генерируется добавляющаяся строка вида:
transfer:111.mp3 Progress:     0%^H^H^H^H  0%^H^H^H^H  1%^H^H^H^H 1%^H^H^H^H  2%^H^H^H^H  2%^H^H^H^H

т.е. ^H спецсимволы (08H) вставляются, и строка постоянно добавляется видимо, а возможно даже что посимвольно добавляется т.е. каждую секунду по одному ^H а потом 1%
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: drill от 09 Сентябрь 2017, 03:22:44
Pro, а если так?
... | tr '\b' '\n' | sed '/%/!d' | ...
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 09 Сентябрь 2017, 16:45:25
Проверю в понедельник
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 15 Сентябрь 2017, 07:28:54
Pro, а если так?
... | tr '\b' '\n' | sed '/%/!d' | ...
первая часть отрабатывает tr '\b' '\n' выводятся числа с процентами в терминал построчно, НО дальше конвейер почему-то не работает О_О. даже если просто сделать:
 ... | tr '\b' '\n' > /err.log
то лог пустой! куда деваются цифры непонятно.
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: drill от 15 Сентябрь 2017, 07:52:01
Может быть, выдача едет не в stdout, а в stderr. Попробуй там, где заканчивается команда (где первое троеточие) добавить

2>&1
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 15 Сентябрь 2017, 09:23:02
Может быть, выдача едет не в stdout, а в stderr. Попробуй там, где заканчивается команда (где первое троеточие) добавить

2>&1
пробовал. не то.
Я подозреваю что tr не отдает данные в пайп пока не будет получен конец строки из предыдущего пайпа. Но на экран то он строки выводит, хотя если делаю перенаправление, то строк не видно на экране и в файл они тоже не летят. Мистика.
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 15 Сентябрь 2017, 10:27:41
ПОБЕДИЛ!
... | stdbuf -o0 tr -s '\b' '\n' | stdbuf -o0 tr -d [:blank:] | yad --progress
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: drill от 15 Сентябрь 2017, 10:42:10
Про stdbuf я что-то не слышал :) Но вообще поздравляю.

Пока в голову пришёл такой вариант. Предварительно задать

IFS=$'\b'

Весь фильтр заменить одной командой

grep '%'

По окончании сбросить IFS

unset IFS
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 15 Сентябрь 2017, 12:24:51
Grep не срабатывает, он со строками же работает.
Меня больше волнует не просочатся ли цифры из названия файла, не успел проверить, в понедельник только.

tr -d бы такой чтобы только проценты пропускал  или может что-то типа "обрезать все от начала строки до знака %"
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: drill от 15 Сентябрь 2017, 14:03:02
С процентами проблем быть не должно. Если мне не изменяет память (а писал я такой прогресс бар давно, года 3-4 назад), то Yad сам игнорирует всё лишнее.

Ага, вот из мана: https://www.freebsd.org/cgi/man.cgi?query=yad&sektion=1&manpath=freebsd-release-ports

When  the  --progress  option is   used, yad reads   lines of progress data from stdin.  When the lines begin with #   the text after # is  displayed    in  the   progress  bar label. Numeric values treats like   a persents for
       progress   bar.
Название: Re: yad - построитель GUI для шелл-скриптов
Отправлено: Pro от 15 Сентябрь 2017, 14:21:27
Вот именно что цифры он и отлавливает и будет ситуация когда в названии песни или каталога цифры 4, 7 и т.п. То шкала прогресса у yad станет сначала на эти 4, потом вернётся обратно на 1 процент.

 Я типа того попробовал задав цикл for со счетчиком и подав цифры на yad.