更新zenity窗口的内容

时间:2011-05-09 15:39:49

标签: linux bash shell zenity

我正在尝试为名为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个colums,可用的proc数和walltime)。但是,一旦zenity读取数据,它就不会更新其内容。有任何想法吗??

使用while循环来重新创建窗口不是我想要的,因为新窗口被替换在屏幕的中心。

非常感谢 萨尔瓦多

3 个答案:

答案 0 :(得分:1)

如果你还没有解决这个问题,你真的应该看看yad,这是一个正在积极改进的禅宗。我今晚才刚刚安装它(在试图解决zenity中的一个bug之后猛烈抨击我),但如果它可以做你想做的事我也不会感到惊讶。我注意到它有一个--tail选项,例如。它位于fedora的回购中,该页面包含deb包的链接。

答案 1 :(得分:0)

为什么不用一个带有“watch”命令的xterm来获取必要的信息,而不是使用zenity。类似的东西:

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

答案 2 :(得分:0)

晚了七年,但总比没有好。 yad support forum可以解决某些人的问题:

  

回复:[yad]回复:yad窗口可以自我更新吗?乔说的正是   但是,您必须使用:

function rollOver(srcImg,  subImg) {
  var img = new Image();
  img.src = srcImg;

  var sub = new Image();
  sub.src = subImg;

  return {
     main: img,
     sub:  sub
  };
}
  

显示并自动滚动。 Child(yad -tail --> *.log --> Yad Parent(yad --text-info ) 无法做到这一点。看到   我下面的视频:

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