[AI Development Lab] deepin日期时间插件v0.9.7 (小U+Workbuddy)
Tofloor
poster avatar
没事儿瞎转悠
deepin
2026-09-08 16:46
Author

​

根据反馈,增加了日期和星期的格式选择。

image.png

image.png

Deepin 25 任务栏日期时间插件,零守护进程依赖、开箱即用。

功能

  • 字体颜色随任务栏主题自动适配(浅色/深色任务栏均可读),随任务栏高度自动切换行数:
    • 2 行模式(小/中高度):时间+节气 / 日期+星期
    • 3 行模式(高度足够):时间 / 节气+星期 / 日期
  • 节气显示:内置标准天文公式计算(1900–2100 有效)
  • 字号自适应:随任务栏厚度按 sqrt 曲线缩放,也可固定字号
  • 点击打开日历:默认 deepin-calendar://,由系统默认机制选择版本(系统版/玲珑版)
  • 右键菜单:显示秒 / 显示节气 / 显示星期 / 日期格式(4 种可选) /
    星期样式(星期 | 周) / 位置固定于小U左侧 六个设置项,
    切换即时生效并自动持久化
  • 日期格式可选:yyyy年mm月dd日(2026年9月8日,中文按惯例不补零)/
    yyyy-mm-dd(2026-09-08)/ yyyy/mm/dd(2026/09/08)/
    mm月dd日(9月8日)——所选格式在 2 行与 3 行模式下显示一致,
    不随任务栏高度切换而变化,重启/注销后保留
  • 零依赖:无需守护进程 / HTTP 服务 / sudo

环境要求

项 要求
系统 Deepin 25(Qt6/DTK6,X11)
任务栏 dde-shell(DDE 25 默认)
可选依赖 dde-calendar(点击打开日历用,系统版或玲珑版任一即可)

目录结构(项目源码)

安装方法

方式一:一键安装(推荐)

bash install.sh          # 用户级(推荐,免 sudo)
SYSTEM=1 bash install.sh # 系统级(/usr/share/dde-shell,需 sudo,不推荐)

注意:推荐用户级安装。系统级安装下右键菜单配置持久化与 QML 读取路径
不同步(详见 FAQ)。

安装完成后重启任务栏生效:

killall dde-shell

方式二:手动安装

按以下步骤手动复制文件(用户级,免 sudo):

/dev/null || true

# 5. 注册 deepin-calendar:// handler(打开日历,可选)
xdg-mime default dde-calendar.desktop x-scheme-handler/deepin-calendar 2>/dev/null || true

killall dde-shell   # 重启任务栏生效

方式三:使用小U同学安装(跨电脑推荐)

  1. 将本项目目录或打包文件(如 datetime-plugin.tar.gz)放入
    UOS AI 工作空间(如 ~/Uai/,路径不固定,由你放置位置决定);
  2. 在小U同学对话中直接说:

"分析并部署工作空间中的 datetime-plugin 项目"
或 "读取 datetime-plugin 的 README 和 install.sh,然后执行部署"

  1. 小U同学会自动完成:
    读取项目文档 → 分析安装步骤与依赖 → 执行 bash install.sh →
    重启任务栏(killall dde-shell)→ 验证部署结果(文件/插件加载/handler 注册)。

会安装哪些文件(部署清单)

安装后会在用户目录生成以下文件,每项的作用如下:

文件 作用
插件元数据:声明插件 ID、入口 QML、所属面板
~/.local/share/dde-shell/org.deepin.ds.dock.datetime/datetime.qml 插件本体:时间/节气/星期显示 + 字号自适应 + 右键菜单
~/.local/share/dde-shell/org.deepin.ds.dock.datetime/config-writer.py 配置写入 helper:接收右键菜单请求,将开关状态写回配置文件
~/.local/share/dde-shell/org.deepin.ds.dock.datetime/config-loader.js 配置加载器:QML 委托其热重载配置(Qt.include 限制)
~/.local/share/dde-shell/org.deepin.ds.dock.datetime/datetime-config.js 运行时配置:显示秒/节气/星期/小U位置等开关状态(可手改)
~/.local/share/dde-shell/org.deepin.ds.dock.datetime/translations/*.qm 空翻译占位:消除 dde-shell 翻译加载警告
~/.local/share/dde-shell/org.deepin.ds.dock.datetime/.config-writer.lock helper 并发锁文件(运行时自动生成,可忽略)
~/.local/share/dde-shell/org.deepin.ds.dock.aibar/(可选) 小U同学用户级覆盖:dockOrder 26→27,实现"位置固定于小U左侧"
~/.local/share/applications/datetime-plugin-handler.desktop 注册 datetime-plugin:// URL scheme → 指向 config-writer.py

配置说明

配置文件:~/.local/share/dde-shell/org.deepin.ds.dock.datetime/datetime-config.js(JS 格式,内容兼容 JSON)

// datetime-plugin 配置(由 config-writer.py 写回)
{
  "datetimeVisible": true,
  "calendarCmd": "deepin-calendar://",
  "clockFontSize": 0,
  "showSeconds": true,
  "showTerm": true,
  "showWeekday": true,
  "dateFormat": "yyyy年mm月dd日",
  "weekdayStyle": "星期",
  "aibarTo27": true
}
字段 说明
datetimeVisible 插件显示开关
calendarCmd 点击打开的 URL scheme(支持 `
clockFontSize 固定字号,0=随任务栏厚度自动
showSeconds / showTerm / showWeekday 显示秒 / 节气 / 星期
dateFormat 日期格式(存用户可见文案,与右键菜单选项一致):yyyy年mm月dd日(显示如 2026年9月8日,中文写法不补零)/ yyyy-mm-dd(2026-09-08,补零)/ yyyy/mm/dd(2026/09/08)/ mm月dd日(9月8日)。2 行与 3 行模式共用同一格式化,格式不随任务栏高度变化
weekdayStyle 星期样式(右键菜单"星期显示"):星期(星期四)或 周(周四)
aibarTo27 小U位置固定到 27(日期时间左侧),注销/重启后生效

修改配置后约 30 秒内自动生效,无需重启任务栏。
右键菜单切换后自动写回本文件(通过 datetime-plugin:// 调用 helper)。

卸载方法

方式一:使用小U同学卸载

在 UOS AI(小U同学) 对话中直接说:

"卸载日期时间插件" 或 "完全清理 datetime-plugin"

小U同学会自动执行下方"完全清理"命令并重启任务栏。

方式二:手动卸载

# 1. 删除插件本体
rm -rf "$HOME/.local/share/dde-shell/org.deepin.ds.dock.datetime"

# 2. (若启用过)删除小U位置覆盖,恢复系统默认
rm -rf "$HOME/.local/share/dde-shell/org.deepin.ds.dock.aibar"

# 3. 删除 URL handler
rm -f "$HOME/.local/share/applications/datetime-plugin-handler.desktop"

killall dde-shell   # 重启任务栏生效

完全清理命令(一条命令)

rm -rf ~/.local/share/dde-shell/org.deepin.ds.dock.datetime \
       ~/.local/share/dde-shell/org.deepin.ds.dock.aibar \
       ~/.local/share/applications/datetime-plugin-handler.desktop
killall dde-shell

调试方法

手动调试

# 1. 查看插件加载日志(重点看 datetime 相关行)
journalctl --user -b | grep -i datetime

# 2. 重启任务栏(插件改动后生效)
killall dde-shell

# 3. 验证 URL handler 注册
xdg-mime query default x-scheme-handler/datetime-plugin
xdg-mime query default x-scheme-handler/deepin-calendar

# 4. 手动触发配置写入(模拟右键菜单,验证 helper 与配置写回)
python3 ~/.local/share/dde-shell/org.deepin.ds.dock.datetime/config-writer.py \
    'datetime-plugin://set?showSeconds=0'
# 查看配置是否更新
cat ~/.local/share/dde-shell/org.deepin.ds.dock.datetime/datetime-config.js

# 5. 验证小U位置覆盖
grep dockOrder ~/.local/share/dde-shell/org.deepin.ds.dock.aibar/main.qml   # 应为 27

# 6. 检查翻译警告是否消除(应无 Failed to load translation)
journalctl --user -b | grep -i "translation" | grep -i datetime || echo "无警告"

使用小U同学调试

在 UOS AI(小U同学) 对话中直接描述问题,例如:

  • "查看日期时间插件的日志" → 自动执行日志检索
  • "重启任务栏" → 自动执行 killall dde-shell
  • "把显示秒关掉" → 自动调用 helper 写入配置(无需改文件)
  • "小U位置怎么没生效?" → 自动检查 aibar 覆盖与配置状态
  • "检查插件安装是否完整" → 自动核对部署文件与 handler 注册

常见问题(FAQ)

问题 解决
点击不打开日历 安装日历:sudo apt install dde-calendar;确认 handler:xdg-mime query default x-scheme-handler/deepin-calendar 应返回 dde-calendar.desktop
右键菜单切换不生效 确认 datetime-plugin-handler.desktop 存在;手动触发 xdg-open "datetime-plugin://set?showSeconds=0" 验证
切换后重启/调最小高度就还原 多为持久化写不进配置:① 检查插件目录可写(root 部署过会 root:root,需 chmod -R a+rwX ~/.local/share/dde-shell/org.deepin.ds.dock.datetime 或重跑 install.sh);② v0.9.7 起 helper 自带"水位污染容错 + 配置损坏自愈",确认版本 ≥ v0.9.7 后重试
修改配置后不更新 配置文件格式错误会被忽略(回退默认值);检查 JSON 合法性(对象体内不能有 // 注释);dateFormat 只接受四种文案值
小U位置没变化 该开关延迟到注销/重启后生效;检查 grep dockOrder ~/.local/share/dde-shell/org.deepin.ds.dock.aibar/main.qml 是否为 27
日志有 translation 警告 确认 translations/ 目录与 qm 文件已部署(安装脚本自动处理)
任务栏异常 killall dde-shell 重启;仍异常则执行"完全清理"后重装
系统级安装(SYSTEM=1)后右键菜单不生效 系统级安装时 QML 读取系统级配置而 helper 写入用户级,持久化不同步;建议使用用户级安装(默认,免 sudo)

变更记录

  • v0.9.7(重构日期/星期格式,弃用 v0.9.6 的 Qt token 方案):v0.9.6 方案把配置存成
    Qt token(yyyy年M月d日),与菜单文案不一致、手改配置无效、且依赖无法真机验证的
    Qt 格式串语法,予以弃用。重构为:dateFormat 存用户可见文案(与菜单选项逐字一致),
    显示由插件自实现格式化(中文写法不补零、数字写法补零,行为确定)。
    同时修复三处会导致"切换不持久/被重置"的缺陷:① 时间戳去重水位 .config-writer.lock.ts
    若被写入超前时钟值(他环境遗留),后续所有保存都被误判 stale 丢弃 → 现加入
    "水位超前 >60s 视为污染并重置"容错;② helper 遇配置文件缺失/损坏直接拒绝写回 →
    现回退默认配置自愈写回;③ 插件实例因任务栏高度变化重建后,配置依赖 30s 周期重载才
    恢复、期间闪默认值 → 新增 Component.onCompleted 立即加载配置。
    旧版 Qt token 配置(v0.9.6 写入的)由 loader/helper 自动迁移为文案,无需手改。
    菜单打开时按配置强制对齐勾选态(防原生菜单勾选残留);安装后插件目录保持 GUI 可写
    (root 部署场景辅助以 chmod 777 目录 / 666 配置,helper 亦做尽力自修复权限)。
  • v0.9.6:右键菜单新增 日期格式 与 星期显示 两个单选子菜单——日期可选
    yyyy年mm月dd日 / yyyy-mm-dd / yyyy/mm/dd / mm月dd日,星期可选 星期(星期四)/
    周(周四);切换即选即改并持久化。⚠ 该版本日期格式采用 Qt token 存储,存在
    配置值与菜单不一致、持久化水位易被污染等缺陷,已被 v0.9.7 重构替代。
  • v0.9.5:修复深色模式文字仍为黑色的问题 —— palette.windowText 在 dock
    AppletItem 环境不随 Deepin/DTK 主题变化(恒为黑)。改为官方机制:D.Palette
    normal/normalDark 两态(浅色主题黑字、深色主题白字,与系统 DockPalette.
    iconTextPalette 同款色值)+ D.ColorSelector 按主题自动解析,主题切换即时生效。
  • v0.9.4:修复审查发现的 3 个问题——① 字体颜色由固定 #000000 改为
    palette.windowText(初版尝试,实际不随 dock 主题变化,见 v0.9.5 改用 DTK 调色板);② 修正文档/
    注释中配置文件名误写为 datetime-config.json 的 7 处(实际为 datetime-config.js;
    手动安装段补拷缺失的 config-loader.js,配置模板拷贝改为幂等不覆盖用户配置);
    ③ 手动安装段 handler 的 Desktop Entry Exec 改为无引号 heredoc + 展开后的绝对路径
    (Desktop Entry 规范不做 $HOME 等 shell 变量展开)。
  • v0.9.3:修复配置持久化失效的严重问题(Qt 6.8 默认禁用 XMLHttpRequest 读取
    本地文件,导致原 JSON 配置加载始终失败);配置改为 JS 格式 + 独立
    config-loader.js(Qt.include 只能在 JS 文件内调用),实现真正的配置热重载与持久化;
    helper 写配置改为原子写(临时文件 + rename,防损坏);install.sh 旧 JSON 迁移
    逻辑改为迁移优先(修复原模板先复制导致迁移永不触发的顺序 Bug);
    并发竞态加固:QML 切换后 3 秒内跳过配置重载(防回跳)、请求带时间戳由 helper
    去重(防 xdg-open 异步乱序)、aibar 文件操作先于配置写(保持一致性);
    修复过期请求整体丢弃的副作用:stale 请求仅跳过配置写,aibar 幂等操作照常执行
    (防止乱序时用户的小U位置设置丢失);
    节气切换升级为精确到时刻(原按节气日 12:00 判断,偏差可达 ±11 小时;
    现二分直接求节气时刻,切换分秒不差);二分法缓存端点差避免重复计算;
  • v0.9.2:节气计算升级为 Meeus 天文算法(太阳视黄经 + 二分求时刻 + 北京时间),
    替代原世纪常数近似公式,消除"个别年份节气差 1 天"问题(2000-2100 全精确,
    时刻误差 2~7 分钟);加入年缓存(跨年才重算,每秒刷新零计算开销);
    修复 MouseArea 信号参数弃用警告。
  • v0.9.1:修复以下问题:
    • 修复 install.sh 无条件重建 aibar 覆盖导致配置与文件状态不一致(现尊重
      右键菜单的 aibarTo27 配置,关闭状态下跳过创建并移除残留覆盖);
    • 修复 config-writer.py 对残缺 aibar 覆盖目录的处理:增加完整性校验,
      不完整时清理后整体重建,避免 FileExistsError 崩溃与缺文件;
    • 修复 translations 为空时 cp 报错导致安装中断(加保护);
    • 标注系统级安装(SYSTEM=1)下右键菜单配置持久化不同步的已知限制。
  • v0.9:插件目录本地配置 + 30 秒自动重载;日历打开由系统默认机制选择版本;
    右键菜单配置持久化;小U 位置固定(延迟生效);翻译警告消除;并发锁 + 防抖。

许可证

本项目基于 GPL-3.0-or-later 许可协议发布(见 datetime.qml 头部 SPDX 声明)。

datetime-plugin-v0.9.7.zip

Reply Favorite View the author
All Replies
avatar
没事儿瞎转悠
deepin
2026-09-09 00:15
#1

给小U安装了deepin开发的skills。

datetime-plugin-v0.9.36.zip

主要增加了倒计时功能

image.png

image.png

image.png

功能

  • 字体颜色随任务栏主题自动适配(浅色/深色任务栏均可读),随任务栏高度自动切换行数:
    • 2 行模式(小/中高度):时间+节气 / 日期+星期
    • 3 行模式(高度足够):时间 / 节气+星期 / 日期
  • 节气显示:内置标准天文公式计算(1900–2100 有效)
  • 字号自适应:随任务栏厚度按 sqrt 曲线缩放,也可固定字号
  • 点击打开日历:默认 deepin-calendar://,由系统默认机制选择版本(系统版/玲珑版)
  • 右键菜单(三部分:格式设置 / 显示设置 / 倒计时):
    ① 格式设置:时间制式(24/12 小时制)/ 日期格式(4 种)/ 星期显示(星期|周);
    ② 显示设置:显示秒 / 显示节气 / 显示星期 / 位置固定于小U左侧;
    ③ 倒计时:倒计时(9 档预设+自定义)+ 停止倒计时(仅运行时可用)
  • 日期格式可选:yyyy年mm月dd日(2026年9月8日,中文按惯例不补零)/
    yyyy-mm-dd(2026-09-08)/ yyyy/mm/dd(2026/09/08)/
    mm月dd日(9月8日)——所选格式在 2 行与 3 行模式下显示一致,
    不随任务栏高度切换而变化,重启/注销后保留
  • 倒计时(时间闪烁+悬停气泡):右键菜单"倒计时"预设 9 档时长(3/5/8=咖啡时间…/60)
    或自定义 1~999 分钟;倒计时运行时时间明暗闪烁(500ms 交替);悬停时弹出独立
    ToolTip 气泡
    (无边框/不抢焦点/置顶,宽度随内容自适应,三行:⏳倒计时 / 剩余大字 /
    共时长,**浅色主题=亮底深字 / 深色主题=暗底白字**自动适配),定位插件正上方(上方
    放不下则下方弹出),**与屏幕边缘保持 8px 边距**;左键始终打开日历(不冲突);结束播放
    **通知音效** message.wav(deepin 主题,wav 兼容 QSoundEffect)+ 原生对话框;
    会话内状态(重启即停),插件隐藏时仍后台准确推进、准点提醒
    半透明详情条**("倒计时 · 剩余 4:32 / 共 5:00");运行中左键点击即停止;结束时播放
    系统提示音 + 原生对话框"时间到!"。会话内状态(重启任务栏即停),不持久化;
    插件隐藏时倒计时仍后台准确推进、准点提醒
  • 零依赖:无需守护进程 / HTTP 服务 / sudo
Reply View the author
avatar
没事儿瞎转悠
deepin
2026-09-09 16:31
#2

datetime-plugin-v0.9.37.zip

  • v0.9.37(审核修复:helper 解析/缺键补齐 + 文档清理):全量代码审核后修复—— ①** helper 配置解析防击穿**:_extract_json_object 改为从** var DATETIME_CONFIG = 之后定位对象起始(原先从全文第一个 { 起)。若用户手改配置时头部注释含 { (如 // 设置 { 如下),原实现会配对失败判"配置损坏",触发自愈默认值静默覆盖 用户全部配置**(已实测复现);v0.9.10 修了尾部** } 方向,本版补上头部 { 方向, 字符串内 }{、尾部注释 } 场景回归通过;② helper 写回补齐缺失键**:配置读取 成功后以默认值为底** setdefault 补齐新版本新增字段(如旧版无 hour24),保留用户 已设值——旧配置升级后新键不再永久缺失(此前 loader 缺键=回退默认,功能无损但文件 不完整,已实测复现);③ README 功能段清理**:删除倒计时描述中 v0.9.18 之前的 旧方案残留(“半透明详情条”“运行中左键点击即停止”“系统提示音”,与现行独立 ToolTip 气泡/左键开日历/通知音效矛盾且重复);④** **README 配置示例补 hour24 字段 (与配置表一致)。
Reply View the author