【问题标题】:Asynchronous extension breaks GNOME Shell异步扩展破坏了 GNOME Shell
【发布时间】:2021-05-06 03:06:25
【问题描述】:

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

如果在 Gnome Shell 已经运行的情况下启用了该扩展,该扩展运行良好。在任何其他情况下(在预启用扩展的情况下启动 Gnome Shell),它会破坏桌面并返回 GDM。

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

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

谢谢。

【问题讨论】:

    标签: javascript linux gnome-shell gnome-shell-extensions


    【解决方案1】:

    我建议您先阅读 review guidelines 以及 extension guides

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-01
      • 2020-05-13
      • 2021-12-24
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      相关资源
      最近更新 更多