我开始学习如何编写 Cinnamon 扩展。好吧,我尝试……虽然我设法编写了第一个简单的desklet,但我仍然没有找到一个真正好的和最新的文档和介绍。
我有以下问题,很高兴得到一些提示:
什么是最好的/建议的开发工作流程?
现在,我这样做:
- 将更改的文件从我的项目目录复制到
.local/share/cinnamon/uuid
, - 打开混色/窥镜,
- 在那里搜索扩展并通过右键单击重新加载它
- 切换到日志选项卡并检查错误
与在浏览器中自动热重载更改的vue.js 开发相比,这似乎有点……嗯……耗时。
在哪里可以找到可用小部件和小部件库的介绍?
我知道有 Gtk 和 St 并且都有 JS / GJS / CJS 绑定。
Gnome 开发文档St
没有提到. 我在这里读到另一个答案,似乎shell扩展不使用Gtk
,而是使用(而St
不是另外?)。
我根本没有找到任何文档CJS
,但据我所知,它似乎与GJS
. 好像desklets和applet的定义方式不一样?
但是现在,我仍然希望能够(至少简短地)介绍一下哪些小部件可用。虽然在Gtk 中似乎有一整套不同的类似列表的小部件,但我在St中没有找到任何列表小部件。而且似乎我不能将 Gtk 小部件用作 St 小部件的子级......?这个St 文档缺少对可用小部件和类以及它们的用途的任何概述。
有关事件的文档
我发现有一个St.Entry 小部件可用于单行文本输入。我找到了可以将函数绑定到按键释放事件的地方,如下所示:
this.input.connect('key-release-event', (widget, event) => {
const input = widget.get_text();
// ...
return true; // event has been handled
});
我没有设法获得有关该事件的一些信息。使用JSON.stringify(event)
它打印时显示一个空对象。
这个Gtk 文档看起来应该有诸如keyval
and之类的字段state
,但这些是未定义的。
当每一个很小的步骤都需要很长时间才能理解时,这真的有点令人沮丧......所以,我真的很感激任何提示和建议!