Estoy un poco confundido con algunos conceptos de gtk y gnome. Estoy tratando de obtener una lista de ventanas no minimizadas en mi escritorio gnome2, pero después de leer la documentación de pygtk e inspeccionar los resultados, no puedo entender los resultados.¿Cómo obtengo una lista de todas las ventanas en mi escritorio gnome2 usando pygtk?
Ninguno de los dos fragmentos a continuación parece funcionar.
Primero probé este ..
>>> gtk.gdk.window_get_toplevels()
[<gtk.gdk.Window object at 0xb74339b4 (GdkWindow at 0x8a4c170)>]
>>> gtk.gdk.window_get_toplevels()[0].get_children()
[]
entonces este
>>> d = gtk.gdk.DisplayManager()
>>> d.get_default_display().get_screen(0).get_root_window().get_children()
[<gtk.gdk.Window object at 0x89dcc84 (GdkWindow at 0x8a4c170)>, <gtk.gdk.Window object at 0x89dccac (GdkWindow at 0x8a4c0c0)>]
Como se ve en la salida de la consola, la segunda opción devuelve dos ventanas. Pero no he podido descifrar cuáles son. Ninguno de ellos tiene hijos y siempre obtengo esas dos ventanas independientemente de cuántas ventanas tengo en mi escritorio.
¿Alguien podría explicar la jerarquía de objetos del típico entorno de escritorio basado en gtk? No puedo entender por qué el código anterior no funciona.
Por favor absténgase de publicar soluciones alternativas que utilicen wnck, xlib, qt, etc. Me interesa más saber qué estoy haciendo mal que obtener consejos, como consultar otras bibliotecas.
No me refiero a ser grosero, pero no creo que su respuesta sea satisfactoria. Al final de su respuesta, desaprobó su analogía inicial de banana-cd-reader. Soy consciente de las diferencias entre una ventana de gtk y dtk.gdk, si lees mi pregunta cuidadosamente, notarás que eso fue un poco fuera de tema ... aunque mencioné que estaba confundido, así que supongo que reclamar mea-culpa – Pico
Supongo que el resultado final es, ¿por qué no 'gtk.gdk.window_get_toplevels()' da como resultado el resultado que describió? En cuanto a ordenar las ventanas, tenía la impresión de que tienen atributos para ese único propósito. – Pico
Ok, creo que interpreté tu pregunta para decir por qué no pudiste obtener las _ventanas_ infantiles de las ventanas. No sé por qué la llamada GDK no está haciendo lo que quieres. ¿Quizás deberías mirar el código fuente de libwnck para ver cómo funciona allí? – ptomato