Теоретически, можно отделить от скрипта GUI, оставив только вызов GtkBuilder, а сам GUI писать на Glade.
Или echo заменить на cat <<< EOF... Но ведь есть готовые биндинги, например, для Python, так разве нет чего-то подобного для шелла?
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
------------- Registered Linux User #557010
Ну а вопрос- на чем/как это можно сделать адекватно?
вам принципиально именно GUI или псевдо GUI сойдёт?
если сойдёт, то whiptail / dialog (они практически идентичны, на глаз лишь небольшие различия во внешнем виде, а под капотом там всё кардинально разное: один на ncurses основан, а другой на newt и slang).
В этих ваших интернетах валяются тонны инструкций (раз, два, возможно и на русском что-то есть).
Зато на выходе получается чистый красивый консольный интерфейс без всяких gtkdialog'ов.
А вообще, не вижу причин не использовать gtkdialog, если грамотно разнести все по разным файлам, можно получать нормально читаемые скрипты. Вот тут кое-что на эту тему есть, думаю, как отправнвя точка сойдет.
P.S. Oops, пока писал сообщение, опередили.
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
------------- Registered Linux User #557010
А вообще, не вижу причин не использовать gtkdialog, если грамотно разнести все по разным файлам, можно получать нормально читаемые скрипты. Вот тут кое-что на эту тему есть, думаю, как отправнвя точка сойдет.
Я уже этот линк указал)) Но там простите для дубов. И с Gtkdialog все-таки слишком много костылей: чтобы использовать локальные переменные непосредственно в UI приходится писать так, как в моем примере. И это только цветочки, что-то более серьезное, чем всплывающая менюшка, будет выглядеть действительно монструозно.
Bizdelnick, не Это Контекстное меню: оно показывает только те пункты, которые имеют отношение к текущему активному окну, т. е. меню собирается динамически.
А zenity ТУПОЕ:
- не умеет распологать окно под курсором,
- не умеет окно без кнопок,
- не понимает события типа потери фокуса,
...
и еще тыщапицот пунктов, лень перечислять - разве гномеры способны создавать адекватное ПО?)))
Просто мне лень разбираться в Вашем нечитаемом скрипте и писать полный аналог.
С zenity никогда и не получится)) Оно создано чтобы каждый тупица за 5 минут мог сляпать окно с двумя кнопками, а мне (чисто по приколу) хотелось сделать что-то похожее на стандартное контекстное меню, которое по правому клику в любом приложении.
Тут бы еще как-то избавится от декораций окон, но этого даже Gtkdialog не умеет.
Чё?
Ладно, поясню, если непонятно: запихиваете нужные пункты в переменную, делаете echo "$VAR" | zenity --list --column=<name>, парсите вывод. Точно так же, как Вы делали, но без XML. Problem?
я уже говорил куда идти таким вот советчикам (zenity)?
Нет, не говорили. И не советую, а то рискуете сами отправиться в баню.
Ответ же мой надлежит расценивать не как совет, а как указание на допущенную Вами ошибку в оценке zenity: реализовать какую-то мудрёную логику оно не мешает, потому что логика реализуется вне его. Но нарисовать имитацию контекстного меню оно действительно не может.