Ubuntu 11.04上的wx.TaskBarIcon
在Ubuntu 11.04的Unity界面下,没有托盘图标。
我该怎么做才能让图标在Unity的某个地方显示出来?wx.TaskBarIcon没有显示在任何地方。谢谢!
3 个回答
如果你正在开发一个新应用,建议你使用更新的 libappindicator 库。这个库是Ubuntu用来替代系统托盘的工具,至少应该能和GNOME 2.x兼容。(我不太清楚GNOME 3或KDE是否支持在任何地方显示libappindicator的通知。)
在使用Ubuntu Unity桌面环境(比如Ubuntu 11.04或11.10)时,你需要把你的应用程序“列入白名单”。
有几种方法可以通过命令行使用'gsettings'这个工具来做到这一点。
我这样做是为了让像Skype这样的程序能够再次显示在系统托盘里,而不仅仅是为了我自己用wxPython做的自定义应用。
最好的答案来自官方文档:
在X窗口系统下,窗口管理器必须支持freedesktop.org的系统托盘协议(现代桌面环境使用的窗口管理器,比如GNOME 2及以上版本、KDE 3及以上版本和XFCE 4及以上版本都支持这个协议),或者是GNOME 1.2和KDE 1、2使用的旧方法。如果窗口管理器不支持这些协议,图标就会在用户的桌面上作为一个独立窗口出现。
因为并不是所有的窗口管理器都有系统托盘,所以wxTaskBarIcon在X窗口系统下的工作效果没有保证。因此,应用程序应该把它当作用户界面中的一个可选组件。用户在Unix系统上需要明确地启用任务栏图标,而不是默认开启。
http://docs.wxwidgets.org/stable/wx_wxtaskbaricon.html
所以这和你的窗口管理器有关,而不是wxWidgets的编程。wxTaskbarIcon在wxMSW下是比较可靠的,至于Mac系统就不太清楚了。如果你想要真正跨平台的应用,最好避免使用它。