Waybar 日历周数显示异常,5分钟修复:错位、起始日错、缺周数一次修完
2026/9/14 15:48:54 网站建设 项目流程

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,默认hiddenformat.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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询