'Starts a program which opens a window
Spawns a new subprocess for a command that opens a window, given by the
arguments to this method.  Spawns the new process and checks that qtile
maps the new window.'

def _spawn_window(self, *args):

    if (not args):
        raise AssertionError('Trying    to    run    nothing!    (missing    arguments)')
    client = self.c
    start = len(client.windows())
    proc = subprocess.Popen(args, env={'DISPLAY': self.display})
    @retry(ignore_exceptions=(RuntimeError,))
    def success():
        while (proc.poll() is None):
            if (len(client.windows()) > start):
                return True
        return False
    if success():
        self.testwindows.append(proc)
    else:
        proc.terminate()
        proc.wait()
        raise AssertionError('Window    never    appeared...')
    return proc
