[AI Development Lab] 【deepin插件开发活动】每日一句悬浮便签
Tofloor
poster avatar
穿过生命散发芬芳
deepin
2026-09-09 23:43
Author

在 deepin 25 桌面上常驻一块毛玻璃悬浮便签:随机展示优美有哲理的句子,一键收藏、自定义灵感分类,并且会跟着系统壁纸的色调自动调整文字配色。

  • 源码仓库:https://atomgit.com/feidaojun/deepin-daily-quote (GPL-3.0-or-later)
  • 独立仓库,可单独构建与安装

一、功能介绍

功能 说明
毛玻璃悬浮卡片 dde-shell Panel 插件 + LayerShell 锚定屏幕四角,exclusionZone=-1 不占用工作区
每日一句 内置 1200 条中外名句,8 类灵感分类,「洗牌袋」算法一轮内不重复
一键收藏 ♡/♥ 一键收藏;收藏夹可浏览、跳转、删除、清空
自定义灵感分类 内置 8 类之外可任意新建/删除自己的分类
壁纸色调联动 D-Bus 取壁纸 → 64×64 饱和度加权量化提主色 → 推导文字/玻璃/标签色,WCAG 对比度强制 ≥ 4.5:1
外观可调 四角位置、边距、卡片宽度、自动换句间隔(关闭/5/15/30/60 分钟)、毛玻璃开关、图层层级
全部持久化 DConfig 保存 13 项偏好与收藏,重启自动恢复上次那句

二、效果截图

1. 桌面主界面(毛玻璃悬浮便签)

image.png

2. 收藏夹:浏览 / 跳转 / 删除

image.png

3. 设置面板:灵感分类(含自定义分类)与便签位置、自动换句时间

image.png

4. 壁纸色调联动:同一张便签在四种壁纸下自动推导的配色

image.png

image.png

image.png

5. AI 编程工具调用 deepin Skills 的对话记录

image.png

image.png

三、安装方式

# 编译依赖(deepin / UOS 25)
sudo apt install -y build-essential cmake \
    qt6-base-dev qt6-declarative-dev qt6-tools-dev \
    libdtk6core-dev libdtk6gui-dev libdde-shell-dev

# 构建安装
git clone https://atomgit.com/feidaojun/deepin-daily-quote
cd deepin-daily-quote
cmake -B build -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)
sudo cmake --install build

# 重启 dde-shell 生效
systemctl --user restart dde-shell@DDE

不想动系统时可以只在调试模式加载:

DDE_SHELL_PACKAGE_PATH=$PWD/build/packages \
DDE_SHELL_PLUGIN_PATH=$PWD/build/plugins \
dde-shell -p org.deepin.ds.dailyquote

也支持 dpkg-buildpackage -us -uc -b 打成 deb。

四、使用说明

便签默认出现在屏幕右下角。

  • 换一句:底部「⟳ 换一句」;开启自动换句后默认每 30 分钟自动换
  • 收藏:底部「♡ 收藏」,收藏后变红色 ♥
  • 复制:底部「⎘ 复制」,复制「正文 —— 作者」
  • 收藏夹:右上角 ★,点条目跳转,✕ 删除,右上「清空」
  • 设置:右上角 ⚙
    • 灵感分类:点标签即切换;输入框回车新建自定义分类;自定义标签带 ✕ 可删
    • 便签位置 / 宽度 / 边距 / 自动换句间隔
    • 跟随壁纸色调、毛玻璃效果开关、重新取色、恢复默认

扩展自己的句子库:在 ~/.config/deepin/daily-quote/quotes.json 放置
{ "categories": [...], "quotes": [{ "id","c","t","a" }] },启动时自动合并进内置库。

五、开发过程说明

整个项目在 AI 编程工具(WorkBuddy)中完成,把 deepin 官方 Skills 当「活文档」用,
而不是凭印象写 API。

用到的 Skill 模块

Skill 用途
dde-shell-development 1、插件类型选型(Applet / Containment / Panel) 2、plugin-development.md:目录结构、D_APPLET_CLASS 工厂注册、ds_install_package、ds_handle_package_translation 3、 LayerShell 锚定与 exclusionZone
dtk-development 1、 DConfig 配置持久化 2、StyledBehindWindowBlur 毛玻璃 3、 DGuiApplicationHelper 主题感知 4、D-Bus 调用与 Qt6/DTK6 构建配置

Skills 真正帮上忙的几个点

  1. 选型不跑偏:Skills 的快速路由表指出「贴靠屏幕边缘的 Wayland 图层窗口」走
    LayerShell;Applet 只能嵌在父容器里 —— 于是确定做独立 Panel。
  2. 避坑「编译通过 ≠ 能被加载」:Skills 的 gotchas 明确警告缺
    D_APPLET_CLASS(X) + #include "x.moc" 时 .so 能链接成功但无法实例化。
    本项目补齐后用 dde-shell --list 和日志里的
    Registered the applet factory "DailyQuotePanelAppletFactory" 双重确认。
  3. 毛玻璃与主题感知不重复造轮子:直接复用官方 OSD 插件的成熟配方
    D.DWindow.enableBlurWindow + D.StyledBehindWindowBlur{ blendColor } +
    palette: D.DTK.palette。
  4. 配置用 DConfig 而非自建配置文件/usr/share/dsg/configs//。
  5. 按 Skills 的「默认工作流」逐条自检:--list → -p → 查
    ~/.cache/dde-shell/ 日志确认 QML 无报错。

AI 协作中抓出来并修掉的两个真实缺陷

问题 现象 修正
文字色选择规则错误 最初用「背景亮度 < 0.5 → 白字」,在浅红壁纸(亮度 0.36)上白字对比度仅3.20:1 改为比较黑/白各自的 WCAG 对比度取更优者,并在仍不达标时反向微调玻璃层明暗
对比度基准取错 拿壁纸主色当背景算对比度,与实际观感不符 新增 effectiveBackground,用玻璃叠加后的真实底色作为基准

六、验证记录

$ dde-shell --list
org.deepin.ds.dailyquote          ← 插件被发现

$ dbus-run-session -- dde-shell -p org.deepin.ds.dailyquote
Registered the applet factory "DailyQuotePanelAppletFactory"
[daily-quote] loaded 1200 quotes from ":/org/deepin/ds/dailyquote/quotes.json"
[daily-quote] plugin ready: 1200 quotes, 0 favorites
Created rootObject for the applet: "org.deepin.ds.dailyquote"
grep -c "Unable to assign" → 0     ← QML 零绑定错误

七、已知限制

  • LayerShell 锚定,不支持鼠标自由拖拽,位置用「四角 + 边距」调
  • 需要 Wayland(treeland)会话;X11 下窗口不会出现
  • 壁纸取色依赖 org.deepin.dde.Appearance1,不可用时退化为解析
    ~/.config/dde-appearance/config.json,再失败则用主题默认配色
Reply Favorite View the author
All Replies
avatar
cuisirwork
deepin
2026-09-10 10:03
#1

建议将唐贤今人词赋于其上,告诉你作文以记之

Reply View the author
avatar
小浣熊市
deepin
2026-09-10 14:00
#2

建议将迅哥语录加上

我有两台电脑,一台是deepin,另一台也是deepin——鲁迅

Reply View the author