Wineはスタートメニュー項目のイメージファイルをどのように生成しますか?

Wineはスタートメニュー項目のイメージファイルをどのように生成しますか?

アイコン(ICOファイル)のすべてのサイズをPNG画像に抽出することに焦点を当てます。EXEファイルから、Wineがこれを自動的に実行するようです。

インストール後foob​​ar2000、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その鍵が私の注意を引き付け、私はそれが次に基づいていることを発見しました。アイコンテーマ仕様。周囲を検索しながら、私は~/local/share/icons/hicolor/*/apps/このアイコンファイル(含まれているフォルダごと)を含むディレクトリを見つけまし3C17_foobar2000.0.pngた。

私の質問は、Wineがアプリケーション(またはショートカットファイル)からこれらの画像ファイルをどのように生成するのですか?

答え1

ワインを含む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.lnkWineのドライブマッピングを使用してアクセスできる必要があると思います。Wineにインストールされている.lnkファイルをうまく処理します。)

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

link.lnk指す実行可能ファイルの最初のアイコンを抽出しますicon.png

関連情報