Waybar 日历周数显示异常,5分钟修复:错位、起始日错、缺周数一次修完
【免费下载链接】WaybarHighly customizable Wayland bar for Sway and Wlroots based compositors. :v: :tada:项目地址: https://gitcode.com/GitHub_Trending/wa/Waybar
Waybar 是一款 Wayland 桌面状态栏,它的时钟弹窗日历支持显示周数,异常基本就三类:周数与日期行错位、周起始日算成周日、1月和12月周数缺失。按下面三步顺序操作,几分钟就能修好。
先对号入座,定位你的症状
| 症状 | 一句话根因 | 修复步骤 |
|---|---|---|
| 周数与日期列错位 | format.weeks含全角/中文字符,周数宽度算偏了 | 步骤 1 |
| 周数从周日开始算 | iso8601未开启,起始日由 locale 说了算 | 步骤 2 |
| 1月/12月部分周数缺失 | 旧版月份行数计算有 bug,1.19.0 已修复 | 步骤 3 |
三步修复,按顺序操作
步骤 1:周数错位修复
🔧 结论先说:把format.weeks里的全角字符换掉,或用固定宽度 span 兜住宽度,错位即可消除。
"calendar": { "weeks-pos": "left", "format": { "weeks": "<span width='30px'>W{}</span>" } }验证:把时钟悬停弹出日历,逐行看 W01–W53 是否与日期行对齐。
步骤 2:周起始日错误修复
🔧 结论先说:周一开头就开iso8601(即周一作为每周第一天),周数会改用 ISO 8601 规则计算。
"calendar": { "iso8601": true }验证:取一个跨周界点的日期,对比系统日历的 ISO 周数是否一致。
步骤 3:特定月份缺周数修复
🔧 结论先说:这是旧版月份行数计算的 bug,1.19.0 起已修复,升级到 1.19.0+ 即可。
"calendar": { "weeks-pos": "right", "format": { "weeks": "W{}" } }验证:翻到 1月和12月,确认周数列连续无断档。
这三个配置项为什么关键
三者各管一件事:weeks-pos管「显不显、显在哪一侧」,取值left/right/hidden,默认hidden;format.weeks管「长什么样」,模板里的{}会被替换成实际周数;iso8601管「周数怎么算」,默认false。默认模板随之变化:ISO 模式为"{:%V}",周一开头为"{:%W}",否则为"{:%U}"。最终渲染由 src/modules/clock.cpp 的get_calendar()函数完成,它先用pads变量填充空格做对齐,周数字段宽度cldWnLen_靠ustring_clen计算宽字符长度,而first_day_of_week()则依据iso8601参数决定每周从哪一天开始。
进阶:把周数显示玩出花
🔧 结论先说:给时钟绑上点击事件,就能在月视图和年视图之间切换。
"clock": { "on-click": "waybarctl set clock calendar.mode 'year'", "on-right-click": "waybarctl set clock calendar.mode 'month'", "calendar": { "weeks-pos": "left", "mode": "month" } }注意事项:
format.weeks尽量只放纯文本或简单 span,复杂 HTML 样式交给 CSS,对齐更省心- locale 的周起始日设置要和
iso8601保持一致,否则周数和你看到的日历对不上 - 周数计算逻辑在 1.18.0 之后修过多次,建议定期升级到最新稳定版
动手前的自查清单
- 确认 Waybar 版本,特定月份缺周数的问题需要 1.19.0+
- 检查
format.weeks是否含全角或中文字符 - 确认
weeks-pos取值为left/right/hidden之一(默认hidden) - 若要求周一为每周第一天,已开启
iso8601: true tooltip-format使用{calendar}占位以启用日历弹窗- 改完后分别验证 1月/12月跨年周和常规周的显示
配置改完记得重新加载 Waybar 看效果;完整参数说明见 man/waybar-clock.5.scd,照着查就行。
【免费下载链接】WaybarHighly customizable Wayland bar for Sway and Wlroots based compositors. :v: :tada:项目地址: https://gitcode.com/GitHub_Trending/wa/Waybar
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考