2012-11-09 14 views
5

Próbuję napisać pełnoekranową aplikację z xcb dla własnego budowania i mam problemy z powyższym. Znalazłem kilka kawałków kodu, które robią to za pomocą Xlib, ale żadne z xcb. Znalazłem strukturę xcb_ewmh_connection_t a ja nieśmiało używając go tak:Jak podać wskazówkę _NET_WM_STATE_FULLSCREEN za pomocą 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); 

a następnie przy użyciu węgla wewnątrz struktury z EWMH._NET_WM_STATE itp

Biorąc pod uwagę to trochę tła, jak mogę iść o zasygnalizowaniu menedżerowi okien, że okno powinno być w trybie pełnoekranowym?

Odpowiedz

3

Badanie xcb_ewmh.h, wygląda mi na to, że również trzeba zadzwonić

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

Gdy już to zrobisz, dokumentacja _NET_WM_STATE powinno pomóc w jaki sposób korzystać z tej szczególnej właściwości.

Zobacz w sekcji ICCCM na Client Properties dla tła na temat tej techniki korzystania z właściwości do komunikowania się z menedżerem okien.

Zobacz, jak ustawić ogólne właściwości, zobacz żądanie o numerze ChangeProperty. To odwzorowuje funkcję xcb_change_property według zwykłego protocol stub rules.

Mam nadzieję, że to wystarczająca ilość odniesień, abyście mogli zacząć!

+1

Ah, dziękuję! Jestem pewien, że otrzymanie atomów po ich poproszenie o pomoc będzie pomocne. : P Przykro mi, że jestem Xcb Noob, ale mam problem z samymi zmianami. Czy używam tej funkcji nieprawidłowo? 'xcb_change_property (połączenie, XCB_PROP_MODE_REPLACE, WindowID, EWMH._NET_WM_STATE, XCB_ATOM, 32, 1, i (EWMH._NET_WM_STATE_FULLSCREEN));' – cdbfoster

+3

Rozgryzłem to! Przepraszam za to. Użycie XCB_ATOM_ATOM dla typu zamiast XCB_ATOM działa zgodnie z oczekiwaniami. – cdbfoster

+0

Dzięki za komentarze @cdbfoster miałem ten sam problem! – Noitidart