|
|
b8ca575458
|
fix(policy): 新增窗口后通知原焦点窗口状态变更
|
2026-08-01 16:50:11 +08:00 |
|
|
|
6b2f0e3218
|
chore(config): 默认 Super+f 改为切换全屏
|
2026-07-29 04:53:11 +08:00 |
|
|
|
d7d16f1ac8
|
feat(window): 无标题窗口标题按优先级回退显示 instance/class/app_id
新增 window_get_showing_title,按 title → instance_name →
class_name → app_id 优先级取显示标题,窗口快照改用该函数,
避免标题缺失时显示为空。
|
2026-07-29 04:50:33 +08:00 |
|
|
|
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 |
|
|
|
7b7b6d807f
|
chore(make): 简化 Makefile 中的冗余逻辑
- 移除未使用的 PWD_DIR 变量及重复设置 TARGET 的 ifneq 块
- run / run_multiple_screen 直接调用 Xephyr,
不再经过 $(shell ... &) 包装
|
2026-07-28 21:14:14 +08:00 |
|
|
|
80b091a806
|
chore(clangd): 补全时禁止自动插入头文件
|
2026-07-28 21:12:01 +08:00 |
|
|
|
89f11d1e24
|
feat(tray): tray_init 传入背景颜色
|
2026-07-28 05:46:15 +08:00 |
|
|
|
ceb40b434d
|
fix(tray): 修复 tray 图标不能 reparent 到 container 窗口的 bug
|
2026-07-28 05:34:48 +08:00 |
|
|
|
272139f34f
|
fix(tray): 修正图标自然尺寸为 int32_t 类型
|
2026-07-28 05:32:50 +08:00 |
|
|
|
583b1fa382
|
feat(tray): 拦截托盘图标的 unmap/destroy 事件并移除图标
|
2026-07-28 03:35:08 +08:00 |
|
|
|
612c2367ca
|
feat(tray): 拦截托盘窗口的 map/configure/property 事件
|
2026-07-28 03:07:13 +08:00 |
|
|
|
88e589cc9e
|
feat(tray): 托盘图标按 icon_size 等比例缩放水平排列
|
2026-07-28 02:30:38 +08:00 |
|
|
|
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 |
|
|
|
31cd35bf84
|
feat(bar): 新增 tray_output_index 配置用于选择 tray 挂载的屏幕
|
2026-07-18 18:31:31 +08:00 |
|
|
|
3d258bdc8b
|
feat(bar): 将 tray 作为一个 item 集成到 bar 中
|
2026-07-18 18:23:52 +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 |
|
|
|
6a227b0497
|
fix: 移除 glibc 内部 bits/* 头文件提升可移植性
time.c 与 runtime.c 中误引的 <bits/time.h>、<bits/types/struct_itimerspec.h>、
<bits/types/sigset_t.h> 是 glibc 实现细节头文件,非 glibc 环境(bionic、musl 等)
不提供,导致跨平台编译失败。
这些符号(CLOCK_MONOTONIC / TFD_CLOEXEC / struct itimerspec / sigset_t)均由
已包含的公开标准头文件 <time.h>、<sys/timerfd.h>、<signal.h> 统一提供,
删除冗余引用后 glibc 与非 glibc 环境均可正常编译
|
2026-07-13 03:32:11 +08:00 |
|
|
|
6b75cda128
|
feat(bar): bar item 扩展钩子功能 bar cell 添加 fixed_width 属性与操作接口
- item type 加入可为空的 after_layout 和 after_draw 钩子
- cell 加 fixed_width 属性, cell api 添加 cell_set_fixed_width 和
cell_get_region 两个接口
- cell api 改为 const 避免外部修改
|
2026-06-28 02:18:58 +08:00 |
|
|
|
27aab6f0e9
|
feat(tray): 添加 tray 相关接口并融入现有启动流程
|
2026-06-27 22:52:19 +08:00 |
|
|
|
eaad539a0b
|
docs(tray): 新增实现计划,tray 接口声明移到 interface 中
|
2026-06-27 22:48:02 +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 |
|
|
|
e1113c0052
|
docs: 新增模块分层与系统托盘设计文档
|
2026-06-24 13:54:21 +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 |
|
|
|
195aeb5166
|
fix(bar): 修复点击 workspace 末尾 layout 单元无法切换布局的 bug
|
2026-06-23 07:01:23 +08:00 |
|
|
|
af80181897
|
fix(bar): 计算 left/right 侧的整体区域以修复点击命中检测
|
2026-06-23 06:59:42 +08:00 |
|
|
|
42bddf5ac7
|
feat: 让 bar 支持点击触发动作
|
2026-06-23 06:57:38 +08:00 |
|
|
|
29e0f1e2dc
|
feat: 为窗口移动/尺寸调整添加可配置的刷新率节流
|
2026-06-23 04:38:57 +08:00 |
|
|
|
74b30a5d4b
|
fix(runtime): 修复布局函数为空导致的窗口未被布局 bug
|
2026-06-23 03:25:37 +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 |
|
|
|
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 |
|
|
|
6d06b61134
|
fix(bar): workspaces 移除窗口时找到后立即 break 避免不必要的遍历
|
2026-06-16 19:13:30 +08:00 |
|
|
|
30dfb19a7b
|
fix(config): 补全默认全景色
|
2026-06-16 19:11:49 +08:00 |
|
|
|
195733e008
|
fix(core): 补全窗口属性变更通知
|
2026-06-16 19:00:19 +08:00 |
|