为什么一些打开的应用程序在Unity启动器中显示为“问号”?

And*_*edd 22 icons unity launcher

我遇到了几个程序的问题,这些程序具有统一的启动器,但在启动后创建了一个单独的图标。启动器是否可以跟踪它生成的窗口以更好地组织?或者这是 Unity 本身的错误?

在此处输入图片说明

这可能无关紧要,但此特定程序是单声道程序,生成的图标被列为面板。

Jje*_*jed 23

发生了什么

像这样的问题与 Unity 的应用程序匹配框架有关。为了简化技术细节,程序窗口和应用程序对 Ubuntu 来说是两个独立的东西。Ubuntu 需要“猜测”哪个应用程序拥有特定窗口。有时这种猜测会失败,并且启动器中会出现一个问号。

失败可能是由于:

  1. BAMF(上面提到的应用程序匹配框架)中的一个错误。
  2. 错误的应用程序描述(又名“.desktop”文件)。
  3. 根本没有任何应用程序说明。启动窗口的可执行文件本身不具有此元数据。

问题 (KeePass2) 中显示的应用程序存在类型 1 问题,该问题已报告给相应的错误跟踪器

问题示例

以下示例是技术性的,面向希望自己的应用程序在 Ubuntu 启动器中正确显示的程序员。

问题 3 – 没有应用程序描述

为了使应用程序与 Unity 集成——也就是说,可以在 Dash 中搜索并放置在启动器中——它需要有一个桌面条目。这样的条目被放置在/usr/share/applications//usr/local/share/applications/$HOME/.local/share/applications/(后两者是用于第三方软件,系统范围和用户只分别地)。它们以.desktop扩展名结尾并遵循以下基本格式:

[Desktop Entry]
Type=Application
Name=My Application's Name
Icon=/file/path/of/my/icon
Exec=/file/path/of/my/executable
Run Code Online (Sandbox Code Playgroud)

此项通过调用Exec可执行文件来启动程序。每当该程序显示窗口或对话框时,Unity 都会注意到其可执行文件“属于”该应用程序描述,NameIcon在启动器中使用给定的和。

这是一个准系统示例。在正式的规范涵盖了许多先进的功能。

问题 2 – 错误的应用程序描述

让我们假设my_app.desktop存在于有效的应用程序目录中,但是:

  • /file/path/of/my/icon 文件系统中不存在。
  • /file/path/of/my/icon 不是图像。
  • 该条目使用了一些不正确的语法或无效的标签。

在上述任何一种情况下,Ubuntu 将无法在启动器中正确列出应用程序窗口。

问题 1 – BAMF 中的错误

从 Ubuntu 11.10 开始,BAMF 有许多错误会阻止正确的应用程序匹配。常见(临时)陷阱包括:

  • Exec路径是一个符号链接,而不是一个常规文件
  • 可执行文件是启动主可执行文件的脚本。

在这些情况下,程序员别无选择,只能使用一种解决方法,例如删除符号链接抽象,或直接链接到可执行文件。桌面条目规范本身不需要这些。