Commit Graph
100 Commits
Author SHA1 Message Date
zedhugh 9fbd7f45e9 fix: 修复 client_send_to_tag 操作的焦点问题 2026-03-08 03:30:55 +08:00
zedhugh ea47717783 fix: 去除被其他 monitor 覆盖的 monitor 2026-03-08 03:04:24 +08:00
zedhugh 850221793f fix: audio 模块的初始化状态不要暴露给外部 2026-03-08 03:03:02 +08:00
zedhugh 5b41eb97cd fix: 修复窗口 Y 轴约束误用 workarea.width 的问题 2026-03-06 03:35:40 +08:00
zedhugh cecd7dc2d9 fix: 修复 client_manage 函数中 client 初始化 tag 逻辑 2026-03-03 08:47:08 +08:00
zedhugh 92a810f345 fix: client_send_to_tag 不再切换 monitor 的 tag 2026-03-03 07:55:07 +08:00
zedhugh 9f8b2453fa feat: 焦点切换时屏幕和光标自动跟随
- 按键操作前自动根据光标位置更新当前屏幕
- 新增 enter_notify 事件处理,鼠标进入窗口时自动获取焦点
- 新增 focus_in 事件处理,窗口获得焦点时更新当前屏幕
- 确保焦点操作与 current_monitor 保持同步
2026-03-03 07:26:49 +08:00
zedhugh 4428eb056d fix: 修改 wm_set_current_monitor 函数实现避免光标乱跳
- 将 wm_set_current_monitor 改为支持 restore_cursor 参数,按场景决定是
  否恢复光标位置
- 仅在指针位于当前显示器时更新 cursor_position 缓存,减少错误覆盖
2026-03-03 07:23:34 +08:00
zedhugh fb0999df90 feat: 统一 current_monitor 切换并让光标跟随 current_monitor 变化
- 新增 wm_set_current_monitor ,切换前记录光标当前所在 monitor 的最后
  位置
- 切换到目标 monitor 时按需恢复该 monitor 的光标位置
- 将 action/event/client 中直接赋值 wm.current_monitor 的逻辑改为统一
  调用 wm_set_current_monitor
- 优化 monitor_restore_cursor_point:首次未初始化时计算并设置位置
- 为 wm_get_monitor_by_area / wm_get_monitor_by_point 增加
  returns_nonnull 约束,并让 by_point 复用 by_area
2026-03-03 04:11:02 +08:00
zedhugh 41a2289c96 feat: client 的任务栏标题点击行为根据 client 窗口的遮挡状态进行
- 当点击 client 在任务中的标题时,如果 client 被其他窗口遮挡,则将其显
示出来,否则切换其 minimize 属性
- 新增 rect 模块用于辅助判断 client 的遮挡状态,添加
rect_intersection/rect_subtract/rect_subtract_many 函数
- client 模块新增 client_get_obscured_state 计算 client 窗口被遮挡状态
- action 模块新增 change_client_state_dwim,实现上述的 client 状态切换
2026-03-03 00:35:11 +08:00
zedhugh 9b7c3a67ef perf: 避免不必要的栈顶窗口重排
在 client_stack_raise 中如果 client 已经在窗口栈顶部直接返回,避免不必
要的窗口栈重排
2026-03-03 00:27:23 +08:00
zedhugh ab3d441928 fix: 将 client 的 instance 和 class 属性也无作为任务标题备选项 2026-03-03 00:22:39 +08:00
zedhugh 94d3be12ec fix: 修复 MIN/MAX 宏守卫导致的宏可能不生效问题 2026-03-03 00:12:19 +08:00
zedhugh 323a0f3711 支持窗口最小化功能 2026-02-26 11:28:56 +08:00
zedhugh 8c0b295115 实现 client 窗口自带最大化按钮功能 2026-02-26 00:24:52 +08:00
zedhugh 89275d0643 修改默认 firefox 和 mpv 相关规则 2026-02-24 03:14:13 +08:00
zedhugh d516d8f9e0 添加关闭窗口功能 2026-02-24 03:13:23 +08:00
zedhugh 6d65c53d43 完善 xwindow_send_event 函数功能 2026-02-24 03:05:43 +08:00
zedhugh 9baa3d4d1c 状态栏: 修复 CPU 使用率不能正确获取 bug 2026-02-14 05:07:11 +08:00
zedhugh 3edac120d2 状态栏: 内存小于 1KB 时显示整数格式 2026-02-11 15:09:17 +08:00
zedhugh b5c0cfefd7 处理 pulseaudio 服务关闭导致的程序意外终止 2026-02-11 14:38:05 +08:00
zedhugh a69f3bbc64 状态栏添加音量显示并添加音量调节功能 2026-02-11 02:22:49 +08:00
zedhugh 194c2b000d 添加状态栏 2026-02-05 05:42:54 +08:00
zedhugh 3b7bd55519 调整快捷键设置 2026-02-04 17:22:42 +08:00
zedhugh 8337ab9519 添加窗口规则支持 2026-02-04 16:47:35 +08:00
zedhugh 0e07ba135b 支持窗口最大化操作 2026-02-04 12:13:19 +08:00
zedhugh 4b6df52b41 修复窗口全屏后其他窗口未重新布局问题 2026-02-01 16:39:10 +08:00
zedhugh a08fbcbb9c 修复任务列表中窗口名称更新不及时问题 2026-01-31 23:34:32 +08:00
zedhugh 5dd042384d 添加自启动程序支持 2026-01-31 23:30:10 +08:00
zedhugh a748159dcd 删除 client 不必要的属性 2026-01-29 09:59:14 +08:00
zedhugh 6f4690705a 修正浮动窗口和全屏窗口配合行为 2026-01-29 09:18:45 +08:00
zedhugh a5ce85be78 支持窗口全屏操作 2026-01-29 07:46:06 +08:00
zedhugh a772d0f56f 支持 client 窗口浮动 2026-01-28 23:40:15 +08:00
zedhugh 5ecaa97f10 添加 raise_or_run 功能 2026-01-28 16:19:18 +08:00
zedhugh 99d2e33a46 使用 _NET_WM_DESKTOP 保存和恢复 client 所在 tag 2026-01-28 09:50:36 +08:00
zedhugh d1fa848632 快捷键主 modifier 从 ALT 切换到 SUPER 2026-01-27 01:14:29 +08:00
zedhugh 23fb95a5e4 清理 root 窗口 property 2026-01-27 01:14:29 +08:00
zedhugh 47d578ca71 实现 wm_scan_clients 函数 2026-01-27 01:14:29 +08:00
zedhugh ef37f28fa5 处理锁屏或息屏重新进入桌面后 bar 不显示问题 2026-01-27 01:14:29 +08:00
zedhugh 3d5f8ab7e0 设置 root 窗口背景为黑色以免 client 窗口销毁后画面不更新 2026-01-27 01:14:26 +08:00
zedhugh 21d7adf882 删除不必要的子进程信号
glib 会自动处理子进程资源,无需手动处理,手动处理不当反而会造成 bug
2026-01-25 11:25:56 +08:00
zedhugh 3e2bf57218 修复部分软件启动很慢的问题(如 xterm) 2026-01-25 11:24:48 +08:00
zedhugh 049b18a496 调整 send_client_to_next_monitor 函数实现 2026-01-14 03:44:53 +08:00
zedhugh ced78b004f 添加记录和恢复光标在每个 monitor 中的位置功能 2026-01-13 12:29:49 +08:00
zedhugh 5e22aed718 monitor_arrange 函数支持多 monitor 2026-01-13 09:44:53 +08:00
zedhugh 6b49045ee9 切换 client 所在 monitor 2026-01-07 12:12:56 +08:00
zedhugh 2902c994ba 切换 client 所在 tag 2026-01-07 11:39:46 +08:00
zedhugh 1dbcf3e654 tile 布局 2026-01-06 04:28:33 +08:00
zedhugh 8fba9ee71f 处理切换 tag 后 client 的焦点 2026-01-05 22:18:57 +08:00
zedhugh 943ede70a0 实现 _NET_ACTIVE_WINDOW 消息协议 2026-01-05 22:04:27 +08:00
zedhugh fac2a84d7f 更新 clang-format 配置 2026-01-02 18:24:56 +08:00
zedhugh 6382afeb03 处理堆叠顺序 2025-12-22 11:37:18 +08:00
zedhugh dee16344ce 修复 xwindow_get_text_property 函数中返回 reply 为 NULL 造成的 bug 2025-12-22 09:43:42 +08:00
zedhugh 94d3aa669f 处理窗口创建/销毁和切换 tag 时的窗口焦点 2025-12-22 09:43:42 +08:00
zedhugh b944251f11 切换 tag 时重排对应 monitor 中的 client 2025-12-22 08:30:19 +08:00
zedhugh c5e79661d1 使用 Xephyr 调试程序时继承现有 dpi 设置的值 2025-12-20 22:50:33 +08:00
zedhugh 8eeeff5f3b 添加从 Xresources 中读取配置功能 2025-12-20 22:47:58 +08:00
zedhugh 364a00fb7c 添加边框 2025-12-20 20:22:41 +08:00
zedhugh abc1979c04 修复 monocle 布局在窗口边框宽度不为 0 时位置不对 bug 2025-12-20 12:50:47 +08:00
zedhugh 194816ec2d 修复错误的 root 窗口属性事件掩码设置 2025-12-14 22:15:10 +08:00
zedhugh 0c029b7bfd 调整 client 坐标配置流程 2025-12-14 22:12:27 +08:00
zedhugh ffc39cd2bf 每个窗口的 bar window 设置 class 和 name 属性 2025-12-14 17:26:55 +08:00
zedhugh db4bcfcb81 修复 xwindow_get_text_property 函数 bug 2025-12-14 17:14:18 +08:00
zedhugh 9594b84237 创建 WM_CHECK 窗口 2025-12-14 16:21:56 +08:00
zedhugh ef1f71e92f 关闭窗口时清理对应资源 2025-12-09 09:37:06 +08:00
zedhugh f7a29ce74c 调整 client 窗口监听的事件 2025-12-09 09:34:40 +08:00
zedhugh 684e61afe7 修复 client_remove_from_tag 函数 bug 2025-12-09 09:33:55 +08:00
zedhugh f670c2f22c 修复 client_detach_list 函数 bug 2025-12-09 09:31:29 +08:00
zedhugh 3e23cbbe9f 修改 atoms 文件生成脚本的 shebang 为 bash 2025-12-09 05:07:48 +08:00
zedhugh 7405544c61 调整程序启动器命令参数 2025-12-09 03:53:24 +08:00
zedhugh 4ca37760e8 绘制任务栏 2025-12-09 03:42:14 +08:00
zedhugh 503135830e 调整 xwindow_get_text_property 函数 2025-12-09 03:26:21 +08:00
zedhugh 8171cbb472 修复屏幕工作区 y 坐标错误 bug 2025-12-09 00:48:56 +08:00
zedhugh 489ae4bf2a 添加 monocle 布局功能 2025-12-09 00:48:52 +08:00
zedhugh 5039ce457e 使用 logger 替代 printf 函数 2025-12-08 06:55:39 +08:00
zedhugh db917c1293 显式使用 GNU23 代替 C23 2025-12-08 05:40:54 +08:00
zedhugh e7447f8aaa 绘制布局标志 2025-12-08 03:37:29 +08:00
zedhugh 42ee022a0e 显示窗口 2025-11-27 07:53:28 +08:00
zedhugh fc1f1455c1 添加窗口属性设置宏 2025-11-25 06:11:09 +08:00
zedhugh b99b8368aa 封装窗口焦点控制函数 2025-11-25 06:10:42 +08:00
zedhugh 2ccf2a3f53 打印事件信息 2025-11-25 06:08:41 +08:00
zedhugh a26a903a19 添加重启和退出快捷键 2025-11-25 06:06:58 +08:00
zedhugh b45eea11fa 修改重启实现方式 2025-11-25 06:06:58 +08:00
zedhugh 2df0b58cb0 初始化 xkb 扩展 2025-11-25 06:06:42 +08:00
zedhugh e5927094d1 设置快捷键 2025-11-25 06:06:24 +08:00
zedhugh 76f9e15130 修改 monitor 中 tag mask 显示格式(%b 格式仅 gcc 编译器支持) 2025-11-21 17:47:40 +08:00
zedhugh ec93e6c023 点击切换 tag 功能做成 button 配置 2025-11-21 17:46:48 +08:00
zedhugh bf595e6c8a 设置 root 窗口鼠标样式 2025-11-21 01:00:51 +08:00
zedhugh 2aed03566c 添加点击切换 tag 功能 2025-11-21 00:39:05 +08:00
zedhugh 6814e5e1f1 代码中所有的 NULL 都用 C23 标准中的 nullptr 替换 2025-11-14 12:26:20 +08:00
zedhugh 14f321a45f 绘制 tag 标签 2025-11-14 12:24:22 +08:00
zedhugh a2e40bf63a 计算 bar 高度 2025-11-14 05:39:04 +08:00
zedhugh 99389a763d 退出时清理屏幕信息 2025-11-14 05:30:35 +08:00
zedhugh 94760fc2f8 初始化每个屏幕的 tag 2025-11-14 05:30:35 +08:00
zedhugh db284bf6b7 检测屏幕信息 2025-11-14 05:30:29 +08:00
zedhugh 79425dc890 窗口管理器状态机设计 2025-11-13 16:48:08 +08:00
zedhugh e77c986109 检查是否有其他窗口管理器正在运行 2025-10-31 00:36:30 +08:00
zedhugh 0ed798c113 代码 APP_NAME 无关化 2025-10-16 18:15:58 +08:00
zedhugh c575092c00 添加信号处理 2025-10-08 11:08:03 +08:00
zedhugh b8231b78ff 初始化项目配置 2025-10-08 07:44:37 +08:00