|
|
88129293a0
|
feat: 补发 ConfigureNotify 通知客户端实际几何
当 WM 拒绝窗口的 ConfigureRequest(因窗口需要重新布局)或映射
窗口时,按 ICCCM 规范主动向客户端发送 synthetic ConfigureNotify,
告知其当前真实几何,避免客户端状态不一致。
- core: 新增 NOTIFY_CONFIGURE 命令与 CONFIGURE_NOTIFY 效果,
由 policy 在 window_need_layout 分支生成,plan 层下发
- backend(x11): 新增 configure 批次,map/notify 时查询实际几何
并合成 ConfigureNotify 事件下发
|
2026-07-29 04:31:28 +08:00 |
|
|
|
89f11d1e24
|
feat(tray): tray_init 传入背景颜色
|
2026-07-28 05:46:15 +08:00 |
|
|
|
3c5cfd3ead
|
feat(tray): 实现 tray_cleanup 并在 backend_destroy 中调用以释放托盘资源
|
2026-07-25 01:07:49 +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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
9f9adf7e2e
|
feat(backend): 写入 _NET_SUPPORTED 属性声明 EWMH 支持能力
|
2026-06-16 23:33:05 +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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
11601c75bd
|
backend: X11 后端函数 detect_monitor_by_randr 中使用 p_strndup 替代 strndu
|
2026-04-11 06:00:08 +08:00 |
|
|
|
3884d3fc50
|
backend: X11 后端添加窗口几何信息查询并修正错误语义
- 添加 window_get_geometry/window_get_fixed_size/window_get_geometry_mode
- window_get_atom_array 改为 bool 返回,区分 XCB 调用错误和空数据
- window_get_types/window_get_states 属性为空时返回 true 而非 false
- handle_map_request 重排操作顺序:错误检查提前,失败路径无内存泄漏
- 补充 _NET_WM_STATE_MAXIMIZED_VERT/HORZ atom 注册
|
2026-04-09 02:23:06 +08:00 |
|
|
|
0edb6ad6aa
|
backend: X11 后端添加窗口属性和状态查询接口
|
2026-04-08 19:32:53 +08:00 |
|
|
|
9728fad871
|
backend: X11 后端添加获取窗口 metadata 信息方式
|
2026-04-07 03:16:51 +08:00 |
|
|
|
196dab9bb3
|
事件循环框架
|
2026-04-01 16:08:01 +08:00 |
|
|
|
67f0c169f5
|
utils 按作用拆成 log/macros/memory 三个模块
|
2026-03-23 19:05:39 +08:00 |
|
|
|
34017fb5da
|
调整数据类型和接口函数命名规范
|
2026-03-23 12:42:19 +08:00 |
|
|
|
ac22a2b529
|
feat: 添加屏幕去重功能并调整测试用例目录结构
|
2026-03-22 04:18:59 +08:00 |
|
|
|
5d89caff0a
|
调整 X11 backend 目录结构
|
2026-03-21 03:01:27 +08:00 |
|