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


8

我正在尝试创建一个模仿gnome面板的CPU负载applet的简单应用程序指示器。

我目前通过使用新的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)
...

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

Answers:


4

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

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

无论如何,您可能想要使用“ libindicator ”之类的东西来创建自己的自定义指标。面板上的应用程序指示器集合由一个指示器绘制。与使用有限的应用程序指标API相比,编写自定义指标时要使用更多功能,这是有意限制的,以确保我们不会一团糟。

另外,请确保查看“ libindicator-tools”软件包,其中包含一些方便的工具来测试指标。


虽然它可以做我想做的(见问题更新),我同意,也许编写自定义指标是一个更好的主意。
htorque's

不过,我不明白为什么在这里显然不建议使用诸如GTkStatusIcon之类的既定且功能良好的程序。再次说明这一点:目前,所有主要的桌面管理器都完全支持GtkStatusIcon。因此,GtkStatusIcon需要在Ubuntu的未来版本中继续使用,至少-作为后备。谁为GtKStatusIcon投票否决了,您可以解释一下为什么您认为与众不同。我可能不知道有什么原因不编写依赖于GtkStatusIcon的程序吗?
塔卡特

下一版本的Ubuntu将使用Unity作为默认外壳,除了Java和Wine特殊情况外,将不支持GtkStatusIcons。这样做是为了使桌面可以使用新技术前进,并减少通知区域中的混乱情况。
Sense Hofstede

感谢您指出这一点。这是否真的意味着,如果需要开发者不移植的所有需要​​可自定义图标或依赖旧版NA的应用程序都不会在未来的Ubuntu版本中运行?
塔卡特

它们将在Ubuntu上运行,但不会显示其GtkStatusIcon。
Sense Hofstede

1

我认为这是不可能的,并且从bug报告看来,这是设计使然

相反,我们要鼓励的是人们开始像图标主题那样思考。这样做的原因是,它允许将多种尺寸和面板的主题与应用程序分开。因此,例如,一个应用程序的主题可能具有浅色背景(因此需要深色图标),而面板可能具有深色背景(需要浅色图标)。该应用程序不必对此有所了解。通过使用图标命名,可以在面板的一侧解决此问题。

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

更新:要回答您的评论,Ted认为这是一个错误,建议您在指标应用程序上提交错误,类似于“指标未实现主题更新”


我非常确定我所做的与设计背道而驰,但是我担心该评论无法回答为什么我不能编辑/更改图标(在主题内)并强制指示器更新其内容的原因。我可以做一些类似indicator.set_icon(“ a”)indicator.set_icon(“ b”)indicator.set_icon(“ c”)...的事情,但是我没有无限的空间容纳无限的新图标。:P
htorque 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.