WSLG微软开源的Windows子系统GUI增强

系统 Windows
WSL是个非常棒的系统,可以在Windows内核上直接运行Linux镜像,避免了通过虚拟机方式运行Linux。从而高效搞交互解决windows下运行Linux的问题。但是WSL图形交互功能不是很好,这对Windows用户来说这个显得略显生疏。

 [[423524]]

WSL是个非常棒的系统,可以在Windows内核上直接运行Linux镜像,避免了通过虚拟机方式运行Linux。从而高效搞交互解决windows下运行Linux的问题。但是WSL图形交互功能不是很好,这对Windows用户来说这个显得略显生疏。为了解决这个问题,微软今年开源了WSLG系统 (Windows Subsystem for Linux GUI) 的,其目的是Windows上以完全集成的桌面体验运行Linux 桌面应用程序。 本文请和虫虫一起来学习一下WSLG系统。

 

 

概述

WSLG支持在Windows环境下需要运行在 Linux自己桌面工具或应用程序的开发人员、科学家或爱好者提供友好的交互和高效体验。

WSLG 致力于让Linux GUI应用程序在Windows上使用起来感觉原生和自然。可以任务栏中、剪切/粘贴,WSLG支持Windows和 Linux桌面应用程序的无缝体验的工作流程。

系统架构

WSLG基于WSL虚拟机,Linux桌面个原生APP通过Xwayland,Pulse音频服务器,继承到Weston系统,再通过FreeRDP,WSLDVC Windows插件(mstsc.exe)和Windows交互,其架构图如下:

 

 

用户发行版

用户发行版都在同一个 WSL 虚拟机中针对Linux内核的单个实例运行。PC上的不同用户拥有自己的VM和WSL实例。其Linux 环境是用户级的是无法与其他 Windows用户共享。

系统发行版

WSLG系统发行版整个架构的核心和交互中心,其实质是一个容器化的Linux环境,系统发行版基于 Microsoft CBL-Mariner Linux,一个最小的Linux环境,用于以运行WSLG的各个部分。容器中运行WSLG XServer、Wayland 服务器和Pulse音频服务器。他们之间以及和用户发行版通过Soket进行通讯交互。用户发行版中预设了环境变量 DISPLAY、WAYLAND_DISPLAY 和 PULSE_SERVER用于应用这些组件服务,实现WSLG 开箱即用。

用户可以通过在c:\users\MyUser\.wslconfig中添加以下方法来关闭系统发行版:

 

  1. [wsl2] 
  2.  
  3. guiApplications=false 

 

每个WSL 2用户发行版都与其系统发行版实例配对。系统发行版与其配对的用户发行版部分隔离,在NS/PID/UTS命名空间中运行,但共享其他命名空间,例如 IPC允许跨边界共享内存优化。

系统发行版的每个实例都从其支持的VHD中以只读方式加载。当WSL重新启动时,对系统发行版的内存实例所做的任何修改(例如安装新包或创建新文件)都会被丢弃。

WSLGd

WSLGd是在init之后启动的第一个进程。 WSLGd启动Weston (使用 XWayland)、 PulseAudio 并通过mstsc.exe主机上以静默模式建立RDP连接。 RDP连接将保持活动状态并准备好显示正在启动的新GUI应用程序,没有任何连接建立延迟。 WSLGd以守护进程凡事监听这些进程,避免他们由于错误退出。

Weston

Weston 是Wayland项目的参考合成器,WSL的核心。在WSLG中对其扩展libweston 现有RDP后端,实现远程应用程序。WSLG还在其新增加了多显示器支持、剪切/粘贴、音频输入/输出等功能。

应用程序集成是通过名为RAIL(本地远程应用程序集成)和VAIL(本地集成虚拟化应用程序)的RDP技术实现的。RAIL和VAIL之间的主要区别在于像素如何从RDP服务器传输到 RDP 客户端。在RAIL中,假设服务器和客户端运行在通过网络通信的不同物理系统上,因此需要通过 RDP 传输复制像素。在VAIL中,Server 和Client位于同一个物理系统上,可以跨 Guest/Host VM边界共享内存。

RAIL-Shell

WSLG中还引入了RAIL Shell用于帮助将单个窗口从Linux映射到 Windows,该 shell 非常简单,不涉及任何实际的小部件或shell拥有的像素。

FreeRDP

Weston 利用FreeRDP来实现其后端RDP服务器。FreeRDP用于根据RDP协议规范直线RDP 服务器到RDP客户端(Windows 上的 mstsc)的所有通信进行编码。 它还用于解码从RDP客户端到RDP服务器的所有流量。

Pulse音频插件

对于音频输入(麦克风)和输出(扬声器/耳机),WSLG 运行 Pulse音频服务器。WSLG 使用两个RDP插件的用于接收音频输出和音频输入,插件有效地在 Pulse Server和Weston RDP服务器之间传输音频样本。音频流由Weston RDP服务器合并到RDP传输上,从而有效地在所有场景(桌面/RAIL/VAIL 风格远程处理)中启用Weston RDP后端中的音频输入/输出。

WSLDVCPlugin

WSLG在Weston RDP 服务器和Windows主机上运行的mstsc RDP客户端之间使用自定义虚拟通道。Weston 使用该通道枚举所有Linux GUI应用程序(即具有Gui 类型的桌面文件条目的应用程序)及其启动命令行和图标。 WSLDVCPlugin 处理通过此通道发送的Linux GUI应用程序列表,并在Windows开始菜单中为其创建链接。

安装

先决条件

Windows 10 Insider Preview内部版本 21362+

WSLG 将与即将发布的Windows一起普遍可用。要访问 WSLG 的预览版,需要加入预览体验并从测试版或开发频道运行Windows 10预览版本。

建议在为WSL启用虚拟 GPU (vGPU) 的系统上运行 WSLG,以便可以从硬件加速OpenGL渲染。可以在下面找到合作伙伴提供的支持 WSL的预览驱动程序。

从具有管理员权限的命令提示符运行命令

 

  1. wsl --install -d Ubuntu 

然后在出现提示时重新启动。

已有WSL安装

对于已经安了WSL的用户,并且想要更新到包含WSLG的最新版本的WSL,可以运行命令

 

  1. wsl –update 

注意,WSLG仅与WSL 2兼容,并且不适用WSL 1模式下的发行版。可以从通过命令提示符查询当前使用发行版和WSL版本。

 

  1. wsl --list -v 

如果为WSL 1模式,需要切换到WSL 2:

 

  1. wsl --set-version _distro_name_ 2 

通过管理员模式命令提示符运行此命令来重新启动WSL,确保首先保存所有挂起的工作:

 

  1. wsl -shutdown 

更新WSL + WSLG

要更新到为预览发布的最新版本的WSL和WSLG,只需从管理员模式命令提示符或powershell运行

 

  1. wsl --update 

需要重新启 WSL才能使更改生效,需要重启WSL

 

  1. wsl -shutdown 

运行桌面应用

如果已经安装了Ubuntu按照这些说明进行 Linux 发行版,会找到一个Ubuntu开始菜单中的图标,启动它。这将启动WSL 2 VM在该VM中启动 Ubuntu WSL发行版,并为提供一个与之交互的终端。

对于 Linux 发行版,可以使用 wsl --list --online命令从提升的命令提示符选择的可用的发行版。

安装和运行 GUI 应用程序

可以通过Linux终端运行以下命令来下载和安装一些流行的应用程序(Ubuntu为例)。

更新可用包列表

 

  1. ## Update list of available packages 
  2. sudo apt update 
  3. ## Gedit 
  4. sudo apt install gedit -y 
  5. ## GIMP 
  6. sudo apt install gimp -y 
  7. ## Nautilus 
  8. sudo apt install nautilus -y 
  9. ## VLC 
  10. sudo apt install vlc -y 
  11. ## X11 apps 
  12. sudo apt install x11-apps -y 
  13. ## Google Chrome 
  14. cd /tmp 
  15. sudo wget google/linux/direct/google-chrome-stable_current_amd64.deb 
  16. sudo dpkg -i google-chrome-stable_current_amd64.deb 
  17. sudo apt install --fix-broken -y 
  18. sudo dpkg -i google-chrome-stable_current_amd64.deb 
  19. ## Microsoft Teams 
  20. cd /tmp 
  21. sudo curl -L -o "./teams.deb" " teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb" 
  22. sudo apt install ./teams.deb -y 
  23. ## Microsoft Edge Browser 
  24. sudo curl packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-dev/microsoft-edge-dev_93.0.946.1-1_amd64.deb -o /tmp/edge.deb 
  25. sudo apt install /tmp/edge.deb –y 

 

安装这些应用程序后,就可以在开始菜单中的发行版名称下找到它们。例如 Ubuntu -> Microsoft Edge。

终端中启动

也可以使用命令从终端窗口启动这些:

 

  1. xcalc, xclock, xeyes 
  2. gimp 
  3. gedit ~/.bashrc 
  4. nautilus 
  5. vlc 
  6. google-chrome 
  7. teams 
  8. microsoft-edge 

 

总结

WSLG作为对微软子系统的图形增强工具,可以实现高效搞交互的Linux桌面应用使用,对不熟悉Linux Shell用户提供友好的橄榄枝,让其可以以更加熟悉的方式进行Linux使用和学习。该项目开源不到半年,其Github仓库(github/microsoft/wslg)就已经收获5.8k的星星,其受欢迎程度可见一斑,希望大家尝试,也可以对其提交PR参与贡献。

 

责任编辑:华轩 来源: 今日头条
相关推荐

2020-09-28 16:23:54

Windows将被微软

2021-06-02 09:45:21

WSLgWindows 10Linux

2021-11-09 16:14:20

Windows 11操作系统微软

2021-11-19 10:37:06

Windows 11操作系统微软

2021-03-21 19:00:21

微软Windows 10Windows

2021-10-19 10:15:06

微软Windows 11Windows

2021-07-22 08:03:08

Windows 操作系统Linux

2018-04-23 08:56:20

微软 Windows Linux

2021-08-01 08:12:55

Windows 微软WSL

2021-10-20 22:14:06

微软Windows 11Windows

2017-01-16 15:29:02

Windows 10LinuxUbuntu

2016-10-17 08:49:15

WindowsLinuxArch Linux

2022-10-21 07:49:29

Windows微软

2021-10-21 18:57:55

Windows 11操作系统微软

2021-11-14 11:45:57

Windows 11操作系统微软

2021-09-05 06:43:21

Windows 11操作系统微软

2015-07-14 09:57:44

微软开源Windows

2011-10-31 09:36:38

微软windows serGUI

2011-10-31 09:38:06

Windows serGUI

2023-06-13 11:00:52

点赞
收藏

51CTO技术栈公众号