¿Cómo saber qué ventana tiene el foco y cómo cambiarlo?

Me gustaría saber cómo puedo preguntar a X11 qué ventanas tienen el foco. Y si por alguna razón mi propia aplicación (que puede ser visible o no) tiene el enfoque, quiero permitir que las ventanas anteriores vuelvan a enfocarse.

Por ejemplo, mi aplicación se ejecuta con muchas otras (por ejemplo, firefox, gvim, nautilus, ...)

Supongamos que al principio Firefox tiene un enfoque y que el usuario hizo clic en mi aplicación, que ahora tiene el enfoque. Quiero que mi aplicación vuelva a centrarse en Firefox.

¿Alguien sabe como lograr esto? Las recomendaciones de libros serían muy agradables.

Muchas gracias.

Respuestas a la pregunta(4)

Su respuesta a la pregunta