如何使用python-xlib在所有工作区中搜索窗口?

3
我会创建一个Python脚本,用于搜索具有特定标题的窗口并将其置顶。我已经找到了如何在当前工作区中实现此目标的方法:http://ubuntuforums.org/showthread.php?t=1254376,但我想在所有工作区中实现它。请问我该怎么做?
2个回答

1

虽然这是一个旧问题,但我面临了同样的问题。 答案是,要获取所有工作区中窗口的列表,您不应该测试窗口是否可见(删除“attrs.map_state == X.IsViewable”部分)。

display = Display()
root = display.screen().root
winid_list = root.get_full_property(self.NET_CLIENT_LIST_ATOM,
                                            X.AnyPropertyType).value
for winid in winid_list:
    win = self.display.create_resource_object('window', winid)
    transient_for = win.get_wm_transient_for()
    wmname = win.get_wm_name()
    if transient_for == None:
        if wmname != None and name in wmname:
            break

0
代码在查询树中搜索窗口并获取窗口对象,稍后可以使用该对象查询所需的属性:
disp = Display() 
root = disp.screen().root    
children = root.query_tree().children    
for win in children:
    try:
        WinName = getProp(disp,win,'NAME') # or win.get_wm_name()
        PIDs = getProp(disp,win,'PID')
        WinPID = newPIDs[0]

        if WinName and WinName == DESIRED_NAME:
            print("found the window with pid: {} winName: {}  winId: {}".format(pid, newWinName,win.id))
            # Code to bringToTop
        print

    except Xlib.error.BadWindow:
        print("BadWindow error")


def getProp(disp,win, prop):
    p = win.get_full_property(disp.intern_atom('_NET_WM_' + prop), 0)
    return [None] if (p is None) else p.value

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接