当我的垃圾邮件过滤器守护程序过滤一组邮件时,我正在使用zenity发布一个简单的通知。当前,此消息被发布到屏幕中间,这太麻烦了。我想将其发布到左上角。但是,zenity不支持-geometry选项,该选项应该是所有X应用程序的标准选项,并且它的文档提供了控制窗口高度和宽度的选项,但没有控制位置的选项。

有没有一种方法可以控制发布zenity窗口的(x,y)坐标?

如果不是,是否有办法通过修补X资源或窗口管理器(我正在使用fvwm)来解决此问题?

编辑:以下内容不适用于~/.fvwm2rc(fvwm版本2.5.26):

Style "Information" PositionPlacement -0 -0
Style "Zenity" PositionPlacement -0 -0

如手册页中所建议,它们也不能与-0 -0一起删除。
(zenity --info的窗口标题是“信息”。)

有趣的是,zenity忽略了我先前的window-manager指令,即默认情况下应手动放置窗口。

编辑:

在许多其他有趣的信息中,xprop(1)报告有关zenity窗口的信息:
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DIALOG
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                program specified location: 0, 0
                program specified minimum size: 307 by 128
                program specified maximum size: 307 by 128
                window gravity: NorthWest
WM_CLASS(STRING) = "zenity", "Zenity"
WM_ICON_NAME(STRING) = "Information"
WM_NAME(STRING) = "Information"

尽管这份报告显然令人鼓舞,但实际上该窗口并未张贴在0,0位置:-(

我知道Style命令正在生效,因为我添加了!Borders选项,并且确定zenity窗口张贴的内容没有边界...但是仍然在该死的屏幕中间!

最佳答案

我通过在子 shell 中使用wmctrl来做到这一点。例子:

((sleep .4;wmctrl -r TeaTimer -R TeaTimer -e 0,50,20,-1,-1)
for ((a=$LIMIT; a > 0; a--)); do
# for loop generates text, not shown
done
wmctrl -R TeaTimer
) | zenity --progress --title="TeaTimer" --percentage=0

第一个wmctrl将zenity移动到左上方,第二个将zenity移动到
当前工作空间。看到一个full example

关于shell - 我的Shell脚本如何控制Zenity窗口的位置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1718154/

10-16 13:51