在已经发布的deepin V23 beta版本中,深度操作系统正式适配了WSL!
WSL是Windows Subsystem for Linux的缩写,它是一种可以让用户在Windows上运行Linux的技术。WSL让你能够在Windows和Linux之间自由切换或集成,使用开源的工具和环境开发或测试Linux相关的项目,同时享受Windows对硬件的支持和性能的优化,运行Linux的应用程序并体验各种Linux发行版。
作为微软的一项新功能,WSLg让用户可以在WSL2里运行Linux GUI应用程序,并无缝地集成到Windows桌面。WSLg包含了一个Wayland服务器、一个RDP客户端和一个PulseAudio服务器,用以支持图形、音频和输入设备。
接下来,我们将分享deepin V23 beta适配WSL的过程,包括方案的选择、适配中的问题解决,以及实现核心目标的方法。
选择适配WSL的方案
我们选择了基于WSL2的适配方案,因为WSL2有WSLg扩展,可以提高性能,增强系统调用兼容性,也能让用户在Windows上也能享受deepin的美观界面和强大功能。
我们使用debootstrap工具制作根文件系统,它可以快速生成基本的Debian系统。为了适应WSL的命令行方式,我们只包含了几个必要的软件包,用户可以自行安装deepin的自研应用。另外,我们还利用了yuk7的WSLDL工具,它可以方便地安装、启动、配置和管理deepin WSL。
在适配WSL过程中,我们希望在WSL上实现完整的桌面环境。我们试过在WSL运行X服务器,用Windows的RDP客户端远程启动桌面环境,或是用WSL连接Windows的X服务器,但由于deepin V23 beta版本对桌面环境的启动方式有些变化,这些方法的体验都不好。最后,我们决定用WSLg运行deepin的自研应用,而不是一个完整的桌面环境。
适配WSL问题及处理
因为WSLg用的是Weston而不是deepin的KWin作为窗口管理器,所以使用deepin图形应用时,可能会遇到一些和原生Linux桌面环境不一样的问题。例如:
1. 安装平台插件后的设置选项位置异常
WSLg用RDP协议传输图形界面,但RDP协议不支持系统托盘图标,所以deepin图形应用在WSLg中无法显示设置选项,这会给用户调整配置或退出应用带来不便。我们的解决办法是在应用主窗口加一个设置按钮或菜单项,或者用命令行参数控制应用。
2. 冗余标题栏和边框
WSLg用Weston作为窗口管理器,Weston会给窗口加一个标题栏和边框,它们和deepin图形应用的标题栏和边框重复,影响窗口美观。我们的解决办法是让deepin图形应用检测是否在WSLg环境运行,并根据情况隐藏或调整自带的标题栏和边框。
3. 应用显示异常
WSLg用RDP协议传输图形界面,但RDP协议有一些限制或特性,比如不支持透明度、不支持硬件加速、不支持多屏幕等,这会让一些deepin图形应用在WSLg中显示不正常或功能不全。我们的解决办法是让deepin图形应用检测是否在WSLg环境下运行,并根据情况降低或关闭一些高级特性或效果。
deepin自研应用的运行效果
deepin的自研应用是系统的亮点之一,它们设计精良,功能强大,界面美观,交互友好,以下是用WSLg运行部分deepin的自研应用的效果图。
1. 深度终端
2. 深度画板
3. 深度相册
4. Windows菜单栏下显示应用列表
在完成deepin WSL应用安装后,再启动一次,Windows菜单栏下会显示注册安装的deepin应用。
deepin WSL让你在WSLg上享受deepin自研应用的完美体验,这是我们的一个重要目标。目前deepin WSL还处于测试阶段,可能存在一些性能、兼容性、稳定性等方面的问题或不足。我们正在对应用进行更多的测试,以便发现并解决问题,提升用户体验。
未来展望
非常感谢deepin社区的小伙伴在适配过程中给予的帮助与支持,也很感谢yuk7提供了WSLDL工具。
目前,我们在github的deepin-community组织下的deepin-rootfs项目发布了根文件和WSLDL的打包,用户可以自行下载,我们将提供使用教程。我们计划把deepin WSL发布到微软应用商店,让用户更方便地下载和更新。
希望deepin WSL为用户在Windows上提供一个新的选择。如果你想在Windows上尝试Linux或者使用deepin的应用程序,可以从deepin.zip下载。