無需安裝程式/套件管理器即可提供 Linux 應用程式圖標

無需安裝程式/套件管理器即可提供 Linux 應用程式圖標

背景故事:

我想要:

  1. 將應用程式作為簡單的 TAR 交付,供用戶提取並運行
  2. 讓該應用程式擁有正確的應用程式圖標。

沒有套件管理器,沒有 sudo,沒有安裝程式腳本。

我從標準各種文章該應用程式圖示需要一個.desktop文件,該文件需要可執行文件(呃)和應用程式圖示的絕對路徑。我還看到 Ubuntu Unity(也許其他)支援.desktop以下文件~/.local/share/applications

Windows 透過將圖示嵌入到執行檔中來支援這一點。 Mac OS X 具有包含圖示的應用程式的相對目錄結構。

「駭客」解決方案:

我的「hackish」解決方案是,在應用程式啟動時,檢測myApp.desktop檔案是否存在於~/.local/share/applications/,如果不存在,則寫入它(包括可執行檔和圖示的完整絕對路徑),啟動新的 myApp 進程並退出。

希望新的 myApp 進程能夠拾取應用程式圖示。和有時確實如此。

問題:

這個問題是,我必須sleep 2在啟動新進程之前幾秒鐘。如果我這樣做,該圖示就會被選中。如果不這樣做,我的應用程式就沒有圖標。

我嘗試過重新加載 GTK 圖示快取而不是休眠(使用gtk-update-icon-cache /usr/share/icons/hicolor),但這並不能解決問題。

有人知道如何避免這種延遲並確保新寫入的.desktop檔案被拾取嗎? (我正在刷新並關閉文件。)或者有比我的黑客解決方案更好的主意?

更新:有趣的是,測試一個寫入檔案的簡單腳本.desktop(手動或使用xdg 桌面選單)並啟動應用程序,還需要 2 秒的延遲,否則圖標不會顯示。迷人。

答案1

使用gtk_window_set_icon或類似的(有 _from_file 變體和 Glade 整合)。

如果沒有root權限,我認為您無法訪問圖標緩存,並且及時加載桌面文件似乎不是您發現的可靠方法。

相關內容