Enabling the Windows Subsystem for Linux to include support for Wayland and X server related scenarios

Overview

Welcome to WSLg

WSLg is short for Windows Subsystem for Linux GUI and the purpose of the project is to enable support for running Linux GUI applications (X11 and Wayland) on Windows in a fully integrated desktop experience.

WSLg provides an integrated experience for developers, scientists or enthusiasts that prefer or need to run Windows on their PC but also need the ability to run tools or applications which works best, or exclusively, in a Linux environment. While users can accomplish this today using a multiple system setup, with individual PC dedicated to Windows and Linux, virtual machine hosting either Windows or Linux, or an XServer running on Windows and projected into WSL, WSLg provides a more integrated, user friendly and productive alternative.

WSLg strives to make Linux GUI applications feel native and natural to use on Windows. From integration into the Start Menu for launch to appearing in the task bar, alt-tab experience to enabling cut/paste across Windows and Linux applications, WSLg enables a seamless desktop experience and workflow leveraging Windows and Linux applications.

WSLg Integrated Desktop

Installing WSLg

Pre-requisites

  • Windows 10 Insider Preview build 21362+

    • WSLg is going to be generally available alongside the upcoming release of Windows. To get access to a preview of WSLg, you'll need to join the Windows Insider Program and be running a Windows 10 Insider Preview build from the dev channel.
  • It recommended to run WSLg on a system with virtual GPU (vGPU) enabled for WSL so you can benefit from hardware accelerated OpenGL rendering. You can find preview driver supporting WSL from each of our partners below.

Install instructions (Fresh Install - no prior WSL installation)

From a command prompt with administrator privileges, run the command wsl --install -d Ubuntu, then reboot when prompted.

After reboot the installation will continue. You'll be asked to enter a username and password. These will be your Linux credential, they can be anything you want and don't have to match your Windows credentials.

Voila! WSL and WSLg are installed and ready to be used!

Install instructions (Existing WSL install)

If you have an existing WSL installation without WSLg and want to update to the latest version of WSL which includes WSLg, run the command wsl --update from an elevated command prompt.

Please note that WSLg is only compatible with WSL 2 and will not work for WSL distribution configured to work in WSL 1 mode. Verify that your Linux distro is configured for running in WSL 2 mode, if not switch to WSL 2. While you can continue to run Linux distro in WSL 1 mode after installing WSLg if you so desired, a distro configured to run in WSL 1 mode will not be able to communicate with WSLg and will not be able to run GUI applications.

You can list your currently installed distro and the version of WSL they are configured for using the following command from an elevated command prompt.

   wsl --list -v

If running in version 1 mode, switch to version 2. This can take a while.

   wsl --set-version _distro_name_ 2

Restart WSL by running this command from an elevated command prompt, make sure to save any pending work first:

    wsl --shutdown

Updating WSL + WSLg

To update to the latest version of WSL and WSLg released for preview, simply run wsl --update from an elevated command prompt or powershell.

You'll need to restart WSL for the changes to take effect. You can restart WSL by running wsl --shutdown from an elevated command prompt. If WSL was currently running, it will shutdown, make sure to first save any in progress work! WSL will be automatically restarted the next time you launch a WSL application or terminal.

First Launch

If you have installed the Ubuntu Linux distro per these instructions, you'll find an Ubuntu icon in your start menu, launch it. This will launch the WSL 2 VM, launch the Ubuntu WSL distro in that VM and give you a terminal to interact with it. Voila! You're running Linux on Windows!

If you would like to explore additional Linux distributions built for WSL, you can use the wsl --list --online command from an elevated command prompt to enumerate the list of available distributions for your system. You can have multiple Linux distributions installed within WSL and they will happily coexist side-by-side, so don't be scare to experiment and try things out.

Congrats you are done and ready to use GUI apps!

Install and run GUI apps

If you want to get started with some GUI apps, you can run the following commands from your Linux terminal to download and install some popular applications. If you are using a different distribution than Ubuntu, it may be using a different package manager.

## Update all packages in your distro
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 https://dl.google.com/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" "https://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 https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-dev/microsoft-edge-dev_91.0.852.0-1_amd64.deb -o /tmp/edge.deb
sudo apt install /tmp/edge.deb -y

Once these applications are installed, you'll find them in your start menu under the distro name. For example Ubuntu -> Microsoft Edge. You can also launch these from your terminal window using the commands:

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

WSLg Architecture Overview

WSLg Architecture Overview

User Distro

The user distro is essentially the WSL distribution you are using for your Linux work. You can use the command wsl --list --online from an elevated Windows command prompt to list the WSL distributions available on your system. You can run multiple user distros side-by-side and they will peacefully coexist, so don't be afraid of trying out new distro. Each user distro will be paired with a unique instance of the system distro, but you can still interact across GUI applications running in different user distro seamlessly, such as cut/paste between them. The underlying containerization of the various userspace should be invisible to you.

All user and system distros for a particular Windows user run within the same WSL virtual machine against a single instance of the Linux kernel. Different Windows users on a PC have their own VM and instance of WSL. Your Linux environment is guaranteed to always be your own and not shared with other Windows users on the same PC.

WSLg System Distro

The system distro is where all of the magic happens. The system distro is a containerized Linux environment where the WSLg XServer, Wayland server and Pulse Audio server are running. Communication socket for each of these servers are projected into the user distro so client applications can connect to them. We preconfigure the user distro environment variables DISPLAY, WAYLAND_DISPLAY and PULSE_SERVER to refer these servers by default so WSLg lights up out of the box.

Users wanting to use different servers than the one provided by WSLg can change these environment variables. User can also choose to turn off the system distro entirely by adding the following entry in their .wslconfig file (located at c:\users\MyUser\.wslconfig). This will turn off support for GUI applications in WSL.

[wsl2]
guiApplications=false

The system distro is based on the Microsoft CBL-Mariner Linux. This is a minimal Linux environment, just enough to run the various pieces of WSLg. For details on how to build and deploy a private system distro please see our build instructions.

Every WSL 2 user distro is paired with its own instance of the system distro. The system distro runs partially isolated from the user distro to which it is paired, in it's own NS/PID/UTS namespace but shares other namespaces such as IPC, to allow for shared memory optimization across the boundary.

While a user can get a terminal into the system distro, the system distro is not meant to be used directly by users. Every instance of the system distro is loaded read-only from it's backing VHD. Any modifications, made to the in-memory instance of the system distro (such as installing new packages or creating a new file), is effectively discarded when WSL is restarted. The reason we do this is to enable a servicing model for the system distro where we replace the old one with the new one without having to worry about migrating any user data contained within. We use a read-only mapping such that the user gets a well known discard behavior on any changes, every time WSL is restarted, instead of getting a surprise when WSL is serviced.

Although the Microsoft published WSLg system distro as read-only, we do want to encourage folks to tinker with it and experiment. Although we expect very few folks to actually need or want to do that, we've shared detailed instruction on our contributing page on how to both build and deploy a private version of the system distro. Most users who just want to use GUI applications in WSL don't need to worry about those details.

WSLGd

WSLGd is the first process to launch after init. WSLGd launches Weston (with XWayland), PulseAudio and establishes the RDP connection by launching mstsc.exe on the host in silent mode. The RDP connection will remain active and ready to show a new GUI applications being launch on a moment's notice, without any connection establishment delays. WSLGd then monitors these processes and if they exit by error (say as a result of a crash), it automatically restarts them.

Weston

Weston is the Wayland project reference compositor and the heart of WSLg. For WSLg, we've extended the existing RDP backend of libweston to teach it how to remote applications rather than monitor/desktop. We've also added various functionality to it, such as support for multi-monitor, cut/paste, audio in/out, etc...

The application integration is achieved through an RDP technology called RAIL (Remote Application Integrated Locally) and VAIL (Virtualized Application Integrated Locally). The main difference between RAIL and VAIL is how pixels are transported across from the RDP server to the RDP client. In RAIL, it is assumed that the Server and Client are running on different physical systems communicating over the network and thus pixels need to be copied over the RDP transport. In VAIL, it is understood that the Server and Client are on the same physical system and can share memory across the Guest/Host VM boundary. We've added support for both RAIL and VAIL to the libweston RDP backend, although for WSLg only the VAIL support is effectively used. While building WSLg, we first implemented RAIL while the necessary pieces enabling the switch to VAIL were being developed in parallel. We decided to keep that support in as it could reuse in other interesting scenarios outside of WSLg, for example for remoting application from a Pi running Linux. To share memory between the Linux guest and Windows host we use virtio-fs.

RAIL-Shell

Weston is modular and has various shells today, such as the desktop shell, fullscreen shell (aka kiosk), and automative shell. For WSLg we introduced a new shell called the RAIL Shell. The purpose of the RAIL Shell is to help with the remoting of individual windows from Linux to Windows, as such the shell is very simplistic and doesn't involve any actual widgets or shell owned pixels.

FreeRDP

Weston leverages FreeRDP to implement its backend RDP Server. FreeRDP is used to encode all communications going from the RDP Server (in Weston) to the RDP Client (mstsc on Windows) according to the RDP protocol specifications. It is also used to decode all traffic coming from the RDP Client into the RDP server.

Pulse Audio Plugin

For audio in (microphone) and out (speakers/headphone) WSLg runs a PulseAudio server. WSLg uses a sink plugin for audio out, and a source plugin for audio in. These plugins effectively transfer audio samples between the PulseServer and the Weston RDP Server. The audio streams are merged by the Weston RDP Server onto the RDP transport, effectively enabling audio in/out in the Weston RDP backend across all scenarios (Desktop/RAIL/VAIL style remoting), including WSLg.

WSL Dynamic Virtual Channel Plugin (WSLDVCPlugin)

WSLg makes use of a custom RDP virtual channel between the Weston RDP Server and the mstsc RDP Client running on the Windows host. This channel is used by Weston to enumerate all Linux GUI applications (i.e. applications which have a desktop file entry of type gui) along with their launch command line and icon. The open source WSLDVCPlugin processes the list of Linux GUI applications sent over this channel and creates links for them in the Windows start menu.

OpenGL accelerated rendering in WSLg

While WSLg works with or without virtual GPU support, if you intend to run graphics intensive applications such as Blender or Gazebo, it is best to be running on a system with a GPU and driver that can support WSL. An overview of our vGPU architecture and how we make it possible for Linux applications to access the GPU in WSL is available at our DirectX blog.

Support for OpenGL accelerated rendering is made possible through the work our D3D team has done with Collabora and the Mesa community on creating a d3d12 Gallium driver.

Support for Linux, including support for WSLg, has been upstream and part of the Mesa 21.0 release. To take advantage of this acceleration, you'll need to update the version of Mesa installed in your user distro. It also requires that your distro vendor chose to build and publish the new d3d12 Gallium driver to their package repository. We're working with the various WSL distro publishers to inform them of these changes.

Please note that for the first release of WSLg, vGPU interops with the Weston compositor through system memory. If running on a discrete GPU, this effectively means that the rendered data is copied from VRAM to system memory before being presented to the compositor within WSLg, and uploaded onto the GPU again on the Windows side. As a result, there is a performance penalty proportionate to the presentation rate. At very high frame rates such as 600fps on a discrete GPU, that overhead can be as high as 50%. At lower frame rate or on integrated GPU, performance much closer to native can be achieved depending on the workload. Using a vGPU still provides a very significant performance and experience improvement over using a software renderer despite this v1 limitation.

WSLg Code Flow

WSLg builds on the great work of the Linux community and makes use of a large number of open source projects. Most components are used as-is from their upstream version and didn't require any changes to light up in WSLg. Some components at the heart of WSLg, in particular Weston, FreeRDP and PulseAudio, required changes to enable the rich WSLg integration. These changes aren't yet upstream. Microsoft is working with the community to share these contributions back with each project such that overtime WSLg can be built from upstream component directly, without the need for any WSLg specific modifications.

All of these in-flight contributions are kept in Microsoft mirror repos. We keep these mirrors up to date with upstream releases and stage our WSLg changes in those repos. WSLg pulls and builds code from these mirror repos as part of our Insider WSLg Preview releases. These mirrors are public and accessible to everyone. Curious developers can take a peek at early stages of our contribution by looking at code in those mirrors, keeping in mind that the final version of the code will likely look different once the contribution reaches the upstream project and is adapted based on the feedback receives by the various project owners. All of our mirrors follow the same model. There is a main branch which correspond to the upstream branch at our last synchronization point. We update the main branch from time to time to pick update from the upstream project. There is also a working branch that contains all of our in-flight changes. WSLg is built using the working branch from each of the mirror projects.

The projects that WSLg maintains mirrors for will change over time as in-flight contributions evolve. Once some contributions are upstream, it may no longer be necessary to maintain a mirror, at which point it will be removed and WSLg will start to leverage the upstream version of the component directly. As we light up new functionality in WSLg, new mirrors may be introduced to stage contributions to new components. As such, expect the list of mirrors to change overtime.

At this point in time, we have the following project mirrors for currently in-flight contributions.

Project Upstream Repo WSLg Mirror
Weston https://github.com/wayland-project/weston https://github.com/microsoft/Weston-mirror
FreeRDP https://github.com/FreeRDP/FreeRDP https://github.com/microsoft/FreeRDP-mirror
PulseAudio https://github.com/pulseaudio/pulseaudio https://github.com/microsoft/PulseAudio-mirror

The following is a high level overview of the currently in-flight contributions to each project contained within these mirrors.

Weston

WSLg leverages Weston as the Wayland compositor bridging the Linux and Windows worlds using RDP technology to remote application content between them. Weston already had an RDP backend, but it was limited to single-monitor-desktop remoting. We've greatly enhanced that RDP backend to include advanced functionality, such as multi-monitor support, clipboard integration for copy/paste, and audio in/out. We've enabled new remoting modes called RAIL (Remote Application Integrated Locally) and VAIL (Virtualized Application Integrated Locally), where individual applications, rather than desktops/monitors, are remoted. These changes are not specific to WSLg; they add functionality to the existing RDP backend and are reusable in other scenarios as well (i.e. using the new Weston RDP backend to remote application running on a Raspberry Pi to another device running an RDP client).

To enable rich integration in WSLg, we've also added a small plugin to the RDP backend specific to WSLg. In Weston, the plugin is responsible for attaching to the user distro and searching for installed applications (aka the desktop file). The plugin sends the Windows host a list of all applications found along with their launch commands and icons. On the Windows host, an open source mstsc plugin part of the WSLg project uses that information to create shortcuts for these Linux applications to the Windows Start Menu.

We've also fixed several bugs impacting various applications. Generally, these were problems that impacted Weston in all modes and were not specific to WSLg.

FreeRDP

Weston currently uses FreeRDP for its RDP Backend. WSLg continues to leverage FreeRDP and we have added support for a new RDP Protocol/Channel to enable VAIL optimized scenario as well as support for the WSLg plugin. We've also fixed various bugs that were impacting interops with mstsc or causing instability.

PulseAudio

For PulseAudio, our contributions focused on a sink and a source plugin that shuffle audio data between PulseAudio and the Weston RDP backend such that the audio data can be integrated over the RDP connection back to the host. There are no changes to the core of PulseAudio outside of adding these new plugins.

Contributing

If you would like to tinker with or contribute to WSLg, please see our CONTRIBUTING page for details, including how to build and run private a version of WSLg.

Reporting a non-security issues

For non-security related issues, such as reporting a bug or making a suggestion for a new feature, please use this project's issues tracker.

Reporting security issues

To report security issues with WSLg or any other Microsoft products, please follow the instructions detailed here.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

Comments
  • Cannot copy text *into* Kate editor, copying text *from* Kate works fine.

    Cannot copy text *into* Kate editor, copying text *from* Kate works fine.

    Environment

    Windows build number: Microsoft Windows NT 10.0.21257.0
    Your Distribution version: Ubuntu 20.04 LTS
    Your WSLG version: 0.2.9.0
    

    Steps to reproduce

    • Open kate
    • Open notepad (for verification)
    • Copy text in windows.
    • Paste in notepad (for verification)
    • try paste in kate -> no text pasted
    • copy text inside kate
    • Paste in notepad -> this direction works fine.

    WSL logs:

    • Attach WSLg logs from /mnt/wslg

    You can access the wslg logs using explorer at: \\wsl\<Distro-Name>\mnt\wslg (eg: \\wsl\Ubuntu-20.04\mnt\wslg)

    • puseaudio.log
    • weston.log
    • versions.txt

    versions.txt is not copyable (missing permissions): WSLG ( x86_64 ): 0.2.9+Branch.master.Sha.d49cb28cbf4be209347e3b48315081c1b38e4465 wayland: 8cd7c836eaceccc0e4ada7bdac43d86bfe3e0a0a FreeRDP: 297cb96a30ed00e1d7cba1ae9035cfeff82dbfd6 weston: a17db71354ad1c453e10a15805d907c52425499c pulseaudio: 2f0f0b8c3872780f15e275fc12899f4564f01bd5 sharedguestalloc: e2895c6a49105caaa651c05d4b96a46e5a621538

    pulseaudio.log weston.log

    Expected behavior

    copy/past of text works both directions

    Actual behavior

    can only copy text from linux to windows, but not other way round

    bug clipboard-integration 
    opened by mucki-at 143
  • Keyboard layout messed up for KBD_PORTUGUESE_BRAZILIAN_ABNT2.

    Keyboard layout messed up for KBD_PORTUGUESE_BRAZILIAN_ABNT2.

    When I try to type any text on any of the GUI applicatuins, the letter doesnt matches the keyboard layout (it works just fine from the command prompt).

    keyboard-layout fixinbound 
    opened by tb110188 89
  • Buffered keyboard inputs are continue to be dispatched to newly started application in X

    Buffered keyboard inputs are continue to be dispatched to newly started application in X

    Environment

    Windows build number: 21382
    Your Distribution version: Ubuntu 20.04, 20.10 and 21.04
    Your WSLg version: 1.0.19
    

    Steps to reproduce

    Open emacs from a terminal, such as Windows Terminal

    Use ctrl-x ctrl-c to close emacs

    Reopen the terminal, and click the text-entry butter and "c" will repeat over and over until you press "ctrl-c"

    This will persist upon reopening, until: You press "ctrl-c again" or
    you restart WSL with wsl --shutdown

    Expected behavior

    I expect "ctrl-x ctrl-c" to gracefully exit the program, without resulting in something being hung, which waits for the next ctrl-c to stop the key entry.

    Actual behavior

    See attached screenshot

    image

    bug duplicate fixinbound 
    opened by EricPell 42
  • Attempting to run GUI apps returns an error

    Attempting to run GUI apps returns an error

    Environment

    Windows build number: Microsoft Windows [Version 10.0.21364.1]
    Your Distribution version: Ubuntu 20.04
    Your WSLg version: 1.0.17.1
    

    Steps to reproduce

    1. Update to Windows build 21364.
    2. Install special NVIDIA 470.14 driver.
    3. Run wsl --update.
    4. Reboot.
    5. Create new Ubuntu 20.04 WSL2 instance.
    6. Install GUI applications (x11-apps, Chrome, etc.).
    7. Attempt to run the applications.

    WSL logs:

    pulseaudio.log weston.log versions.txt

    Expected behavior

    GUI applications should open when run.

    Actual behavior

    Attempting to launch from the CLI returns the error: Error: Can't open display: :0.

    bug fixinbound 
    opened by zacharee 42
  • After most recent WSL update, WSL won't start

    After most recent WSL update, WSL won't start

    Environment

    Windows build number: 10.0.21364.0
    Your Distribution version: Ubuntu 18.04
    Your WSLg version: 1.0.17.1
    WSL Update Version: 5.10.16
    

    Steps to reproduce

    1. Update WSL to support WSLg
    2. Run the distro

    WSL logs:

    wsl.zip

    Expected behavior

    WSL should start

    Actual behavior

    WSL fails to start with:

    The parameter is incorrect.
    
    [process exited with code 4294967295]
    

    The solutions is to disable WSLg as per: https://github.com/microsoft/WSL/issues/6839 by disabling it in .wslconfig file via

    [wsl2]
    guiapplications=false
    
    bug fixinbound 
    opened by hajekj 35
  • Too aggressive downwards scrolling, and resists upwards scrolling

    Too aggressive downwards scrolling, and resists upwards scrolling

    Environment

    Windows build number: 21364.1
    Your Distribution version: Ubuntu 20.10
    Your WSLg version: unknown
    

    Steps to reproduce

    1. apt install firefox -y (or epiphany-browser or nautilus)
    2. firefox (or epiphany-browser or nautilus)
    3. Visit any tall webpage
    4. Scroll downwards the smallest amount possible
    5. Scroll upwards the smallest amount possible

    Expected behavior

    It should scroll down by about 40-50px, and up by about 40-50px.

    Actual behavior

    It scrolls ~2000px downwards per tick. It resists scrolling upwards, and need to repeat it multiple times before it finally scrolls ~10px upwards.

    Hardware:

    Synaptics Precision TouchPad (Lenovo)

    WSL logs:

    https://aka.ms/AAc0u5v (feedbackid b6a23cbb-c7f7-4d6e-a2b1-66d85f95bc0c)

    bug fixinbound 
    opened by da2x 30
  • Unable to init server: Could not connect: Connection refused (gedit:1859): Gtk-WARNING :  cannot open display:)

    Unable to init server: Could not connect: Connection refused (gedit:1859): Gtk-WARNING : cannot open display:)

    Can anyone help-me with this issue: **Unable to init server: Could not connect: Connection refused (gedit:1859): Gtk-WARNING : 18:14:00.048: cannot open display:

    wsl --update Checking for updates... There are no updates available. Versão do kernel: 5.10.60.1

    wsl -l -v

    NAME                            STATE           VERSION
    * Ubuntu                        Running          2
     docker-desktop            Running          2
     docker-desktop-data    Running          2
    

    in PowerShell 7 I have this result When I try found CBL Mariner PS C:\Users\neuberfran> wsl --system There is no distribution with the given name.

    wslG-ubuntu2004-ISSUE

    I tried this:

    https://stackoverflow.com/questions/60284542/wsl-gedit-unable-to-init-server-could-not-connect-connection-refused

    But not solved

    bug 
    opened by neuberfran 26
  • X-11 problem

    X-11 problem

    [email protected]:~$ sudo apt install x-11 apps -y Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package x-11 E: Unable to locate package apps

    opened by bayvista170 25
  • WSLg keeps display always awake (application keeps caret blinking).

    WSLg keeps display always awake (application keeps caret blinking).

    I am not 100% sure that it's connected, but have checked it a few times and only when app under WSLg was running my displays wouldn't go off.

    Environment

    Windows build number: 21364 Your Distribution version: Ubuntu 20.04 / 21.04 Your WSLg version: 1.0.19

    Steps to reproduce

    Setup display to go off after 1 minute. Run any gui app (PHPStorm in my case). Lock your PC (wait 1 minute).

    Expected behavior

    Display should go off after specified time when WSLg app is running.

    Actual behavior

    Display won't go off.

    If I can provide any logs that might help troubleshoot - happy to do so.

    bug 
    opened by fliespl 24
  • Building the WSLg System Distro, It is not work.

    Building the WSLg System Distro, It is not work.

    Environment

    Windows build number: 10.0.21376.0
    Your Distribution version: 20.04
    Your WSLg version: 1.0.19
    

    Steps to reproduce

    CONTRIBUTING.md system distro in accordance with the following rules, but it does not work. It's up and running on docker, so it's not created correctly.

    WSL

    PS D:\Users\noria> wsl --list --all
    Linux 用 Windows サブシステム ディストリビューション:
    Ubuntu (既定)
    docker-desktop
    docker-desktop-data
    Ubuntu-CommPrev
    PS D:\Users\noria>
    
    PS D:\Users\noria> type .wslconfig
    [wsl2]
    systemDistro=D:\\Users\\noria\\system.vhd
    PS D:\Users\noria>
    
    PS D:\Users\noria> dir D:\\Users\\noria\\system.vhd
    
        Directory: D:\Users\noria
    
    Mode                 LastWriteTime         Length Name
       ----                 -------------         ------ ----
    -a---          2021/05/15    17:59      364352000 system.vhd
    
    PS D:\Users\noria>
    
    PS D:\Users\noria> wsl --system
    指定された名前のディストリビューションはありません。
    PS D:\Users\noria>
    
    PS D:\Users\noria> wsl --system Ubuntu
    指定された名前のディストリビューションはありません。
    PS D:\Users\noria>
    

    "指定された名前のディストリビューションはありません。" tranlate "There is no distribution with the specified name."

    "wsl --system [DistroName]" in CONTRIBUTING.md This part of the "DistroName" doesn't know what you need to do.

    Docker

    I checked the image made of docker.

    PS D:\Users\noria> docker images
    REPOSITORY                 TAG         IMAGE ID       CREATED        SIZE
    system-distro-x64          latest      b265d8c1d0d5   3 hours ago    375MB
    ~~~~~~~~
    PS D:\Users\noria>
    
    PS D:\Users\noria> docker run --rm -it system-distro-x64 uname -a
    Linux 1d8d69b40d7d 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
    PS D:\Users\noria>
    
    PS D:\Users\noria> docker run --rm -it system-distro-x64 cat /etc/os-release
    NAME="Common Base Linux Mariner"
    VERSION="1.0.20210224"
    ID=mariner
    VERSION_ID=1.0
    PRETTY_NAME="CBL-Mariner/Linux"
    ANSI_COLOR="1;34"
    HOME_URL="https://aka.ms/cbl-mariner"
    BUG_REPORT_URL="https://aka.ms/cbl-mariner"
    SUPPORT_URL="https://aka.ms/cbl-mariner"
    PS D:\Users\noria>
    

    WSL logs:

    • Attach WSLg logs from /mnt/wslg

    You can access the wslg logs using explorer at: \\wsl$\<Distro-Name>\mnt\wslg (e.g.: \\wsl$\Ubuntu-20.04\mnt\wslg)

    • puseaudio.log
    • weston.log
    • versions.txt

    Expected behavior

    Private version of the system distro works correctly.

    Actual behavior

    Private version of the system distro does not work properly.

    bug 
    opened by noriakia 22
  • GUI apps hang up on start when `/etc/wsl.conf` has `root=/`

    GUI apps hang up on start when `/etc/wsl.conf` has `root=/`

    Environment

    Windows build number: 10.0.21364.0
    Your Distribution version: Ubuntu 20.04
    Your WSLg version: I don't have 'Windows Subsystem for Linux GUI app support', but I do have this: 
    

    image

    Steps to reproduce

    1. Set host mount point to root: /etc/wsl.conf -> [automount] -> root=/
    2. Enable WSLg:
      • Remove guiApplications=false from .wslconfig
      • wsl --shutdown
    3. Run any GUI app.
      • In my example I use gnome-system-monitor and firefox, but it also works with everything else I tried.

    WSL logs:

    • Attach WSLg logs from /mnt/wslg
      • I don't have a /mnt/wslg directory, which I'm assuming is because I changed the host mount point from /mnt to /.
      • I do indeed have a /wslg directory, but it's empty.

    Expected behavior

    The app should start normally and display a window. See below a recording of how that happens with VcXsrv.

    Actual behavior

    1. The app doesn't print any errors.
    2. But it also doesn't print any of its normal output, which would indicate that it's working, but invisible.
    3. No new windows appear on the screen.
    4. No second instance of vmmem in the process list (as reported by Windows Task Manager).
      • I'm assuming a second instance of vmmem should appear, because the docs say the whole thing works by starting a second WSL2 distro.
    5. DISPLAY and WAYLAND_DISPLAY variables are present and look fine.

    Issue in WSLg

    doesnt

    Working normally via VcXsrv

    works

    bug 
    opened by fsoikin 22
  • WSL data usage not reported in Windows 11

    WSL data usage not reported in Windows 11

    Is your feature request related to a problem:

    I was just surprised when my laptop used 40GB of unaccounted cellular data over the course of two weeks and the only way I can explain this is by the display server on WSLg perhaps connecting via the cellular data with Windows.

    Describe the solution you'd like:

    WSL should have its entry in Network & Internet>Advanced network settings>Data usage. It should be transparent how much data WSL uses.

    Describe alternatives you've considered:

    It could be that Windows Update is using the cellular data but it won't be 40GB.

    Additional context:

    No response

    enhancement 
    opened by rommeswi 0
  • Make Windows fonts also available, not just user distro

    Make Windows fonts also available, not just user distro

    Windows build number:

    220000.100

    Your Distribution version:

    Ubuntu 22.04

    Your WSL versions:

    Latest

    Steps to reproduce:

    In https://github.com/microsoft/wslg/pull/824, I noticed Windows fonts were removed. Was that intentional? Why not allow both? We should be able to choose between both Windows fonts and the Linux ones we install as they are not all the same. Please add support back to load Windows fonts in addition to loading user distro fonts.

    WSL logs:

    No response

    WSL dumps:

    No response

    Expected behavior:

    I expect all fonts available in the OS to be available in addition to what's installed in a user distro within WSL2.

    Actual behavior:

    WSL2 user distro fonts are now loadable at expense of Windows fonts.

    enhancement 
    opened by WSLUser 2
  • Crashes due to shared memory issues

    Crashes due to shared memory issues

    Windows build number:

    10.0.22000.0

    Your Distribution version:

    Fedora 36

    Your WSL versions:

    WSL version: 0.66.2.0 Kernel version: 5.15.57.1 WSLg version: 1.0.42 MSRDC version: 1.2.3401 Direct3D version: 1.606.4 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.22000.856

    Steps to reproduce:

    My common windows are: Thunderbird Konsole Firefox Intellij

    After some time developing, windows menus stop opening which is the clue that shared memory errors are occurring. It happens randomly sometimes immediately, sometimes after hours.

    free shows plenty of available memory (I have 32G allocated but increasing to 48G doesn't help) with no swap being used.

    WSL logs:

    No response

    WSL dumps:

    No response

    Expected behavior:

    No response

    Actual behavior:

    WSL eventually becomes unresponsive or crashes due to shared memory issues.

    bug 
    opened by dciarniello 3
  • Graphics / Display is not loading

    Graphics / Display is not loading

    Windows build number:

    22000.856

    Your Distribution version:

    22.04

    Your WSL versions:

    WSL version: 0.66.2.0

    image image weston.log

    Steps to reproduce:

    Installed chrome.deb package

    unable to launch

    WSL logs:

    weston.log

    WSL dumps:

    No response

    Expected behavior:

    Graphics chrome window should launch

    Actual behavior:

    image

    bug fixinbound 
    opened by imPrashik 4
  • WSL2 Ubuntu GUI apps are not showing up in the Windows 11 Start Menu

    WSL2 Ubuntu GUI apps are not showing up in the Windows 11 Start Menu

    Windows build number:

    10.0.22622.0

    Your Distribution version:

    Ubuntu Preview 22.10

    Your WSL versions:

    WSL version: 0.66.2.0 Kernel version: 5.15.57.1 WSLg version: 1.0.42 MSRDC version: 1.2.3401 Direct3D version: 1.606.4 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.22622.590

    Steps to reproduce:

    1. Enable/Download WSL
    2. Download Ubuntu or Ubuntu Preview, either from the command line or the Microsoft Store
    3. Install any GUI app
    4. Open the Start Menu

    WSL logs:

    pulseaudio.log stderr.log weston.log

    WSL dumps:

    No response

    Expected behavior:

    The installed GUI apps should have a shortcut on the Start Menu, under the Ubuntu-Preview folder.

    Actual behavior:

    The shortcuts for the GUI apps are not created in the Start Menu. Neither is the Ubuntu or Ubuntu-Preview folder in "%appdata%\Microsoft\Windows\Start Menu\Programs". The .desktop files for the apps are generated just fine. This issue happens both with Ubuntu and Ubuntu Preview.

    bug fixinbound start-menu-integration 
    opened by VictorPLopes 10
  • WSLg environment variables not set in user distro

    WSLg environment variables not set in user distro

    Windows build number:

    22000.856

    Your Distribution version:

    Debian unstable

    Your WSL versions:

    WSL version: 0.66.2.0 Kernel version: 5.15.57.1 WSLg version: 1.0.42 MSRDC version: 1.2.3401 Direct3D version: 1.606.4 DXCore version: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Windows version: 10.0.22000.856

    Steps to reproduce:

    Issue is apparent immediately upon opening any distribution.

    1. Open an installed Linux distro in Terminal or Command Prompt.
    2. Run env.

    WSL logs:

    pulseaudio.log stderr.log weston.log

    WSL dumps:

    No response

    Expected behavior:

    Listing of environment variables should include those provided by WSLg, to wit:

    WAYLAND_DISPLAY=wayland-0
    DISPLAY=:0
    PULSE_SERVER=/mnt/wslg/PulseServer
    

    and GUI and sound-using apps should function normally,

    Actual behavior:

    Above-listed environment variables are not present, and GUI and sound-using apps therefore do not function. (Note: these are present in the system distribution; just not the user one.)

    This is purely an issue with the environment variables, however. The WSLg filesystem is properly mounted, sockets are present, etc,, and manually setting the variables with:

    WAYLAND_DISPLAY=wayland-0
    DISPLAY=:0
    PULSE_SERVER=/mnt/wslg/PulseServer
    

    permits WSLg to function normally.

    bug 
    opened by cerebrate 2
Releases(v1.0.28)
Owner
Microsoft
Open source projects and samples from Microsoft
Microsoft
Simple useful interoperability tests for WebRTC libraries. If you are a WebRTC library developer we'd love to include you!

Overview This project aims to be a convenient location for WebRTC library developers to perform interoperability tests. Who can Participate The projec

Aaron Clauson 103 Sep 8, 2022
A cross-platform SDK enabling developers to integrate real-time chat technology into their projects

4Players ODIN SDK ODIN is a cross-platform software development kit (SDK) that enables developers to integrate real-time chat technology into multipla

4Players 4 Feb 20, 2022
designed for debug Espressif's ESP series chips, include ESP32/ESP32-S2/ESP32-C3/ESP32-S3...

ESPLink 中文 ESPLink Introduce Features Pin Description esplink-tool Product Link Reference ESPLink Introduce ESPLink is a debug tool build for Expressi

wuxx 28 Aug 15, 2022
wl-mirror - a simple Wayland output mirror client

wl-mirror - a simple Wayland output mirror client wl-mirror attempts to provide a solution to sway's lack of output mirroring by mirroring an output o

Ferdinand Bachmann 78 Sep 20, 2022
Windows named pipe server that forwards connections to given TCP server

PipeTcp An asynchronous Windows named pipe server that forwards connections to given TCP server. Pre-built binaries can be found in Releases. Invocati

Jinoh Kang 4 May 23, 2022
Free Media Player for Windows and Linux with Youtube support.

SMPLAYER SMPlayer is a free media player for Windows and Linux with Youtube support.

Ricardo 287 Sep 14, 2022
C++ FTP Server Library for Windows, Linux & more

fineFTP Server FineFTP is a minimal FTP server library for Windows and Unix flavors. The project is CMake based and only depends on asio, which is int

Continental 0 Jul 28, 2022
Cross-platform, single .h file HTTP server (Windows, Linux, Mac OS X)

EWS - Single .h File C Embeddable Web Server Latest Version: 1.1.4 released September 9, 2021 Supported platforms: Linux, Mac OS X, Windows License: B

Forrest Heller 77 Aug 8, 2022
Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and 10K connections problem solution

CppServer Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and

Ivan Shynkarenka 885 Sep 17, 2022
Gromox - Groupware server backend with MAPI/HTTP, RPC/HTTP, IMAP, POP3 and PHP-MAPI support for grommunio

Gromox is the central groupware server component of grommunio. It is capable of serving as a replacement for Microsoft Exchange and compatibles. Conne

grommunio 121 Sep 16, 2022
LAppS - Lua Application Server for micro-services with default communication over WebSockets. The fastest and most vertically scalable WebSockets server implementation ever. Low latency C++ <-> Lua stack roundtrip.

LAppS - Lua Application Server This is an attempt to provide very easy to use Lua Application Server working over WebSockets protocol (RFC 6455). LApp

null 47 Apr 25, 2022
A project designed for the esp8266 D1 Mini or the esp8266 D1 Mini PRO to provide a wifi http server and dns server.

PS4 Server 9.00 This is a project designed for the esp8266 D1 Mini or the esp8266 D1 Mini PRO to provide a wifi http server and dns server. this is fo

null 13 Sep 7, 2022
9front http server with basic CGI support

tcp80x tcp80x is an HTTP server with some pseudo-CGI support. This is a merger of execfs and tcp80, both written by cinap_lenrek. Installation: Instal

phil9 4 Nov 27, 2021
Realtime Client/Server app for Linux allowing joystick (and other HID) data to be transferred over a local network

netstick What is it? Netstick enables HID devices to be remotely connected between a "client" and "server" over a network connection. It allows the ke

null 29 Jul 24, 2022
Event-driven network library for multi-threaded Linux server in C++11

Muduo is a multithreaded C++ network library based on the reactor pattern. http://github.com/chenshuo/muduo Copyright (c) 2010, Shuo Chen. All righ

Shuo Chen 11.9k Sep 15, 2022
web server that will print hello world on the screen only for linux users

a simple http server side lib only for linux users Note: This lib is currently under development you can check the source code and even use it but dn'

notaweeb 11 Mar 14, 2021
Dolphin is an emulator for running GameCube and Wii games on Windows, Linux, macOS, and recent Android devices.

Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.

Dolphin Emulator 9k Sep 17, 2022
Header-only C++14 library for getting network addresses associated with network interface without name lookups on Windows, macOS, Linux, and FreeBSD

NetIF Get addresses associated with network interfaces on a system without using name lookups. Header-only, requires C++14. Usage Add the header file

GMLC-TDC 9 Aug 2, 2022
Graphical small-internet client for windows, linux, MacOS X and BSDs. Supports gemini, http, https, gopher, finger.

Graphical small-internet client for windows, linux, MacOS X and BSDs. Supports gemini, http, https, gopher, finger.

Felix Queißner 550 Sep 18, 2022