|
|
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 |
|
|
|
8f671bd755
|
feat: bar 点击回调添加按键和修饰键参数
on_click 新增 modifiers/button,使 bar item 可按按键与修饰键区分动作;
因参数增多,回调与 bar_click 改用结构参数封装。同时将 button_t 与
modifier 类型提升至公开头 include/zdwm/types.h 以供使用
|
2026-06-23 07:42:52 +08:00 |
|
|
|
42bddf5ac7
|
feat: 让 bar 支持点击触发动作
|
2026-06-23 06:57:38 +08:00 |
|
|
|
29e0f1e2dc
|
feat: 为窗口移动/尺寸调整添加可配置的刷新率节流
|
2026-06-23 04:38:57 +08:00 |
|
|
|
40c2c328cd
|
fix(policy): 修复切换焦点时的边框颜色设置和新窗口可能不触发布局 bug
|
2026-06-23 03:22:45 +08:00 |
|
|
|
71f050c2f3
|
feat(window): 添加判断窗口能否调整大小的辅助函数
|
2026-06-23 02:43:28 +08:00 |
|
|
|
f355b88b82
|
feat(policy): 调整窗口大小时遵循窗口的 max/min size hints
|
2026-06-23 00:53:17 +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 |
|
|
|
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 |
|
|
|
195733e008
|
fix(core): 补全窗口属性变更通知
|
2026-06-16 19:00:19 +08:00 |
|
|
|
4cef809f3c
|
feat(policy): 窗口增删改时触发对应的 listeners 通知
|
2026-06-15 18:08:29 +08:00 |
|
|
|
dbbbbce379
|
feat(runtime): 用基于 poll 的事件循环代替阻塞式事件等待
|
2026-06-10 01:26:05 +08:00 |
|
|
|
4e713682e4
|
refactor(policy): 统一 output 切换逻辑并添加 workspace 切换通知
|
2026-06-09 23:05:54 +08:00 |
|
|
|
4535e171a0
|
feat(bar): 实现 bar 布局排版和渲染绘制流程
|
2026-06-09 20:01:11 +08:00 |
|
|
|
adf839bf21
|
feat(bar): 实现 bar 可见性切换 action
|
2026-06-06 04:44:56 +08:00 |
|
|
|
be37b17c2e
|
refactor(runtime): 将 runtime 模块从 core 目录迁移至独立的 runtime 目录并封装内部细节
|
2026-06-06 02:08:35 +08:00 |
|
|
|
f82d0b7a87
|
refactor: 移除新架构用不到的老模块
|
2026-06-06 00:40:39 +08:00 |
|
|
|
e9366b64e2
|
feat(backend): 添加创建 bar 窗口接口
|
2026-06-06 00:40:33 +08:00 |
|
|
|
d07d2f64e1
|
refactor(policy): 提取切换 workspace 和窗口聚焦的命令构造辅助函数
|
2026-06-04 22:28:39 +08:00 |
|
|
|
83ed661ba6
|
fix(policy): 移动窗口所在 workspace 前先检查目标 workspace 是否存在
|
2026-05-31 18:42:51 +08:00 |
|
|
|
59520777c3
|
refactor(binding): key_binding_t 不再保存按键序列字符串指针
|
2026-05-31 18:33:11 +08:00 |
|
|
|
09d5e4b4d0
|
refactor(policy): 删除 action 模块,将 action -> command 解析放在 policy 模块内部
- 删除 src/core/action.c|h,将 spawn 移至 src/base/process
- policy_resolve_action 实现完整的 action 分发逻辑
- binding_table_cycle_mode 改为纯计算,返回模式 ID 而非修改状态
- 从 state 移除 state_workspace_cycle_layout / state_cycle_current_output
- 新增 ZDWM_COMMAND_QUIT 命令,通过 plan 标志驱动 runtime 退出
- set_binding_mode 现在生成 BIND_KEY effect 以同步后端按键绑定
- 扩展 action 数据类型支持 window_send_to_workspace 和 window_cycle_output
|
2026-05-27 01:12:04 +08:00 |
|
|
|
ff3b51fd1d
|
feat(policy): 扩展命令并实现窗口迁移、 output/layout/binding_mode 切换功能
- command.h 新增 SEND_TO_WORKSPACE、SET_CURRENT_OUTPUT、SET_LAYOUT、SET_BINDING_MODE 四个命令类型及载荷
- policy.c 实现对应的 apply 逻辑,包含焦点转移、映射/取消映射副作用和 listener 通知
- plan.h 增加 quit/will_restart 标志,为后续优雅退出做准备
- binding.c 对重复设置同一 mode 增加短路返回
|
2026-05-26 13:15:54 +08:00 |
|
|
|
989a1ce6e8
|
feat(listeners): 调整通知结构体字段并补充文档注释
|
2026-05-24 17:58:29 +08:00 |
|
|
|
13fc41f141
|
feat(runtime): 通过 listeners 发送初始状态
|
2026-05-23 23:06:53 +08:00 |
|
|
|
ca9e543cc0
|
feat(listeners): 实现 listener 通知分发和清理功能
|
2026-05-23 21:09:43 +08:00 |
|
|
|
33b0f2f54f
|
refactor(action): 重新设计 action 实现方式
|
2026-05-19 02:55:08 +08:00 |
|
|
|
edde023f5a
|
fix(listeners): 公共头添加 extern "C" 链接说明以支持 C++ 包含
|
2026-05-17 03:36:48 +08:00 |
|
|
|
74319e97f1
|
feat: 添加核心状态变更通知系统
|
2026-05-17 03:20:38 +08:00 |
|
|
|
9663097a98
|
fix(action): 修复 switch_workspace_by_index_in_current_output 循环条件错误
|
2026-05-10 12:19:50 +08:00 |
|
|
|
0d4a907dd8
|
feat(action): 实现切换当前 output 工作区功能
|
2026-05-09 23:00:01 +08:00 |
|
|
|
1f4659e7a4
|
refactor: 使用 workspace_id_invalid() 替代直接比较 ZDWM_WORKSPACE_ID_INVALID
|
2026-05-09 04:09:46 +08:00 |
|
|
|
a60d9f31a7
|
feat(action): 实现 focus_window 窗口焦点切换及 raise 命令
|
2026-05-07 07:20:27 +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 |
|
|
|
c1a4795a85
|
feat(state): 初始化 float_rect 并在切换 floating 状态时双向同步
|
2026-05-07 04:11:44 +08:00 |
|
|
|
8fcf46979a
|
feat(action): 绑定 toggle_fullscreen/maximize/floating 快捷键
|
2026-05-07 03:54:30 +08:00 |
|
|
|
56f8380028
|
feat(action): 实现 switch_workspace cycle_layout 和 cycle_output 操作
|
2026-05-07 03:21:27 +08:00 |
|
|
|
2c3c264ddd
|
feat(action): 实现 toggle_fullscreen/maximize/floating/sticky 操作
|
2026-05-07 03:20:24 +08:00 |
|
|
|
3031adf3cb
|
feat(policy): 处理窗口状态变更事件
|
2026-05-07 02:22:16 +08:00 |
|
|
|
1b6a4788be
|
feat(policy): 处理窗口激活请求事件
|
2026-05-07 02:14:38 +08:00 |
|
|
|
474ed8dc69
|
fix(policy): 窗口移除前获取其是否需要自动布局结果
|
2026-05-07 01:59:56 +08:00 |
|
|
|
964de33b23
|
feat(policy): 处理窗口元数据变更事件
|
2026-05-07 01:58:00 +08:00 |
|
|
|
b14be7b8dd
|
feat(policy): 在窗口管理/取消管理时推送窗口列表变更 effect
|
2026-05-05 02:59:16 +08:00 |
|
|
|
f11125d214
|
fix(core): 补充 POINTER_ENTER 事件处理缺失的 break 语句
|
2026-05-05 02:38:30 +08:00 |
|
|
|
70e2477649
|
feat(action): 重构 action 接口为函数指针表并实现 quit 和 raise_or_run
|
2026-05-05 00:44:04 +08:00 |
|
|
|
42986fb783
|
feat(command): 添加窗口 bool 状态的 set 命令
|
2026-05-04 20:02:45 +08:00 |
|