当我的垃圾邮件过滤器守护程序过滤一组邮件时,我正在使用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/