debugging 在Wayland上开发Gnome Shell扩展是否有实用的工作流程?

6kkfgxo0  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(202)

我正在尝试在Wayland设备上开发一个Gnome Shell扩展项目(看看它是否可以移植到Gnome 45)。到目前为止,我的工作流程是:
1.打开GEdit并编辑代码。
1.构建扩展zip。
1.安装扩展zip。
1.退出整个系统。
1.选择我的用户并输入我的密码。
1.打开扩展管理器,找到我的扩展,并阅读关于Gnome无法加载它的错误消息。
1.如果没有,打开journalctl并使用它的分页器搜索最近提到我的扩展的堆栈跟踪。
1.打开Firefox,恢复会话,并查阅Gnome Shell文档以找出不再允许的内容。
1.从步骤1开始重复。
我认为第2步和第3步可以通过在~/.local中编辑扩展代码来消除。我认为可以更好地管理巨大的journalctl日志,在扩展名周围使用grep作为上下文,并使用tail只获取最近的日志。
但我无法处理的部分是,每次我想运行任何东西时,我都必须关闭整个开发环境,注销,登录,然后再次打开它。显然这是必要的,因为Wayland应用程序无法处理消失的显示服务器,Gnome Shell * 是 * Wayland显示服务器,Gnome Shell不知道如何重新加载其扩展而不重新启动自己。
是否有解决方法?是否有Looking Glass函数调用或CLI命令来重新加载Wayland上Gnome Shell 45上的扩展?我看到this answer提供了一个脚本粘贴到Looking Glass,但我不认为它可以在Gnome Shell 45上工作,因为它需要访问需要导入的东西,这在Gnome Shell 45上需要使用ESM import语句来完成,这在像Looking Glass这样的REPL中无法工作。
更好的是,有没有一种方法可以在Wayland环境中的窗口中运行Gnome Shell *,这样我就可以在不同的Gnome Shell示例中运行我的扩展,而不是在浏览器和编辑器之间交换的那个。或者有没有一种方法可以在我的扩展上运行单元测试,这样我就可以确保它在启用/禁用时不会立即崩溃,而不需要手动加载到完整的Gnome Shell中?

sg24os4d

sg24os4d1#

简短的回答是,您应该使用嵌套的GNOME Shell,它允许在Wayland上运行嵌套的示例。
我认为可以通过在~/. local中编辑扩展代码来消除第2步和第3步。
这是可能的,但是您仍然需要登录/注销或运行嵌套的会话。JavaScript运行时并不是以您可能认为的方式设计来“卸载”代码的。
或者有没有一种方法可以在我的扩展上运行单元测试,这样我就可以确保它在启用/禁用时不会立即崩溃,而无需手动将其加载到完整的Gnome Shell中?
除了reftests(参见Simon Schneegan's CI tests)之外,我不知道还有谁想出了一个好的方法来对扩展进行单元测试。

相关问题