Как передать вывод команды терминала в текст диалога прогресса Zenity? - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть простое приложение с некоторой командой bash, например, apt update, и я хочу передать его вывод в параметр --text в диалоге прогресса zenity, я попробовал некоторые параметры после поиска в Google, например:

gksudo apt update | xargs -L1 -I % zenity --progress --text=% --percentage=0 --auto-close --auto-kill 

но все, что я получил, это мигающее окно!

Итак, как я могу сделать вывод, отображаемый в окне zenity, с процентом прогресса?

1 Ответ

0 голосов
/ 21 февраля 2019

Вы не можете заставить вывод появляться в окне zenity с процентом прогресса , потому что для вычисления процента необходима информация, которая составляет 100%, а здесь заранее неизвестно, сколько вывести apt update команда сгенерирует.

Что вы можете сделать, это иметь анимированный индикатор выполнения, пока apt update что-то выводит.Поскольку стандартный вывод на канал обычно полностью буферизирован, буферизацию необходимо изменить с помощью stdbuf:

gksudo stdbuf -oL apt update | zenity --progress --pulsate --auto-close --auto-kill
...