feat(tray): 处理 SYSTEM_TRAY_REQUEST_DOCK 实现图标嵌入托盘容器

- 注册 _NET_SYSTEM_TRAY_OPCODE 与 _XEMBED atom
- 在事件分发中拦截托盘 client message
- tray_add_icon 将请求 dock 的窗口 reparent 到 container,
  发送 XEMBED_EMBEDDED_NOTIFY 并 map,维护 icons 数组并
  触发图标变更回调
This commit is contained in:
2026-07-25 03:59:04 +08:00
parent 3c5cfd3ead
commit e39eb245b6
4 changed files with 154 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ extern const tray_api_t tray_api;
typedef struct backend_t backend_t;
/* TODO: 添加窗口背景色 */
void tray_init(
backend_t *backend,
xcb_window_t host_window,
@@ -16,3 +17,8 @@ void tray_init(
int32_t host_height
);
void tray_cleanup(backend_t *backend);
bool tray_handle_client_message(
backend_t *backend,
const xcb_client_message_event_t *ev
);