[AI Development Lab] 【deepin插件开发活动】dde-dock-rebootto-plugin 重启至其他系统
Tofloor
poster avatar
hotime
deepin
12 hours ago
Author

作品简介

dde-dock-rebootto-plugin 是一款 DDE 任务栏「重启」托盘插件(活动方向二:任务栏托盘插件):一键重启至 GRUB 中的其他系统(如 Windows、其他 Linux 发行版等)。通过 grub-reboot "<启动项标题>" 临时设定下次启动项后重启,实现"重启至"目标系统。

功能特性

  • 左键点击托盘图标:弹出 rEFInd 风格卡片面板,横向列出可重启的系统(大图标 + 简称,悬停显示完整启动项名称),点击卡片后确认重启;
  • 右键点击托盘图标:高级设置,可勾选显示默认隐藏的启动项(UEFI 系统设置 / 回退项 / 当前系统);
  • 默认显示规则:UEFI(主板设置)默认显示;回退项、当前系统默认隐藏,可在右键菜单调整;
  • DCI 图标:托盘图标采用 DCI 格式(内置亮/暗双主题,随系统主题自动切换);
  • 图标映射配置化:os 图标与卡片显示名通过 os-icons-mapping.yaml 配置(发行版关键词 → 图标 + 中英文显示名),用户可扩展;
  • 空态提示:启动项获取失败 / 无可切换系统时,显示对应图标与提示(原因记录于日志)。

技术实现

  • 启动项获取:通过 deepin Grub2 DBus 服务(org.deepin.dde.Grub2)获取启动项标题列表(root 运行,可靠读取 /boot);
  • 重启流程grub-reboot "<启动项标题>" 设定下次启动项,成功后通过 deepin Shutdown 服务(org.deepin.dde.ShutdownFront1.Restart)重启系统(与任务栏「关机」菜单一致);
  • 授权机制:root helper(org.deepin.dde.RebootTo1,D-Bus 按需激活 + systemd 管理)服务端 polkit 授权(自定义授权文案,中文"设置下次启动项需要认证"),19 语言策略文件;
  • 图标体系:托盘 DCI 图标(libdci.so 渲染,亮暗主题自适应);os 图标独立安装(GPL-3.0,来自 grub2-themes,不编译进 .so);图标与显示名 yaml 配置化(含中英文,tr() 翻译);
  • 配置存储~/.config/deepin/dde-dock-rebootto-plugin.conf

构建与安装

依赖:CMake ≥ 3.16、Qt6(Widgets/Svg/LinguistTools/DBus)、DTK6(Widget/Gui)、yaml-cpp、dde-tray-loader 开发头文件、polkit-qt6 开发头文件。

sudo apt build-dep .
dpkg-buildpackage -uc -us -b
sudo apt install ./dde-dock-rebootto-plugin_0.1.0_amd64.deb
killall dde-shell 2>/dev/null; killall trayplugin-loader 2>/dev/null

截图

0.png

1.png

2.png

3.png

4.png

5.png

开发过程说明(deepin Skills 辅助开发)

**本项目全程使用 **deepin Skillsdde-tray-development 等)辅助开发,覆盖:

  • 插件接口规范(PluginsItemInterfaceV2)、托盘图标加载链路、右键菜单协议、refreshIcon/icon() 约定;
  • DCI 图标规范(deepin-specifications 图标文件规范)、svgs2dci 工具(SVG → DCI);
  • deepin 配置/许可惯例(REUSE、LGPL-3.0 代码 + GPL-3.0 图标数据合规);
  • 关键排错:D-Bus 激活(systemd 激活 vs 直接 Exec)、polkit 授权(服务端 CheckAuthorization)、DCI 亮暗主题切换(DDciIcon 显式渲染)等。

11.png

12.png

13.png

14.png

15.png

源码仓库

https://atomgit.com/hotime/dde-dock-rebootto-plugin

  • **开源协议:**LGPL-3.0(插件代码,与 dde-dock 插件接口一致);os 图标为 GPL-3.0(独立数据文件,来源于 grub2-themes);
  • 支持 deepin 25 / UOS 25(DTK ≥ 6.7、dde-daemon ≥ 6.1)。
Reply Favorite View the author
All Replies
avatar
𰻞𰻝面
deepin
2 hours ago
#1

这个好玩,就像电视盒子重启到游戏机一样

Reply View the author