當前位置: 首頁>>技術教程>>正文


為什麽某些打開的應用程序在 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/zh-tw/article/12213.html,未經允許,請勿轉載。