一直没有找到自己喜欢的苹果电脑可用的日历软件,索性用workbuddy手搓了一个XCalendar,欢迎使用。

# XCalendar
macOS 状态栏日历应用,小巧实用,让日期一目了然。
XCalendar — 从初始到现在的功能总览
v1.x — 基础版本
macOS 13+ 状态栏日历应用,Swift + AppKit 纯代码构建。
- 状态栏显示日历图标、公历日期、农历、星期、时间(30 秒刷新)
- 响应式缩放(13寸 0.82 ~ 15寸 1.0),深色/浅色主题跟随系统
- 日历面板:月份导航、6行7列网格、阳历+阴历双显示
- 农历计算引擎:干支、生肖、24节气、阴历↔阳历互转
- 4 种日期格式、周日/周一可切换
- 系统日历事件读取/添加/删除
- 中国节假日显示、调休/补班"休"/"班"标记
- 纪念日设定(阳历/阴历)、面板底部倒计时
- 24/12 小时制切换
v2.0.0 — 全面重构
完整重写 CalendarView.swift,修复 10+ 个编译和运行时问题。
- CalendarView 全面重建,消除死代码和编译警告
- 修复月份导航、键盘监听器泄漏、事件缓存等 Bug
- 完善阴历纪念日到阳历的日期转换
- 年份视图(3x4 月份网格)交互优化
v2.1.0 — 本次更新(2026-05-07)
新增功能
事件编辑 右键菜单新增"编辑事件",可弹窗修改已保存的系统日历事件标题,调用 EKEvent.save 写入系统日历。
纪念日通知 App 启动时请求通知权限,启动后每小时检查一次。当今天匹配阳历或阴历纪念日时,自动弹出 macOS 系统通知横幅,同一天不会重复通知。
年份视图 底部工具栏新增"年份"按钮,点击显示 3×4 月份网格覆盖层,点击月份跳转。右上角 ✕ 按钮、背景点击、ESC 均可关闭。年份视图打开时自动禁用双指滑动和方向键导航,防止误操作。
周数列 通用设置新增"周数"开关,开启后日历网格左侧显示 ISO 周数,切换即时生效。
状态栏徽章 当天有系统日历事件时,日历图标右上角叠加红色圆徽章显示事件数量,可在通用设置中开关。
自定义提示语 状态栏设置中可自定义鼠标悬停提示语内容,留空恢复默认显示。
节假日 API 重试 网络请求失败后自动 60 秒重试,最多 3 次,避免因临时网络问题导致节假日数据缺失。
Bug 修复
节假日数据错误 isHolidayRest 和 isAdjustedWorkday 的 2026 年硬编码数据有多处错误。对照 timor.tech 官方 API 逐条核实并修正了 7 个日期,包括 4月26日错误标记为上班、2月15日(春节)错误标记为补班、9月27日(中秋节)错误标记为补班等。
双指滑动切换月份丢失 2.0.0 重构后双指水平滑动功能缺失,通过 scrollWheel 监听手势阶段和累计偏移量恢复。
键盘导航丢失 方向键切换日期、ESC 关闭面板、T 跳转今天全部丢失。因 nonactivatingPanel 下 keyDown 不触发,改用 NSEvent.addLocalMonitorForEvents 实现。
开机启动不生效 偏好设置的"开机后自动启动"勾选后只存了 UserDefaults,未调用系统 API。改为 macOS 13+ 原生 SMAppService.mainApp.register()/unregister(),启动时自动校验注册状态。
状态栏设置 Tab 控件不可点击 新增工具提示语输入框后,后续勾选框被推出视图外。调整布局间距后修复。
周数开关不即时刷新 切换后只更新了数据未触发重绘,在 gridView.reload() 末尾加 setNeedsDisplay(bounds) 修复。
功能完善
- YearView 背景任意点击即可关闭
- 面板每次打开时自动清除系统日历事件缓存,确保数据显示最新
allHolidayDates()修复跨年数据混用和同天误判两个逻辑 Bug- 所有
nearestHoliday()中的日期比较改为startOfDay,修复同天节假日被错误跳到明年的问题
我再试一下。
刚才提交评论 404 了
@皇家元林 现在应该好了