deepin V23成功適配WSL,我們做了什么?


在已經(jīng)發(fā)布的deepin V23 beta版本中,深度操作系統(tǒng)正式適配了WSL!
WSL是Windows Subsystem for Linux的縮寫,它是一種可以讓用戶在Windows上運行Linux的技術(shù)。WSL讓你能夠在Windows和Linux之間自由切換或集成,使用開源的工具和環(huán)境開發(fā)或測試Linux相關(guān)的項目,同時享受Windows對硬件的支持和性能的優(yōu)化,運行Linux的應(yīng)用程序并體驗各種Linux發(fā)行版。
作為微軟的一項新功能,WSLg讓用戶可以在WSL2里運行Linux GUI應(yīng)用程序,并無縫地集成到Windows桌面。WSLg包含了一個Wayland服務(wù)器、一個RDP客戶端和一個PulseAudio服務(wù)器,用以支持圖形、音頻和輸入設(shè)備。
接下來,我們將分享deepin V23 beta適配WSL的過程,包括方案的選擇、適配中的問題解決,以及實現(xiàn)核心目標(biāo)的方法。
選擇適配WSL的方案
我們選擇了基于WSL2的適配方案,因為WSL2有WSLg擴展,可以提高性能,增強系統(tǒng)調(diào)用兼容性,也能讓用戶在Windows上也能享受deepin的美觀界面和強大功能。
我們使用debootstrap工具制作根文件系統(tǒng),它可以快速生成基本的Debian系統(tǒng)。為了適應(yīng)WSL的命令行方式,我們只包含了幾個必要的軟件包,用戶可以自行安裝deepin的自研應(yīng)用。另外,我們還利用了yuk7的WSLDL工具,它可以方便地安裝、啟動、配置和管理deepin WSL。
在適配WSL過程中,我們希望在WSL上實現(xiàn)完整的桌面環(huán)境。我們試過在WSL運行X服務(wù)器,用Windows的RDP客戶端遠(yuǎn)程啟動桌面環(huán)境,或是用WSL連接Windows的X服務(wù)器,但由于deepin V23 beta版本對桌面環(huán)境的啟動方式有些變化,這些方法的體驗都不好。最后,我們決定用WSLg運行deepin的自研應(yīng)用,而不是一個完整的桌面環(huán)境。
適配WSL問題及處理
因為WSLg用的是Weston而不是deepin的KWin作為窗口管理器,所以使用deepin圖形應(yīng)用時,可能會遇到一些和原生Linux桌面環(huán)境不一樣的問題。例如:
1. 安裝平臺插件后的設(shè)置選項位置異常
WSLg用RDP協(xié)議傳輸圖形界面,但RDP協(xié)議不支持系統(tǒng)托盤圖標(biāo),所以deepin圖形應(yīng)用在WSLg中無法顯示設(shè)置選項,這會給用戶調(diào)整配置或退出應(yīng)用帶來不便。我們的解決辦法是在應(yīng)用主窗口加一個設(shè)置按鈕或菜單項,或者用命令行參數(shù)控制應(yīng)用。
2. 冗余標(biāo)題欄和邊框
WSLg用Weston作為窗口管理器,Weston會給窗口加一個標(biāo)題欄和邊框,它們和deepin圖形應(yīng)用的標(biāo)題欄和邊框重復(fù),影響窗口美觀。我們的解決辦法是讓deepin圖形應(yīng)用檢測是否在WSLg環(huán)境運行,并根據(jù)情況隱藏或調(diào)整自帶的標(biāo)題欄和邊框。
3. 應(yīng)用顯示異常
WSLg用RDP協(xié)議傳輸圖形界面,但RDP協(xié)議有一些限制或特性,比如不支持透明度、不支持硬件加速、不支持多屏幕等,這會讓一些deepin圖形應(yīng)用在WSLg中顯示不正常或功能不全。我們的解決辦法是讓deepin圖形應(yīng)用檢測是否在WSLg環(huán)境下運行,并根據(jù)情況降低或關(guān)閉一些高級特性或效果。
deepin自研應(yīng)用的運行效果
deepin的自研應(yīng)用是系統(tǒng)的亮點之一,它們設(shè)計精良,功能強大,界面美觀,交互友好,以下是用WSLg運行部分deepin的自研應(yīng)用的效果圖:
1. 深度終端

2. 深度畫板

3. 深度相冊

4. Windows菜單欄下顯示應(yīng)用列表
在完成deepin WSL應(yīng)用安裝后,再啟動一次,Windows菜單欄下會顯示注冊安裝的deepin應(yīng)用。

deepin WSL讓你在WSLg上享受deepin自研應(yīng)用的完美體驗,這是我們的一個重要目標(biāo)。目前deepin WSL還處于測試階段,可能存在一些性能、兼容性、穩(wěn)定性等方面的問題或不足。我們正在對應(yīng)用進(jìn)行更多的測試,以便發(fā)現(xiàn)并解決問題,提升用戶體驗。
未來展望
非常感謝deepin社區(qū)的小伙伴在適配過程中給予的幫助與支持,也很感謝yuk7(https://github.com/yuk7)提供了WSLDL工具。
目前,我們在github的deepin-community組織下的deepin-rootfs(https://github.com/deepin-community/deepin-rootfs)項目發(fā)布了根文件和WSLDL的打包,用戶可以自行下載,我們將提供使用教程。我們計劃把deepin WSL發(fā)布到微軟應(yīng)用商店,讓用戶更方便地下載和更新。
希望deepin WSL為用戶在Windows上提供一個新的選擇。如果你想在Windows上嘗試Linux或者使用deepin的應(yīng)用程序,可以從deepin.zip(https://cdimage.deepin.com/WSL/deepin.zip)下載。
下一篇,我們將詳細(xì)講述deepin WSL安裝教程。