#!/usr/bin/env python
# Prints list of windows in the current workspace.

import sys
if sys.platform == "darwin":
    from AppKit import NSWorkspace
    from Quartz import (
        CGWindowListCopyWindowInfo,
        kCGWindowListOptionOnScreenOnly,
        kCGNullWindowID
    )

if sys.platform == "darwin":
    get_this = sys.argv[1]
    curr_app = NSWorkspace.sharedWorkspace().frontmostApplication()
    curr_pid = NSWorkspace.sharedWorkspace().activeApplication()['NSApplicationProcessIdentifier']
    curr_app_name = curr_app.localizedName()
    options = kCGWindowListOptionOnScreenOnly
    windowList = CGWindowListCopyWindowInfo(options, kCGNullWindowID)
    for window in windowList:
        pid = window['kCGWindowOwnerPID']
        windowNumber = window['kCGWindowNumber']
        ownerName = window['kCGWindowOwnerName']
        geometry = window['kCGWindowBounds']
        windowTitle = window.get('kCGWindowName', u'Unknown')
        if curr_pid == pid:
            if get_this == "all":
                print("%s - %s (PID: %d, WID: %d): %s" % (
                ownerName, windowTitle.encode('ascii', 'ignore'), pid, windowNumber, geometry))
            elif get_this == "pid":
                print(pid)
            elif get_this == "title":
                print(ownerName)
elif sys.platform == "win32":
    (active_app_name, windowTitle) = _getActiveInfo_Win32()