我在使用Solaris / CDE的系统上工作,并且必须每天手动操作许多窗口的位置数百次。我想通过shell或perl脚本自动执行此过程。
到目前为止我做了很多研究,发现大多数人都可以使用wmctrl或xdotool来解决这个问题。我没有管理员权限来安装这些软件包。我也缺少一个java / c编译器。但是我可以访问perl(我非常流利)或者可以编写命令行脚本。
我不需要像wmctrl或xdotool那样功能齐全的东西,我只需要移动窗口。我已经能够通过xprop获取我的GUI的详细信息但不确定从哪里开始。谢谢!
答案 0 :(得分:0)
xprop
的手册页表示它能够设置属性值:
-set property-name value
指定要在指定窗口上设置的属性的名称和属性值。
没有给出示例脚本来显示OP使用xprop
检索值的方式,但xprop
的输出很容易被解析。这是一个例子:
WM_STATE(WM_STATE):
window state: Normal
icon window: 0x0
_NET_WM_STATE(ATOM) =
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_CLOSE
WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW
_NET_WM_PID(CARDINAL) = 1942
WM_CLIENT_LEADER(WINDOW): window id # 0x600023
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLASS(STRING) = "xterm-319", "UXTerm"
WM_HINTS(WM_HINTS):
Client accepts input or input focus: True
Initial state is Normal State.
bitmap id # to use for icon: 0x600030
bitmap id # of mask for icon: 0x600032
WM_NORMAL_HINTS(WM_SIZE_HINTS):
program specified size: 804 by 804
program specified minimum size: 16 by 51
program specified resize increment: 10 by 20
program specified base size: 6 by 31
window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "michener.jexium-island.net"
WM_COMMAND(STRING) = { "xterm-319", "-class", "UXTerm", "-title", "uxterm", "-u8" }
WM_ICON_NAME(STRING) = "[unnamed] - vile"
WM_NAME(STRING) = "[unnamed] - vile"
至于如何继续:如果我正在开发这样的脚本,我将有一个函数将该输出解析为名称/值对,并有一个选项来更新其中一个窗口属性 - 引用源代码wmctrl
和xprop
的内容,以了解属性应如何格式化。需要WM_SIZE_HINTS
的文档才能理解 。