2012-01-31 10 views

risposta

4

a livello di protocollo, vedere la proprietà _NET_WM_STATE con il messaggio del client di accompagnamento e il flag di stato a schermo intero. questo è specificato nelle specifiche EWMH. per i punti bonus potresti voler implementare manualmente a schermo intero se il WM non riporta il supporto per il suggerimento ufficiale, EWMH specifica un modo per verificare cosa è supportato. Si consiglia inoltre di afferrare il puntatore del mouse e/o la tastiera se non si desidera che le persone si lascino accidentalmente a schermo intero.

o, per evitare l'apprendimento di gunge X di basso livello, basta usare SDL o GTK o Qt o qualcosa e tutti dovrebbero avere una semplice chiamata di metodo per attivare a schermo intero.

8

Ecco un'implementazione di what Havoc P suggested, per salvare la prossima persona lo sforzo:

void fullscreen(Display* dpy, Window win) { 
    Atom atoms[2] = { XInternAtom(dpy, "_NET_WM_STATE_FULLSCREEN", False), None }; 
    XChangeProperty(
     dpy, 
     win, 
     XInternAtom(dpy, "_NET_WM_STATE", False), 
     XA_ATOM, 32, PropModeReplace, atoms, 1 
); 
} 
+0

Si prega di spiegare il motivo per cui questo lavoro invece di dare la risposta – ArtB

+0

Um, gcc si lamenta quando uso questo frammento di codice. Secondo la manpage 'XChangeProperty', il secondo penultimo argomento della funzione summenzionata non dovrebbe essere una stringa, non una matrice di atomi? – fouric

+0

'XChangeProperty' forse prende in modo errato' char unsigned dati ', ma in realtà è pensato per essere un puntatore a una matrice di atomi come nello snippet sopra. Qual è il reclamo di gcc? Se stai cercando di compilarlo come codice C++, devi usare un cast esplicito come '(unsigned char *) atoms'. –