xdotool
expõe a localização do ponteiro ( xdotool getmouselocation
) e Versões recentes (desde 2.20110530.1) indicam qual janela está nesse local também . Nenhuma das versões xwininfo
, wmctrl
ou anterior de xdotool
parece ter uma maneira de corresponder a uma janela por uma posição de tela visível.
A chamada da biblioteca X subjacente é XQueryPointer
(correspondente a um QueryPointer
message). Aqui está um script wrapper Python simples em torno desta chamada (usando ctypes
). Verificação de erros amplamente omitida. Supõe que você esteja usando a tela 0 (se você não sabia que as exibições poderiam ter mais de uma tela, ignore isso).
#! /usr/bin/env python
import sys
from ctypes import *
Xlib = CDLL("libX11.so.6")
display = Xlib.XOpenDisplay(None)
if display == 0: sys.exit(2)
w = Xlib.XRootWindow(display, c_int(0))
(root_id, child_id) = (c_uint32(), c_uint32())
(root_x, root_y, win_x, win_y) = (c_int(), c_int(), c_int(), c_int())
mask = c_uint()
ret = Xlib.XQueryPointer(display, c_uint32(w), byref(root_id), byref(child_id),
byref(root_x), byref(root_y),
byref(win_x), byref(win_y), byref(mask))
if ret == 0: sys.exit(1)
print child_id.value
Exemplo de uso:
xwininfo -tree -id $(XQueryPointer)