[UOS AI] 🕐 Deepin 任务栏日期时间插件v0.9.3(小U)
Tofloor
poster avatar
没事儿瞎转悠
deepin
2026-09-08 05:27
Author

一款为 Deepin 25 打造的轻量任务栏日期时间增强插件:零守护进程、免 sudo 安装、右键菜单随心配置、节气显示精确到分钟。


✨ 为什么需要它?

Deepin 25 默认任务栏的时间显示比较简单,尤其是日期看不清。这款插件把它升级为:

  • 两行/三行自适应:时间 + 节气 / 日期 + 星期,随任务栏高度自动排版
  • 农历节气:24 节气显示,基于天文算法(Meeus 太阳视黄经),精确到分钟——节气一到的瞬间自动切换,不差一刻
  • 点击打开深度日历:自动使用系统默认日历(系统版/玲珑版均支持)
  • 右键菜单:显示秒 / 显示节气 / 显示星期 / 位置固定于小U左侧,一键开关,自动持久化
  • 字号自适应:随任务栏厚度平滑缩放,也可固定字号

📸 效果预览

系统的任务栏插件时间和此款插件对比:

image.png

image.png

image.png

image.png

image.png

关闭系统任务栏的时间插件后:

image.png

image.png

image.png

右键菜单:

image.png

image.png

image.png

image.png

image.png

功能

  • 黑色字体日期时间显示,随任务栏高度自动切换行数:
    • 2 行模式(小/中高度):时间+节气 / 日期+星期
    • 3 行模式(高度足够):时间 / 节气+星期 / 日期
  • 节气显示:内置标准天文公式计算(1900–2100 有效)
  • 字号自适应:随任务栏厚度按 sqrt 曲线缩放,也可固定字号
  • 点击打开日历:默认 deepin-calendar://,由系统默认机制选择版本(系统版/玲珑版)
  • 右键菜单:显示秒 / 显示节气 / 显示星期 / 位置固定于小U左侧 四个开关,
    切换即时生效并自动持久化
  • 零依赖:无需守护进程 / 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):

 "$HOME/.local/share/applications/datetime-plugin-handler.desktop" <<'EOF'
[Desktop Entry]
Type=Application
Name=Datetime Plugin Config Handler
Exec=$HOME/.local/share/dde-shell/org.deepin.ds.dock.datetime/config-writer.py %u
MimeType=x-scheme-handler/datetime-plugin;
NoDisplay=true
EOF
xdg-mime default datetime-plugin-handler.desktop x-scheme-handler/datetime-plugin
update-desktop-database "$HOME/.local/share/applications" 2>/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.json 运行时配置:显示秒/节气/星期/小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,
  "aibarTo27": true
}
字段 说明
datetimeVisible 插件显示开关
calendarCmd 点击打开的 URL scheme(支持 `
clockFontSize 固定字号,0=随任务栏厚度自动
showSeconds / showTerm / showWeekday 显示秒 / 节气 / 星期
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.json

# 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" 验证
修改配置后不更新 配置文件格式错误会被忽略(回退默认值);检查 JSON 合法性
小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.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.zip

Reply Favorite View the author
All Replies
avatar
WangZhongyun
deepin
2026-09-08 09:00
#1

建议把里面的年号取消,这是容易明白的,不用特别显示占用空间

Reply View the author
avatar
骑🐖追帅哥bot
Moderator
2026-09-08 09:39
#2

让我来试试

Reply View the author
avatar
CTZ老斑鸠
deepin
2026-09-08 11:16
#3

可以借鉴一些系统原本的时间插件显示方式,deepin没有顶栏,日期显示只有“年月日”这一种方式放在任务栏里存在感过于强烈,占用的空间快有系统自带的插件三个那么大了。

image.png

Reply View the author
avatar
枫晓岳
deepin
2026-09-08 12:25
#4

有节气真的很不错

Reply View the author
avatar
士无双
deepin
2026-09-09 04:33
#5
WangZhongyun:

建议把里面的年号取消,这是容易明白的,不用特别显示占用空间

不能因为[容易明白]就去掉年份,有挺多时候截图是需要右下角的时间和年月日的。[容易明白]其实很主观。

Reply View the author