Ubuntu 11.04 下的 Unity 中没有托盘。
如何让图标出现在 Unity 的某个地方?wx.TaskBarIcon 没有出现在任何地方。谢谢
Ubuntu 11.04 下的 Unity 中没有托盘。
如何让图标出现在 Unity 的某个地方?wx.TaskBarIcon 没有出现在任何地方。谢谢
使用 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 Window System 下可以正常工作,因此应用程序应该只将它用作用户界面的可选组件。应要求用户在 Unix 上显式启用任务栏图标,默认情况下不应启用。
http://docs.wxwidgets.org/stable/wx_wxtaskbaricon.html
所以这与您的窗口管理器有关,而不是编程 wxWidgets。wxTaskbarIcon 只在 wxMSW 下才可靠,不知道 mac。如果您想要真正的 XPlatform-Applications,最好避免它。
如果您正在创建一个新应用程序,请考虑改用较新的libappindicator库——它是 Ubuntu 系统托盘的继任者,至少应该与 GNOME 2.x 兼容。(我不知道 GNOME 3 或 KDE 是否支持在任何地方显示 libappindicator 通知。)