在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第三方库


热门话题
利用SWAP函数解决互斥的同步Java死锁   主线程退出时程序的java终止?   java Firestore字段空类型用法   java Android在同一页面上滚动到ID   java Eclipse:将源代码文件夹导入其他项目   maven Groovy编译以“java”结尾。StackOverflowerr语言`   java从变量中获取变量列表   java在Eclipse中重命名标识符时输入vs转义   Java:创建一个只包含重复项的数组   java Mule ESB 3.3 Mulecontext注册表pop   bash杀戮屏幕但java进程未结束   java正在创建一个表来存储一行错误编程的迹象?   java如何启动RecentApplicationDialog?   java以确定的增量移动字符串中的字符   使用用户输入搜索多个mysql数据库的JavaJSP算法   java Arraylist到DefaultComboxModel