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

秋霞电理论影完整版-免费看男女性的软件-玩小学生幼处的方法
秋霞电理论影完整版
栏目分类
秋霞电理论影完整版-免费看男女性的软件-玩小学生幼处的方法
首页
秋霞电理论影完整版
免费看男女性的软件
玩小学生幼处的方法
WSLG微软开源的Windows子系统GUI增强
发布日期:2021-09-24 17:16    点击次数:93

 

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中添加以下方法来关闭系统发行版:

[wsl2]  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的预览驱动程序。

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

wsl --install -d Ubuntu 

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

已有WSL安装

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

wsl –update 

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

wsl --list -v 

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

wsl --set-version _distro_name_ 2 

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

wsl -shutdown 
更新WSL + WSLG

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

wsl --update 

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

wsl -shutdown 
运行桌面应用

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

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

安装和运行 GUI 应用程序

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

更新可用包列表

## Update list of available packages sudo apt update ## Gedit sudo apt install gedit -y ## GIMP sudo apt install gimp -y ## Nautilus sudo apt install nautilus -y ## VLC sudo apt install vlc -y ## X11 apps sudo apt install x11-apps -y ## Google Chrome cd /tmp sudo wget google/linux/direct/google-chrome-stable_current_amd64.deb sudo dpkg -i google-chrome-stable_current_amd64.deb sudo apt install --fix-broken -y sudo dpkg -i google-chrome-stable_current_amd64.deb ## Microsoft Teams cd /tmp sudo curl -L -o "./teams.deb" " teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb" sudo apt install ./teams.deb -y ## Microsoft Edge Browser 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 sudo apt install /tmp/edge.deb –y 

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

终端中启动

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

xcalc, xclock, xeyes gimp gedit ~/.bashrc nautilus vlc google-chrome teams microsoft-edge 
总结

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

【编辑推荐】

鸿蒙官方战略合作共建——HarmonyOS技术社区 如何使用Injector实现Windows下的内存注入 Ubuntu 21.10 在性能测试中几乎完胜 Windows 10/11 Ubuntu 21.10 与 Windows 10/11的性能差异有哪些? 微软证实:在M1芯片上不支持运行Windows 11系统 18 个终端命令行工具,绝对让你感觉自己像个10倍程序员