Обновление содержимого окна zenity - PullRequest
1 голос
/ 09 мая 2011

Я пытаюсь создать небольшой монитор для программы под названием showbf, которая печатает само обновление каждые определенное время.

Моя лучшая попытка следующая:

ssh user@server.foo "exit" 
if [ $? -ne 0 ]
then 
    ssh-add < /dev/null
fi

while true
do
resources=$(ssh user@server.foo "showbf")
if (echo "$resources" | grep -q "[0-9] procs") 
then
    echo $(echo "$resources" | awk '/[0-9] procs/ {print $1,"for",$5}')
else 
    echo "No procs available."
fi

if [[ $? == 0 ]] || [[ $? == 1 ]]
then
    exit 0
fi
sleep 1
done | zenity --text-info --height=200 --width=300 \
    --title "Resources available for immediate use (showbf)" 

Мне действительно не нравится это, потому что это добавляет результаты в предварительный просмотрЭто становится действительно грязным.Я хотел бы использовать что-то вроде zenity --list (результат - 2 столбца, число доступных процедур и время ожидания).Но как только zenity читает данные, они не обновляют их содержимое.Есть идеи??

Использование циклов while для воссоздания окон - это не то, что мне нужно, потому что новые окна заменяются в центре экрана.

Большое спасибо Сальваторе

Ответы [ 3 ]

1 голос
/ 02 декабря 2011

Если вы еще не разобрались с этим, вы действительно должны проверить yad , форк zenity, который активно улучшается.Я только что установил его сегодня вечером (после того, как ударил себя по голове, пытаясь обойти ошибку в zenity), но я не удивлюсь, если она сможет делать то, что вы хотите.Я заметил, что у него есть опция --tail, например.Он находится в репозиториях Fedora, и на этой странице есть ссылки на пакеты deb.

0 голосов
/ 17 августа 2018

Семь лет спустя, но лучше, чем никогда. Этот yad форум поддержки решает проблему для некоторых людей:

Re: [yad] Re: Может ли само окно обновляться? Именно то, что сказал Джо но вы должны использовать:

Child(yad -tail --> *.log --> Yad Parent(yad --text-info )

отображается и автоматическая прокрутка. Это невозможно с zenity. Увидеть мое видео ниже:

https://www.youtube.com/watch?v=stPAWGXQyLY

0 голосов
/ 20 мая 2011

Вместо использования zenity, почему бы не вызвать xterm с помощью команды «watch», в которой он получает необходимую информацию. Что-то вроде:

xterm -g 80x40+100+100 -e "watch ssh user@server.foo showbf"
...