Skip to content

Repository files navigation

iCalClassIsland

当前最新版本:1.2.0.0,如果与插件商店显示不符,说明插件商店尚未更新,请前往Releases下载最新的cipx

ClassIsland 上显示来自 iCal(.ics)文件的日程安排,主要用于大学生的课表。

浅色模式 screenshot 深色模式 screenshot2

功能

主界面组件

  • 水平排列显示当天所有非全天事件
  • 实时进度条
  • 当前事件高亮(主题背景色),已结束事件半透明、未开始事件正常显示
  • 额外信息显示(5 种模式):时间范围、已过时间、剩余时间、事件时长、完成百分比
  • 倒计时模式:启用后当剩余时间低于阈值时自动切换为倒计时显示
  • 隐藏已结束事件开关
  • 组件间距可调

空闲标记

  • 在日程之间的间隙显示空闲标记(可开关)
  • 两种样式:
    • 详细组件:类似正常日程组件,显示空闲文字、时间信息和进度条
    • 简化进度条:仅显示进度条和百分比(首个事件前显示「今天」标签)
  • 支持与日程组件相同的时间信息显示模式

占位文本

  • 无日程或日程全部结束时显示自定义占位文本(可开关)
  • 分别配置「无日程」和「全部结束」两种文本

明天日程

  • 模仿 ClassIsland 课程表组件的「明天」标记
  • 三种模式:不显示 / 占位时显示(无事件或全部结束后)/ 始终显示

多 iCal 文件支持

  • 支持同时加载多个 .ics 文件,自动合并并按时间排序
  • 时间重叠时段内的事件各自独立显示,同时活跃

Web URL 远程数据源

  • 支持添加来自 Web 的 iCal 文件(如 GitHub Raw)
  • 远程文件自动缓存到本地插件配置目录
  • 启动时优先读取远程源,远程不可用时自动回退到本地缓存
  • 设置页面显示每个远程源的连接状态

日历视图

  • ClassIsland 设置页中增加「日历视图」选项卡
  • 周视图:7 列(周一至周日),每列显示当天全部日程
  • 可前后翻周,今日标题蓝色高亮

自动化信号

触发器(5 个)

与 ClassIsland 课程表信号机制一致,可在自动化设置中配合任意动作使用(如执行程序、发送通知等):

  • iCal:事件开始 — 当 iCal 事件开始时触发(等效「上课」)
  • iCal:事件结束 — 当 iCal 事件结束时触发(等效「下课」)
  • iCal:一天结束 — 当当天所有事件结束时触发(等效「放学」)
  • iCal:当前事件状态变化时 — 事件开始/结束/一天结束时均触发(等效 ClassIsland 的「当前状态变化时」)
  • iCal:特定时间点前 — 在指定时间点(事件开始/事件结束/一天结束)前 N 秒触发,支持下拉选择时间点和自定义秒数

规则集(3 个)

用于自动化条件判断,检查事件摘要中是否包含指定文本(不区分大小写,子串匹配):

  • iCal:当前事件中包含 — 当前进行中事件的摘要包含指定文本时成立
  • iCal:上个事件中包含 — 上一个已结束事件的摘要包含指定文本时成立
  • iCal:下个事件中包含 — 下一个即将开始事件的摘要包含指定文本时成立

提醒通知(2 个提供方,4 个频道)

对标 ClassIsland 的「上下课提醒」和「放学提醒」,在 ClassIsland 设置 → 提醒中管理。每个频道可独立开关、调节语音和自定义文字。

iCal 日程提醒(对标「上下课提醒」):

  • 日程准备提醒 — 在日程开始前指定秒数发出醒目提醒,显示两列覆盖(倒计时 + 下个日程信息),连锁开始提醒
  • 日程开始提醒 — 在日程开始时显示遮罩提醒
  • 日程结束提醒 — 在日程结束时显示提醒,如有下个日程则展示两列覆盖(已结束信息 + 下个日程预告);无下个日程时自动跳过,由一天结束提醒收尾
  • 支持自定义遮罩文字、正文文字、语音开关、提前秒数
  • 支持显示事件额外信息(地点、描述),可单独控制地点/描述的显隐,支持从描述中去除地点(实验性,对地点拆词然后在描述中去除)

iCal 一天结束提醒(对标「放学提醒」):

  • 在当天所有日程结束后发出提醒
  • 支持自定义提醒文字和正文持续秒数

设置页面

  • 多文件管理:添加/移除本地 iCal 文件,添加/移除 Web URL
  • Web URL 输入面板,支持一键添加远程数据源
  • 自动刷新间隔配置
  • 状态信息显示(数据源数量、当天事件数、远程源连接状态、缺失文件提示)
  • 关于卡片:版本号、commit hash、GitHub / Issue / 许可证链接

支持的 iCal 格式

  • 本地时间:DTSTART:20260101T090000
  • UTC 时间:DTSTART:20260101T090000Z
  • TZID 时区参数:DTSTART;TZID=Asia/Shanghai:20260101T090000
  • 自动忽略全天事件(VALUE=DATE 格式或跨零时事件)
  • 支持 RRULE:FREQ=WEEKLY 每周重复规则(INTERVAL / UNTIL / COUNT)
  • 支持 RFC 5545 行折叠

使用方法

  1. 在 ClassIsland 中安装本插件
  2. 打开设置 → iCal 日程,添加 iCal 文件或 Web URL
  3. 将「iCal 日程」组件添加到主界面布局中
  4. 通过组件设置调整显示选项

开发

基于 ClassIsland 插件 SDK 开发,使用 Avalonia UI 框架。

dotnet build                              # 编译
dotnet publish -p:CreateCipx=true          # 打包为 .cipx 插件包

开源协议

本软件采用GPLv3开源,图标来自米游社

About

在 ClassIsland 上显示来自 iCal(.ics)文件的日程安排。

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages