如何以编程方式操作应用程序窗口?

如何以编程方式操作应用程序窗口?

有谁知道一个库,最好是 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>选项。

你应该熟悉管道IO 概述在执行此操作之前。

也许当您完成了您需要做的事情后,您可以将其作为 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()

韋斯

相关内容