繁体   English   中英

异步扩展中断 GNOME Shell

[英]Asynchronous extension breaks GNOME Shell

我做了一个简单的异步扩展,它会定期统计 Arch Linux 的更新并在面板上显示它们。

如果在 Gnome Shell already running 的情况下启用了该扩展,则该扩展可以正常工作。 在任何其他情况下(启动 Gnome Shell 并预先启用扩展),它会破坏桌面并返回 GDM。

我的代码可以在以下位置找到: https://github.com/speltriao/Pacman-Update-for-GNOME-Shell/blob/main/pacmancounter@example.com/extension.js

也许异步 function 有问题? https://www.andyholmes.ca/articles/asynchronous-programming-in-gjs.html得到这个想法

谢谢。

我建议您首先阅读审查指南以及扩展指南

在 function countUpdates()中,您正在创建一个嵌套的GLib.MainLoop ,它在运行时将阻塞 GNOME Shell 已经在运行的现有主循环(有点违背异步操作的目的)。 我不清楚嵌套的主循环在 GJS 中是如何工作的,除非你清楚,否则我通常不会这样做。

此外,如果异步 function 失败,嵌套的主循环永远不会退出,这将无限期地挂起 GNOME Shell。 很有可能会导致 GNOME Shell 在启动期间崩溃。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM