Wine

Wine 如何為開始菜單條目生成圖像文件?

  • December 8, 2019

著眼於從 EXE 文件中提取圖示(ICO 文件)的所有大小作為 PNG 圖像,我注意到 Wine 似乎會自動執行此操作。

安裝foobar2000後,Wine(我想)在 處創建了一個桌麵條目~/.local/share/applications/wine/Programs/foobar2000.desktop,包含以下內容:

[Desktop Entry]
Name=foobar2000
Exec=env WINEPREFIX="$HOME/.wine" wine C:\\\\windows\\\\command\\\\start.exe /Unix "$HOME/.wine/dosdevices/c:/users/Public/Start\\ Menu/Programs/foobar2000.lnk"
Type=Application
StartupNotify=true
Comment=Play, organize and tag your music.
Path=$HOME/.wine/dosdevices/c:/Program Files (x86)/foobar2000
Icon=3C17_foobar2000.0

最終,Icon密鑰引起了我的注意,我發現它根據Icon Theme Specification解決了。到處尋找,我找到了~/local/share/icons/hicolor/*/apps/包含這些圖示文件的目錄(每個文件夾都包含3C17_foobar2000.0.png),我再次假設是 Wine 創建的。

我的問題是 Wine 是如何從應用程序(或快捷方式文件)生成這些圖像文件的?

Wine 包含一個winemenubuilder處理此問題的程序:它採用 Windows 快捷方式,並創建一個匹配的 FDO (FreeDesktop.Org).desktop文件。圖示提取是其中的一部分,由open_module_icon相關函式處理。提取圖示,winemenubuilder找到與快捷方式對應的執行檔(如果需要,可以選擇等待它被創建),並使用 Wine 的LoadResource函式載入它包含的資源,找到圖示,並將它們轉換為適當的圖像格式。

wine winemenubuilder /path/to/link.lnk

會將連結轉換為.desktop文件,在 中~/.local/share/applications/wine/Programs,提取可用圖示,轉換它們,並將它們儲存在 的適當子目錄中~/.local/share/icons。(我認為/path/to/link.lnk必須可以使用 Wine 的驅動器映射進行訪問;它適用.lnk於已安裝在 Wine 中的文件。)

wine winemenubuilder -t /path/to/link.lnk /path/to/icon.png

link.lnk將提取to指向的執行檔中的第一個圖示icon.png

引用自:https://unix.stackexchange.com/questions/509360