有谁知道一个库,最好是 ruby 或 python 的,可以让你访问打开的应用程序列表并让你操作它们?我真正想要做的就是改变它们的几何形状并最小化或关闭它们。我一直在摆弄 ruby-gnome2,但除了你自己进程的窗口之外,没有找到任何可以操作窗口的东西。
我正在使用 10.10。
答案1
最简单的方法是使用控制端。 你可以阅读man wmctrl
看看如何使用它。
sudo apt-get install wmctrl
您基本上可以将命令行绑定到“Window”类并向其添加在后台使用 wmctrl 命令的方法。
class Window
@@windows = []
def self.windows
@@windows
end
def self.get_windows
@@windows.clear
`wmctrl -l`.split("\n").map do |str|
@@windows << self.class.new(str.split(' ')*)
end
end
def initialize window_id, desktop_id, client_machine, window_title
#set up object here
end
#add other methods here
end
这应该是一个很好的起点。它没有经过测试,但你应该能够从这里开始解决问题。你现在可以添加实例方法,例如change_geometry
,可以利用该-r <WIN> -e <MVARG>
选项。
也许当您完成了您需要做的事情后,您可以将其作为 ruby 库分发并为 Debian/Ubuntu 打包。
答案2
您可以使用扩展窗口管理器提示spec 告诉 WM 更改某些窗口。这是 wmctrl 使用的技巧。
通常您需要使用 XLib 来使用 EWMH,但对于 python 来说,有这个不错的项目:派蒂尔。这是一个用于平铺窗口的 Python 程序。它不仅是一个很好的例子,还将最重要的功能包装到一个类中。只需下载源代码并查看 Probe.py,它就可以完成您要求的大部分操作。
此示例最大化所有窗口:
import Probe
prob=Probe.Probe()
winlist=prob.get_window_list()
for win in winlist:
prob.window_maximize(win)
答案3
嘿,看看 wmctrl。它不是一个实际的库,而是一个命令行脚本,允许通过命令行开关进行窗口操作。您当然可以通过系统调用它。
sudo apt-get install wmctrl
我在许多 shell 脚本中使用它,有时在 perl 脚本中使用 system()
韋斯