Java,NodeWebkit和Gtk2应用程序等许多第三方应用程序似乎都无法显示系统任务栏图标。这是为什么?有解决方法吗?

#1 楼

基本操作系统不支持GtkStatusIcon(通常称为系统任务栏),并将在下一发行版中放弃对Ayatana Indicator API的支持。

GtkStatusIcon(用于在面板中放置图标的旧API) )自2014年起已弃用,并且未在基本OS中实现。请向仍在使用此API的应用程序开发人员提交报告,要求他们在不使用该API的情况下执行其应用程序功能。

我是开发人员,并且我想实现此功能。

当前(在0.3 Freya中),仅遵守Ayatana Indicator API。但是,从0.4 Loki开始,该面板也将不再实现Ayatana API。在基本HIG中,建议应用程序根本不要明确使用指示器区域。

如果您正在开发音乐应用程序,则只要有可能,应用程序就会自动在声音指示器中显示通过MPRIS进行控制。

如果您的应用发送通知,则错过的通知将自动保存在通知指示器中(从0.4 Loki开始)。

如果您想要呈现易于访问的内容在关闭或未运行应用程序时执行操作,请遵循freedesktop.org操作规范。

如何解决此问题?

尝试安装sni-qt。这适用于某些应用程序:

sudo apt-get install sni-qt


另一个选择是安装一个支持该旧API的面板,例如xfce4-panel

评论


启动时,应如何调用其他应用程序带有图标的区域,该区域的行为就像任务栏图标?这里的例子。

–user170
16-3-12在19:41

@cipricus“系统任务栏”专门指GtkStatusIcon API。屏幕快照中的应用程序使用Ayatana指标API(通常称为“应用程序指标”),该API与此类似,但没有专门称为“系统托盘”。

–丹尼尔·佛瑞(DanielForé)
16-4-13在16:13



#2 楼

要使Slack和其他应用在Wingpanel中显示类似系统托盘的图标,您必须更新应用.desktop文件并将env XDG_CURRENT_DESKTOP=Unity添加到Exec键的开头。以Slack为例(适用于我尝试过的每个带有系统任务栏图标的应用程序),我们将执行以下操作:

sudo nano /usr/share/applications/slack.desktop

Exec键从:
Exec=/usr/bin/slack --disable-gpu %U

至:
Exec=env XDG_CURRENT_DESKTOP=Unity /usr/bin/slack --disable-gpu %U

评论


您知道如何将Wine System Tray放入Wingpanel吗?

–MichałRowicki
17 Mar 29 '17 at 23:48

Rocco,在我的Freya中,松弛图标以Exec =(带有或不带有env等)的形式出现在翼板中,并且看上去相对较大。也许您知道如何摆脱它或至少改变它的大小?

– daGo
17-10-7在6:16



daGo,很遗憾,我手头没有Freya的副本以帮助调试,但是您可能会发现编辑/usr/share/themes/elementary/gtk-3.0/apps.css、/usr/share/themes/elementary时有些运气/gtk-3.0/gtk-widgets.css(位于.panel或.composited-indicator中的Panel下,或/usr/share/icons/elementary/index.theme文件下。希望您在那里找到想要的东西。祝您好运!

–罗科·奥古斯托(Rocco Augusto)
17-10-9在3:09

#3 楼

安装GTK2托盘应用程序Trayer:

sudo apt install trayer


,然后向会话添加与此类似的命令:

trayer --expand false --SetDockType false --widthtype pixel --width 200 --align right --iconspacing 15


通常:

trayer --help


以获取参数帮助。