gpt4 book ai didi

c - 用于 stalonetray 的 Linux XCB dockapp 软件

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:04 25 4
gpt4 key购买 nike

我正在尝试开发一个小型 XCB 软件,该软件可以放入 stalonetray 等托盘应用程序中。

到目前为止,我设法使用 this tutorial 显示了一个简单的窗口,但我一直在尝试将窗口放入托盘中。

我只是不知道如何让它工作,无论是通过使用 xcb_change_property 还是通过向软件添加 EWMH 支持。

如果使用 Xlib,我可能会以类似的方式使用 XWMHints:

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 帐户:

LINK TO THE SOURCES

如果有人有线索?提前致谢

最佳答案

我明白了,

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

 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,需要获取更多代码。我建议你看看我下面的代码,看看它是如何混合的。

干杯

关于c - 用于 stalonetray 的 Linux XCB dockapp 软件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49598221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com