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 创建的。

我的问题是 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.lnk必须可以使用 Wine 的驱动器映射进行访问;它可以很好地处理.lnkWine 中安装的文件。)

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

link.lnk将提取to指向的可执行文件中的第一个图标icon.png

相关内容