【发布时间】:2011-10-31 23:11:03
【问题描述】:
Ubuntu 11.04下Unity没有托盘。
如何让图标出现在 Unity 的某处? wx.TaskBarIcon 没有出现在任何地方。 谢谢
【问题讨论】:
标签: python ubuntu wxpython wxwidgets ubuntu-unity
Ubuntu 11.04下Unity没有托盘。
如何让图标出现在 Unity 的某处? wx.TaskBarIcon 没有出现在任何地方。 谢谢
【问题讨论】:
标签: python ubuntu wxpython wxwidgets ubuntu-unity
使用 Ubuntu Unity 桌面环境(即 Ubuntu 11.04 或 11.10),您需要将您的应用程序“列入白名单”。
从命令行使用“gsettings”应用程序有多种不同的方法。
我必须这样做才能让 Skype 之类的程序再次显示在系统托盘中,而不仅仅是我自己使用 wxPython 的自定义应用程序。
【讨论】:
最佳答案来自官方文档:
在 X Window System 下,窗口管理器必须支持 freedesktop.org 的系统托盘协议(现代桌面使用的 WM 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。 如果您想要真正的 XPlatform-Applications,最好避免它。
【讨论】:
如果您正在制作一个新应用程序,请考虑改用较新的 libappindicator 库——它是 Ubuntu 系统托盘的继任者,至少应该与 GNOME 2.x 兼容。 (我不知道 GNOME 3 或 KDE 是否支持在任何地方显示 libappindicator 通知。)
【讨论】: