C -Linux XCB dockapp软件用于StaloneTray



我正在尝试开发一个小型XCB软件,该软件将在托盘应用程序(例如stalonetray(中进行。

到目前为止,我设法使用本教程显示了一个简单的窗口,但是我坚持不懈地试图将窗口放入托盘中。

我只是通过玩xcb_change_property或通过在软件中添加EWMH支持来使它工作。

使用Xlib我可能会以类似的方式使用XWMHINT:

wm_hints.initial_state = WithdrawnState;
wm_hints.icon_window = wm_hints.window_group = dockapp;
wm_hints.flags = StateHint | IconWindowHint;
XSetWMHints(display, dockapp, &wm_hints);

但我只是找不到XCB

的出路

由于代码太长而无法粘贴,因此我将链接转发到我的git帐户:

链接到来源

如果有人有线索?预先感谢

我得到了它,

为了将窗口注册到系统托盘中,需要向托盘发送消息。我最终得到了以下代码:

 xcb_client_message_event_t tray_request;
 tray_request.response_type = XCB_CLIENT_MESSAGE;
 tray_request.format = 32;
 tray_request.sequence = 0;
 tray_request.window = selection_owner->owner;  // tray window id
 tray_request.type = atom_list[5];  // TODO : change hardcode
 tray_request.data.data32[0] = XCB_CURRENT_TIME;
 tray_request.data.data32[1] = SYSTEM_TRAY_REQUEST_DOCK;
 tray_request.data.data32[2] = w;  // window id to be docked 
 xcb_send_event(c, 0, selection_owner->owner, XCB_EVENT_MASK_NO_EVENT, (const char *)&tray_request);

为了检索托盘的窗口ID,还有更多的代码。我建议您在下面查看我的代码,以查看它的混合方式。

欢呼

最新更新