1
# Copyright (C) 2010-2011 Canonical Ltd
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
# GNU General Public License for more details.
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
"""Import pywo library and define additional extensions"""
20
from time import sleep
22
def window_from_pid(pid, command = None):
23
""" Return the first XID matching a PID
25
:param pid: Process ID
26
:param command: Command used to launch the application. Used as fallback
27
to find the window using WM_COMMAND
31
# Lets try 5 secs before aborting
33
for w in WM.windows():
35
wm_pid = w.get_property('_NET_WM_PID')
36
if wm_pid and wm_pid.value[0] == pid:
39
# BadWindow: <class 'Xlib.error.BadWindow'>: code = 3
40
except xlib.error.BadWindow:
43
# Failed with PID try with command
45
for w in WM.windows():
47
wm_cmd = w.get_property('WM_COMMAND')
48
if wm_cmd and command in wm_cmd.value:
51
# BadWindow: <class 'Xlib.error.BadWindow'>: code = 3
52
except xlib.error.BadWindow: