2012-01-28 7 views
5

Mi piacerebbe fare quanto segue: Creare uno schermo intero, sempre in cima alla finestra pygtk con un widget webkit che mostra qualche html, ma con una scatola è completamente trasparente, in modo che le finestre sottostanti siano visibili. (Questo sembra possibile: Is it possible to render web content over a clear background using WebKit?)finestra pygtk con box che ignora tutti gli eventi X (mouse) (li passa attraverso)

Quello che mi piacerebbe è (a volte) passare tutti gli eventi del mouse che si verificano nella finestra trasparente fino alle finestre sotto la finestra dell'applicazione, in modo che possa interagire con loro normalmente . Quindi non solo visivamente trasparente, ma anche trasparente per gli eventi del mouse.

In teoria, suppongo di poter catturare tutti gli eventi a cui sono interessato con un pygtk Eventbox, trovare la finestra direttamente sotto la mia con wnck e passare questo evento a esso con python-xlib.

Questo non sembra esattamente la soluzione più elegante; C'è un modo migliore?

risposta

5

Inoltrare gli eventi non funzionerà bene come hai indovinato; crea molte condizioni di gara, e alcune app ignoreranno le cose da XSendEvent in ogni caso.

Quello che puoi fare è impostare la maschera di forma di input. Vedere http://www.x.org/releases/current/doc/xextproto/shape.html e quindi guardare XFixesSetWindowShapeRegion() in /usr/include/X11/extensions/Xfixes.h che consente di specificare un tipo di forma (qui si desidera ShapeInput).

Qualcosa di simile:

XRectangle rect; 
XserverRegion region = XFixesCreateRegion(display, &rect, 1); 
XFixesSetWindowShapeRegion(display, window, ShapeInput, 0, 0, region); 
XFixesDestroyRegion(display, region); 

La possibilità di impostare ShapeInput è "solo" 5-6 anni, quindi se avete a cuore le vecchie versioni veramente schifose di X11, si potrebbe essere hosed.

+0

Ah, grazie Havoc! – Rumex

+0

Inoltre, dopo aver cercato i termini corretti, mi sono imbattuto in qualcosa di simile: http://stackoverflow.com/questions/4326534/x11-xlib-create-glasspane-window – Rumex

Problemi correlati