You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发Cinnamon任务栏applet:如何重载代码使JS修改生效

Cinnamon 任务栏 JS Applet 高效代码重载方案

Cinnamon 加载 Applet 后会通过 GJS 引擎缓存已读取的 JS 模块,单纯移除再重新添加 Applet 只会销毁/创建实例,不会清理模块缓存,因此不会加载磁盘上的新代码,也完全不需要通过注销重登的方式验证修改,可按场景选择以下重载方案:

日常开发首选:单 Applet 定向重载(无桌面闪烁,速度最快)

这个方案只会重载你正在开发的目标 Applet,不影响其他桌面组件和运行中的程序:

  • 第一步:查询当前运行的所有 Applet 列表,终端执行命令:
    gdbus call --session --dest org.Cinnamon --object-path /org/Cinnamon --method org.Cinnamon.ListApplets
    
    返回结果格式为元组列表,每个元组对应一个运行中的 Applet,结构为(applet数字ID, 'applet的uuid', 所在面板区域编号),找到你开发的 Applet 对应的数字ID。
  • 第二步:执行定向重载命令,将命令中的<YOUR_APPLET_ID>替换为上一步查到的数字ID即可:
    gdbus call --session --dest org.Cinnamon --object-path /org/Cinnamon --method org.Cinnamon.ReloadApplet <YOUR_APPLET_ID>
    

如果嫌每次查ID麻烦,可以直接写个一键重载命令,把命令里的your-applet-uuid@dev替换成你自己的Applet的uuid,还可以存成shell别名,改完代码敲一次命令1秒内就能看到效果:

gdbus call --session --dest org.Cinnamon --object-path /org/Cinnamon --method org.Cinnamon.ReloadApplet $(gdbus call --session --dest org.Cinnamon --object-path /org/Cinnamon --method org.Cinnamon.ListApplets | grep -oP "[0-9]+(?=, 'your-applet-uuid@dev')")

全量重载场景:修改元数据/配置 schema 时使用

如果你修改了 Applet 的metadata.json/applet.json元数据、配置schema文件、注册了全局快捷键/DBus接口等定向重载无法完全清理残留的场景,不用注销重登:

  • 直接按Alt+F2调出Cinnamon的运行命令对话框,输入r后按回车,整个Cinnamon桌面运行时会在2秒内完成重启,所有组件都会从磁盘重新加载最新代码,已经打开的所有窗口完全不受影响,比重登效率高很多。

额外开发技巧

  • 如果只修改了stylesheet.css样式文件,完全不需要重载Applet,执行以下命令即可立刻刷新样式生效:
    gdbus call --session --dest org.Cinnamon --object-path /org/Cinnamon --method org.Cinnamon.LoadTheme
    
  • 开发阶段建议把Applet放在用户目录~/.local/share/cinnamon/applets/下,不要放在系统目录/usr/share/cinnamon/applets/,前者修改代码不需要root权限,重载也不会出现权限问题。

内容的提问来源于stack exchange,提问作者user1658543

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 18:06:18