2012-11-09 149 views
5

我正試圖用xcb編寫一個全屏應用程序,以供我自己的建構,並且遇到了上述問題。我發現了一些使用Xlib執行此操作的代碼,但沒有一個代碼使用xcb。我已經找到了xcb_ewmh_connection_t結構,我試探性地使用這樣的:如何使用xcb提供_NET_WM_STATE_FULLSCREEN提示?

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); 

,然後使用與EWMH._NET_WM_STATE結構內部的原子等

鑑於這一點背景,我怎麼能去關於窗口管理器提示窗口應該全屏?

回答

3

檢查xcb_ewmh.h,它看起來像你對我還需要調用

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

一旦你做到了這一點,該_NET_WM_STATE文件應該幫助如何使用這個特定屬性。

請參閱ICCCM關於Client Properties的部分,瞭解使用屬性與窗口管理器進行通信的技術背景。

請參閱ChangeProperty關於如何設置屬性的一般要求。它通過通常的protocol stub rules映射到xcb_change_property函數。

我希望這是足夠的參考,讓你去!

+1

啊,謝謝!我確定在得到原子後,事實上他們會得到幫助。 :P對不起,是一個xcb noob,但我有點改變屬性本身的問題。我是否錯誤地使用了這個功能? 'xcb_change_property(Connection,XCB_PROP_MODE_REPLACE,WindowID,EWMH._NET_WM_STATE,XCB_ATOM,32,1,&(EWMH._NET_WM_STATE_FULLSCREEN));' – cdbfoster

+3

我想通了!對於那個很抱歉。通過使用XCB_ATOM_ATOM而不是XCB_ATOM類型,它按預期工作。 – cdbfoster

+0

感謝您的意見@cdbfoster我遇到了同樣的問題! – Noitidart