2013-07-22 5 views
7

Questa è più una questione di vocabolario che altro.Linux disegnare sullo schermo indipendentemente da windows manager

Introduzione

sto usando il cloud Biblioteca punto per ottenere i dati Face Tracking. Usando questi dati voglio monitorare dove si trova l'utente sullo schermo. Questo non è un problema.

Problema

per dare all'utente-feedback, vorrei richiamare la stima del viso direzione dell'utente come un cerchio rosso sullo schermo, in fondo come si è visto here (che basta creare una piccola finestra) . Vorrei che questo cerchio fosse in grado di andare ovunque sullo schermo e voglio che fosse sempre visibile. Non voglio che sia coperto da un'altra finestra attiva. Se impedisce l'interazione con la finestra, sto bene con quello.

Il mio problema è che non so da dove cominciare.

Potrei semplicemente controllare il cursore, ma questo è meno ideale, perché mi piacerebbe essere ancora in grado di spostare il cursore mentre sto usando il rilevamento del volto.

Penso di aver bisogno di usare OpenGL, ma tutti gli esempi che ho visto sono stati dentro X windows. Ad esempio, il codice che ho trovato here dopo aver ricevuto un suggerimento here, mi fornisce una bella finestra permanente, ma la finestra cattura ancora tutti i miei clic del mouse. Come disegnare qualcosa su uno schermo con OpenGL che è indipendente dalla finestra X?

Mi avvicino completamente alla direzione sbagliata? Se è così, cosa dovrei googling?

Accetterò qualsiasi risposta che mi dia un punto di partenza.

Piattaforma

Sto usando Ubuntu 12.04 con il desktop Unity.

+0

Questo potrebbe iniziare: http://stackoverflow.com/questions/9363491/how-to-make-transparent-window-on-linux –

+0

L'ho letto e ho eseguito il codice, ma sembra che la finestra essere ancora nascosto se ho attivato un'altra finestra. – Seanny123

+3

Non è necessario _need_ per utilizzare OpenGL, anche se sarebbe una buona idea (per motivi di prestazioni, e forse sarebbe più semplice, per il disegno). Ora, per la domanda vera e propria, ti consiglio di esaminare l'estensione X.org "composita" (http://www.x.org/archive/X11R7.5/doc/compositeproto/compositeproto.txt).Dovresti iniziare da qualche parte =) – MiJyn

risposta

2

Creare una finestra regolare. Di 'alla WM di saltare le formiche per mantenere la finestra sempre in primo piano. Usa XFixesSetWindowShapeRegion() per impostare separatamente un'area di output circolare e un'area di input vuota. È necessario un gestore di finestre di compositing estensioni XFixes affinché funzioni.

È inoltre possibile rendere semitrasparente la finestra (è necessario un gestore di finestre di composizione).

Un moderno toolkit come gtk dovrebbe avere API facili da usare per fare tutto quanto sopra.

Nessun OpenGL è necessario in qualsiasi momento.

+0

Questa finestra catturerebbe ancora clic del mouse eseguiti su di essa? – Seanny123

+0

No, non lo farebbe, la forma di input vuota si occupa di questo. Fondamentalmente non riceverà alcun input del mouse. Non sono sicuro dell'input da tastiera. –

+0

@ n.m .: L'estensione Shape non richiede un WM di composizione per funzionare. La forma è rimasta per sempre, molto prima che il compositing venisse ascoltato. – datenwolf