当前位置: 首页>>技术教程>>正文


为什么某些打开的应用程序在 Unity 启动器中显示为 “question marks”?

, ,

问题描述

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

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

最佳答案

发生了什么

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

失败可能是由于:

  1. BAMF(上面提到的应用程序匹配框架)中的一个错误。

  2. 有问题的 application description(又名 ‘.desktop’ 文件)。

  3. 根本没有任何应用程序说明。启动窗口的可执行文件本身不具有此元数据。

问题 (KeePass2) 中显示的应用程序存在第 1 类问题 has been reported to the appropriate bug tracker

问题示例

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

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

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

[Desktop Entry]
Type=Application
Name=My Application's Name
Icon=/file/path/of/my/icon
Exec=/file/path/of/my/executable

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

这是一个准系统示例。 formal specification 涵盖了许多高级功能。

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

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

  • /file/path/of/my/icon 在文件系统中不存在。

  • /file/path/of/my/icon 不是图像。

  • 该条目使用了一些不正确的语法或无效的标签。

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

问题 1 – BAMF 中的错误

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

  • Exec 路径是 symbolic link 而不是常规文件

  • 可执行文件是启动主可执行文件的脚本。

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12213.html,未经允许,请勿转载。