是否可以改变和更新正在运行的指示器小程序的状态图标?

是否可以改变和更新正在运行的指示器小程序的状态图标?

我正在尝试创建一个简单的应用程序指示器,模仿 gnome-panel 的 CPU 负载小程序。

我目前通过使用新的 CPU 负载信息更新(覆盖)指示器的状态图标并在每次更新时将状态图标重新设置为相同的图标来实现此目的(我知道这很愚蠢,但我不知道目前是否有可能通过其他方式解决)。

不幸的是,这不起作用,我总是看到“第一个”图标状态,例如。

指示器图标不会更新,但图标的内容会更新。

我也尝试先将状态图标临时设置为其他内容,例如。

...
update_icon()
indicator.set_icon("indicator-messages")
indicator.set_icon("indicator-cpu-load")
...

但那也不起作用。

有任何想法吗?


更新:

我确实可以做到我想做的事情,使用黑客手段让指标重新绘制它的图标(感谢 Jorge Castro 和 Ted Gould):

...
update_icon()
indicator.set_status(appindicator.STATUS_ATTENTION)
indicator.set_status(appindicator.STATUS_ACTIVE)
...

注意状态图标应该与活动状态图标相同,否则会出现一些闪烁。

答案1

这确实不是应用程序指示器的预期行为:它们应该有一个或两个图标,而不是几乎可以放入小部件中的东西。

图标的缓存似乎出了问题,因为它应该更新已更改的图标。

无论如何,你可能想使用类似'自由指标' 创建您自己的自定义指标。面板上的应用程序指标集合由一个指标绘制。编写自定义指标时,您可以使用的功能比使用应用程序指标的有限 API 要多得多,应用程序指标的 API 是故意限制的,以确保我们不会陷入混乱。

另外,请务必查看“libindicator-tools”包,其中包含一些用于测试指标的便捷实用程序。

答案2

我认为这是不可能的,而且看起来这是设计使然,从错误报告

我们反而想鼓励人们开始像图标主题那样思考。这样做的原因是它允许面板有多种尺寸和主题,而与应用程序无关。因此,例如,应用程序可以采用浅色背景作为主题(因此需要深色图标),而面板可以采用深色背景(需要浅色图标)。应用程序不必知道这一点。通过使用图标命名,这个问题可以在面板方面得到解决。

对于 Natty 循环,我们还想提供一个便捷的 API,以便为想要生成图标的人构建自定义图标主题。这并不能解决所有主题问题,但它确实可以解决多种尺寸的问题。

更新:为了回答你的评论,Ted 认为这是一个错误,并建议你在指标应用,类似于“主题更新不是由指标实现的”

相关内容