管理 WSL 直接安装软件的 Windows 开始菜单和图标

Fra*_*gan 5 ubuntu windows-subsystem-for-linux windows-11

WSL 动态虚拟通道插件 (WSLDVCPlugin) 似乎在为使用系统包管理器安装的 Linux GUI 应用程序创建开始菜单链接/可搜索性方面做得非常出色(对我来说,它在 Ubuntu 中很合适)。

WSLDVCPlugin 还根据应用程序的原始 Linux 图标创建一个 Windows 图标,并将企鹅固定在图标的右下角,以便它在任务栏上以 WSL 的形式突出显示。

我想对我在没有包管理器的情况下安装的应用程序使用相同的“开始”菜单和图标功能(特别是我希望将其用于 Anaconda navigator 和 Firefox 开发人员版本)。我对如何实现它有一些想法,但目前没有足够的 Linux 和 WSL 知识来实现​​它。

Not*_*1ds 5

简短回答

对于您希望 Windows 创建“开始”菜单条目的每个应用程序,创建一个<appname>.desktop文件。

解释

这看起来(当我尝试时似乎)非常简单。根据 WSLg 的 Github自述文件

Weston 使用此通道枚举所有 Linux GUI 应用程序(即具有 gui 类型的桌面文件条目的应用程序)及其启动命令行和图标。开源 WSLDVCPlugin 处理通过此通道发送的 Linux GUI 应用程序列表,并在 Windows 开始菜单中为它们创建链接。

因此,Linux 方面负责查找<appname>.desktop文件,就像通常在 Linux 桌面管理器中创建菜单条目一样。Microsoft 在其实现中利用了此机制,通过 RDP 将已安装应用程序的通知发送到 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'
Run Code Online (Sandbox Code Playgroud)

补充笔记

  • 在我的安装中(嵌套虚拟化 Skylake VM 中的 Win 11),“开始”菜单项会在一秒钟左右的时间内显示。

  • 请注意,该文件似乎确实.desktop需要位于/usr/share/applications. 在我的测试中~/.local/share/applications不起作用。

  • 另外,在我的测试中,桌面文件Terminal=true似乎被忽略。

  • 删除<appname>.desktop文件也会删除“开始”菜单条目。