2012-11-09 10 views
5

Sto provando a scrivere un'applicazione a schermo intero con xcb per la mia edificazione e sto avendo problemi con quanto sopra. Ho trovato un paio di parti di codice che usano Xlib, ma nessuna con xcb. Ho trovato la struttura xcb_ewmh_connection_t e sto usando provvisoriamente in questo modo:Come posso fornire l'hint _NET_WM_STATE_FULLSCREEN con xcb?

xcb_connection_t *Connection = xcb_connect(NULL, NULL); 
xcb_ewmh_connection_t EWMH; 
xcb_intern_atom_cookie_t *EWMHCookie = xcb_ewmh_init_atoms(Connection, &EWMH); 

e quindi utilizzando gli atomi all'interno della struttura con EWMH._NET_WM_STATE, ecc

Dato questo po 'di storia, come posso andare a proposito di suggerire al gestore di finestre che la finestra dovrebbe essere a schermo intero?

risposta

3

Esaminando xcb_ewmh.h, sembra a me come è anche necessario chiamare

if(!xcb_ewmh_init_atoms_replies(&EWMH, EWMHCookie, NULL)) 
    /* handle errors */; 

Una volta fatto questo, la documentazione _NET_WM_STATE dovrebbe aiutare per come usare questo particolare proprietà.

Vedere la sezione ICCCM su Client Properties per lo sfondo su questa tecnica di utilizzo delle proprietà per comunicare con il gestore di finestre.

Vedere la richiesta ChangeProperty per come impostare le proprietà in generale. Si associa alla funzione xcb_change_property tramite il solito protocol stub rules.

Spero che ci siano abbastanza riferimenti per iniziare!

+1

Ah, grazie! Sono sicuro che ottenere gli atomi dopo averli richiesti aiuterà. : P Mi spiace di essere un noob xcb, ma ho un po 'di problemi a cambiare la proprietà stessa. Sto usando questa funzione in modo errato? 'xcb_change_property (Connessione, XCB_PROP_MODE_REPLACE, WindowID, EWMH._NET_WM_STATE, XCB_ATOM, 32, 1, & (EWMH._NET_WM_STATE_FULLSCREEN))' – cdbfoster

+3

L'ho capito! Mi dispiace per quello Utilizzando XCB_ATOM_ATOM per il tipo anziché XCB_ATOM, funziona come previsto. – cdbfoster

+0

Grazie per i tuoi commenti @cdbfoster Avevo lo stesso problema! – Noitidart

Problemi correlati