WSL 动态虚拟通道插件(WSLDVCPlugin)似乎在为使用系统包管理器安装的 Linux GUI 应用程序创建开始菜单链接/可搜索性方面做得非常出色(对我来说,它适合 Ubuntu)。
WSLDVCPlugin 还根据应用程序的原始 Linux 图标创建一个 Windows 图标,并将企鹅固定在图标的右下角,以便它在任务栏上作为 WSL 脱颖而出。
我想对我安装的没有使用包管理器的应用程序使用相同的“开始”菜单和图标功能(具体来说,我希望它适用于 Anaconda navigator 和 Firefox 开发者版本)。我对如何做到这一点有一些想法,但目前没有足够的 Linux 和 WSL 知识来实现它。
答案1
简短回答
对于您希望 Windows 创建“开始菜单”条目的每个应用程序,创建一个<appname>.desktop
文件。
解释
这看起来(当我尝试时似乎也是如此)非常简单。根据 Github自述对于 WSLg:
Weston 使用此通道枚举所有 Linux GUI 应用程序(即具有 gui 类型的桌面文件条目的应用程序)及其启动命令行和图标。开源 WSLDVCPlugin 处理通过此通道发送的 Linux GUI 应用程序列表,并在 Windows 开始菜单中为它们创建链接。
因此,Linux 方面负责查找<appname>.desktop
文件,就像它通常在 Linux 桌面管理器中创建菜单条目一样。微软在其实施中利用了这一机制,通过 RDP 向 Windows 发送已安装应用程序的通知,插件会在 Windows 中创建“开始菜单”条目。
因此,要创建 Windows 开始菜单项,只需创建相应的“/usr/share/applications/.desktop”:
sudo bash -c 'cat << EOF > /usr/share/applications/<appname>.desktop
[Desktop Entry]
Type=Application
Name=<appname>
Exec=/path/to/app
EOF'
补充笔记
在我的安装中(嵌套虚拟化 Skylake VM 中的 Win 11),“开始”菜单项会在一秒钟左右内显示出来。
请注意,文件似乎
.desktop
确实需要在 中/usr/share/applications
。在我的测试中~/.local/share/applications
没有起作用。另外,在我的测试中,桌面文件似乎
Terminal=true
被忽略了。删除
<appname>.desktop
文件也会删除“开始菜单”项。