|
|
c609d15d77
|
fix(tray): 修复 tray_init 中初始化状态不完全导致 bar 计算布局时走文本测量的 bug
|
2026-07-28 02:27:46 +08:00 |
|
|
|
d47ca9cf1a
|
feat(tray): 完善 tray_cleanup 释放图标窗口并归还 selection owner
|
2026-07-25 04:07:57 +08:00 |
|
|
|
e39eb245b6
|
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 数组并
触发图标变更回调
|
2026-07-25 03:59:04 +08:00 |
|
|
|
3c5cfd3ead
|
feat(tray): 实现 tray_cleanup 并在 backend_destroy 中调用以释放托盘资源
|
2026-07-25 01:07:49 +08:00 |
|
|
|
e7a0945a93
|
feat(tray): 成为 selection owner 后广播 MANAGER 事件通知托盘客户端
|
2026-07-24 20:59:51 +08:00 |
|
|
|
47bd59b806
|
feat(tray): 实现 tray_init 完成 system tray selection 接管
|
2026-07-24 20:21:48 +08:00 |
|
|
|
9f8681d467
|
feat(backend): backend_create_bar_window 返回 tray 句柄
|
2026-07-18 18:21:25 +08:00 |
|
|
|
d0120566bf
|
feat(tray): 实现 tray_api_t 定义的所有接口
|
2026-07-15 18:49:15 +08:00 |
|
|
|
27aab6f0e9
|
feat(tray): 添加 tray 相关接口并融入现有启动流程
|
2026-06-27 22:52:19 +08:00 |
|
|
|
079f41ce8a
|
refactor: 从 core 中抽出跨模块契约建立 interface/common 模块分层
引入 interface/(零实现声明层)与 common/(共享 ADT 操作层),把跨模块
契约从 core 实现里抽出来,依赖方向回到单向(base ← interface ← common ←
各实现层)。docs/module-layering.org 记录完整方案与判定标准。
interface/(纯类型与多态接口声明,零 .c):
- types.h / event.h / backend.h 从 core 移入
- effect.h 新建(effect_t 从 plan.h 抽出)
common/(多实现层共用的自包含操作,.h + .c):
- event.{h,c}:event_reset / event_cleanup
- listeners.{h,c}:listeners 维护(add / cleanup);notify 留 core
- window.{h,c}:window_list + layer_props/metadata cleanup + window_classify_layer
- workspace.{h,c}:workspace_desc(从 wm_desc.h 拆出,改真实函数)
window 相关整理:
- window_layer_type_t 上浮 interface/types.h(common 的 classify 需要)
- window_classify_layer 移 common/window
- window_info_t 独立成 core/window_info.h(state/command 共享,不寄生)
- 删除 wm_desc.h,base/window_list 并入 common/window
全项目 include 路径同步更新
|
2026-06-25 03:00:30 +08:00 |
|
|
|
bf3de7fb92
|
style: 禁掉 clang-format 的 AlignConsecutiveAssignments 规则并重新格式化整个项目
|
2026-06-24 13:05:56 +08:00 |
|
|
|
f3b1466dac
|
fix(backend): 扫描窗口时按 transient 关系排序并过滤无效窗口
|
2026-06-23 00:33:03 +08:00 |
|
|
|
b71b66921e
|
refactor(window): 用更通用的尺寸提示(min/max size)替换 fixed_size 标记
|
2026-06-22 23:22:08 +08:00 |
|
|
|
9a1e015fc1
|
feat: 添加 MOD4 + 鼠标右键调整窗口大小功能
|
2026-06-22 00:48:14 +08:00 |
|
|
|
4e7ab45864
|
feat: 添加 MOD4 + 鼠标左键移动窗口功能
|
2026-06-21 16:30:59 +08:00 |
|
|
|
b8cd40df9f
|
feat(backend): 支持鼠标抓取功能
|
2026-06-20 01:06:30 +08:00 |
|
|
|
7a47f4d44d
|
feat(backend): 添加光标支持
|
2026-06-20 00:59:13 +08:00 |
|
|
|
090266baa5
|
feat(backend): 发送鼠标按键和移动事件
|
2026-06-18 01:19:41 +08:00 |
|
|
|
9f9adf7e2e
|
feat(backend): 写入 _NET_SUPPORTED 属性声明 EWMH 支持能力
|
2026-06-16 23:33:05 +08:00 |
|
|
|
00df685184
|
fix(backend): 修复 backend_poll_event 返回值意义不明导致的事件循环 bug
原因:之前的 backend_poll_event 返回 false 有两种情况
1. 当前就绪的事件已全部处理,没有事件可读了
2. 没有可以转化为感兴趣归一化的事件
当返回值为 false 并且时第二种情况时,底层的 xcb 原始事件未处理完,但不
再处理事件。导致有一部分事件一直无法处理,直到下一批事件待处理时通过文
件描述符状态变更唤醒新一轮的事件读取。这就会导致有些事件处理不及时,造
成卡顿的情况。
通过如下措施解决这个问题:
1. backend_poll_event 返回值只表示是否还有事件未处理完
2. event_t 引入 ZDWM_EVENT_NONE 表示事件为空,无人对该事件感兴趣也不需
要清理
|
2026-06-16 23:16:55 +08:00 |
|
|
|
dbbbbce379
|
feat(runtime): 用基于 poll 的事件循环代替阻塞式事件等待
|
2026-06-10 01:26:05 +08:00 |
|
|
|
4535e171a0
|
feat(bar): 实现 bar 布局排版和渲染绘制流程
|
2026-06-09 20:01:11 +08:00 |
|
|
|
c30c7d0698
|
fix(backend): 修复缺少 colormap 导致的创建 bar 窗口失败
|
2026-06-06 08:56:09 +08:00 |
|
|
|
f82d0b7a87
|
refactor: 移除新架构用不到的老模块
|
2026-06-06 00:40:39 +08:00 |
|
|
|
e9366b64e2
|
feat(backend): 添加创建 bar 窗口接口
|
2026-06-06 00:40:33 +08:00 |
|
|
|
f540c07aad
|
refactor: 将 APP_NAME 宏从 CMake 配置文件生成改为静态头文件
|
2026-06-05 18:59:38 +08:00 |
|
|
|
9275d14c5f
|
feat(runtime): 启动时扫描并接管已有窗口
从 handle_map_request 中提取 populate_window_event 供复用,
新增 backend_scan_windows 扫描 X11 根窗口子树,
runtime_scan 将扫描到的窗口走完整 policy 流程纳入管理。
route_map_request 增加 override_redirect 过滤。
|
2026-05-07 06:36:58 +08:00 |
|
|
|
c7399f014b
|
fix(backend/X11): 修复按键抓取使用错误数组索引的 bug
window_grab_keys 中误用 keys (首元素)代替 key (当前元素)获取
keysym, 导致只有第一个按键能正确注册
|
2026-05-04 22:34:15 +08:00 |
|
|
|
12bfce4745
|
refactor(core): 使用独立 bool 字段代替 geometry_mode 字段
将 fullscreen/maximized/minimized 从互斥枚举拆分为独立 bool 字段,以便
窗口状态切换时能回到上一状态。比如窗口初始为最大化状态,如果进入全屏状
态后从全屏状态退出时还能恢复最大化状态。
|
2026-05-04 04:07:36 +08:00 |
|
|
|
c777b58d80
|
feat(backend/X11): 处理 PropertyNotify 和 ClientMessage 事件
|
2026-05-04 03:03:15 +08:00 |
|
|
|
d90cebe0c2
|
feat(core+backend/X11): 实现窗口边框管理和焦点跟随鼠标
|
2026-05-02 00:46:13 +08:00 |
|
|
|
1485400b4c
|
refactor(core+backend/X11): 将修改窗口几何属性合并到 CONFIGURE_WINDOW 中
将 MOVE/RESIZE/BORDER_WIDTH 三个效果合并进 CONFIGURE_WINDOW 中,通过
changed_fields 掩码提取有效数据
|
2026-04-29 00:39:19 +08:00 |
|
|
|
a393308704
|
feat(core+backend/X11): 实现窗口状态变更(最大化/最小化/全屏)
|
2026-04-28 03:45:40 +08:00 |
|
|
|
722d3946c6
|
feat(core+backend/X11): 区分窗口销毁和撤销
|
2026-04-27 22:28:43 +08:00 |
|
|
|
c93e78bbd6
|
feat(core+backend/X11): 完成快捷键绑定和触发功能
|
2026-04-27 01:09:23 +08:00 |
|
|
|
19e97b730b
|
refactor(backend/X11): 将 event_reset 调用移到事件分发处
|
2026-04-27 01:05:10 +08:00 |
|
|
|
2ab4a84236
|
feat(backend/X11): 填充 ZDWM_EVENT_WINDOW_REMOVE 事件数据
|
2026-04-27 01:00:32 +08:00 |
|
|
|
e394ed78a5
|
fix(backend/X11): 释放 backend->map 所持有的内存
|
2026-04-27 00:43:09 +08:00 |
|
|
|
f3b8be8cf1
|
feat(backend/X11): 实现按键抓取功能
|
2026-04-26 19:03:18 +08:00 |
|
|
|
fc68e75f82
|
refactor(backend/X11): 重构 effect 应用为延迟批量模式并添加 KILL_WINDOW 支持
- 添加 ZDWM_EFFECT_KILL_WINDOW 副作用和 WM_DELETE_WINDOW 协议支持
- 将 backend_apply_effect 从即时调用 X11 拆分为 merge + batch apply 两阶段:
- 先收集 effect 到后端持有的列表
- 再按 unmap(grab server) → map → kill → configure → focus 顺序统一提交
|
2026-04-23 04:37:34 +08:00 |
|
|
|
1e3a571619
|
refactor(backend/X11): 合并批量 effect 中的 focus 操作
一批 effect 中可能包含多个 FOCUS_WINDOW,但最终只有一个窗口能获得焦点,
延迟到循环结束后只执行最后一次 focus 调用
|
2026-04-22 19:50:26 +08:00 |
|
|
|
663db3412f
|
feat(backend/X11): 添加从 _NET_WM_STATE 中获取 urgent 属性的功能
|
2026-04-22 19:37:01 +08:00 |
|
|
|
92dcec0e79
|
feat(backend/X11): 添加 _NET_SUPPORTING_WM_CHECK 兼容窗口
|
2026-04-19 05:39:31 +08:00 |
|
|
|
22cd362724
|
feat(backend/X11): 实现 backend_apply_effect 接口以提交 X11 副作用
|
2026-04-19 04:49:02 +08:00 |
|
|
|
2fc4b33359
|
style: 更新 .clang-format 规则并重新格式化所有源文件
- 重构模块使用新的代码风格
- 老代码 (src 目录下的代码) 继续使用之前的代码风格
通过在需要不同代码风格的目录下放对应 .clang-format 配置文件实现
|
2026-04-14 01:52:53 +08:00 |
|
|
|
7b5404e8e0
|
refactor(backend/x11): 用 X-macro 统一 atom 列表的声明和初始化
|
2026-04-14 01:35:25 +08:00 |
|
|
|
6561b16be0
|
feat(core): 引入 plan/effect 执行骨架
新增 plan/effect 数据结构与基础操作
在 runtime 中接入 event -> command_buffer -> plan -> backend 流程
补齐 policy/backend 接口并同步更新测试构建
|
2026-04-13 05:56:31 +08:00 |
|
|
|
0c24fb2a32
|
feat(core/event): 添加 event 资源清理和重置接口
|
2026-04-13 05:35:13 +08:00 |
|
|
|
11601c75bd
|
backend: X11 后端函数 detect_monitor_by_randr 中使用 p_strndup 替代 strndu
|
2026-04-11 06:00:08 +08:00 |
|
|
|
8a72e671bc
|
core: 重命名 event_t 联合体成员 data 为 as
|
2026-04-11 05:59:44 +08:00 |
|