在Linux上检索和设置窗口信息(通过扩展窗口管理器提示)

ruamel.ewmh的Python项目详细描述


中国==== EWMH公司 ===

ewmh(扩展窗口管理器提示)可用于检索和设置 有关Linux系统上Windows的信息。是通过打电话和 正在分析wmctrl等程序的输出。

示例

from subprocess import Popen
from ruamel.ewmh import ExtendedWindowManagerHints as EWMH
Popen(['xclock', '-name', 'test_xclock'])
# there can be more than one window matching the title
# therfore .by_title() returns a list
clk = EWMH().by_title('test_xclock')[0]
clk.resize_and_move(200, 200, 300, 600)

为什么不使用wmctrl包?

在编写这个库之前,我尝试了antonio cuni的wmctrl包。那个 图书馆似乎被废弃(至少从2013年4月到2014年10月)。

我开始ewmh是因为遇到性能问题和不规则 最初我无法修复的异常。当我发现这些问题 是设计决定的结果,与我没有 需要(例如检索wm_类),而且因为我需要一些更简单的东西, 但是工作,我从零开始。

  • wmctrl未缓存输出信息并获取 信息一开始就太慢了。如果你的机器有 窗口打开,您希望其中n个窗口的状态,这导致 通过 commands.getoutput。在我的系统上有200多个打开的窗口, 对于我感兴趣的每个窗口,信息花费了几秒钟。 在。
  • commands.getoutput()已被使用,但已被deprecated since 2008使用 subprocess.checkout_output()取而代之。
  • 未检查getoutput()的输出是否有错误。
  • os.system()的使用导致不必要的shell调用。
  • 对于系统上打开的每个窗口,xprop程序都称为, 尽管,通常,这些信息都不被使用。
  • 若要激活Windows,包将使用wmctrl -id-a <ID>调用wmctrl, 我不知道如果没有这个命令 具有相同的效果/输出。

在尝试修补这些问题并进行测试之后,会出现一些异常,迫使我放弃它,因为从头开始要花费更少的时间。通过编写emwh获得的知识,我发现wmctrl包目前至少不能处理包含空格的窗口类,当桌面上有一个没有标题的窗口时,程序也不能继续调用库。

wmctrl库中包含的大多数原始测试仅适用于 小调整(这似乎与我的窗口菜单顶部有关) 以及emwh中的包装类。从wmctrl移动到ewmh应该 所以要轻松。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java获取JEditorPane中字符的绝对位置   java Datetime:将时间段拆分为天、小时和分钟   java是使此HashMap更高效的一种方法   java项目reactor:collectList()之后的block()对Flux不起作用。创建()   java在Mac OSX上安装OpenCV   java递归地确定一组数字是否包含两个总和相等的子集   Quad2D曲线上的几何图形Java绘图箭头   java将SSL证书导入Glassfish 4。十、   java Android未找到处理Intent MediaScanner的活动   EclipseJava。安全cert.CertificateParsingException:java。木卫一。IOException:主题密钥,无法创建EC公钥   java我能在O(M log N)时间内完成吗?   java跟踪eclipse中的资源更改也在中。元数据和。项目   java如何完全禁用Android键盘   java返回到上一个活动