├── vendor
└── .preserve
├── debuginfo
├── WSLGd.list
├── rdpapplist.list
├── FreeRDP2.list
├── FreeRDP3.list
├── gen_debuginfo.sh
└── weston.list
├── config
├── wsl.conf
├── weston.ini
├── local.conf
├── default_wslg.pa
├── xwayland_log.patch
└── BUILD.md
├── .dockerignore
├── resources
└── linux.png
├── WSLDVCPlugin
├── WSLDVCPlugin.rc
├── WSLDVCPlugin.def
├── cpp.hint
├── WSLDVCPlugin.vcxproj.user
├── RegisterWSLPlugin.reg
├── pch.cpp
├── WSLDVCPlugin.h
├── WSLDVCListenerCallback.h
├── WSLDVCCallback.h
├── resource.h
├── UpdateRCVersion.ps1
├── framework.h
├── pch.h
├── WSLDVCListenerCallback.cpp
├── WSLDVCFileDB.h
├── WSLDVCPlugin.sln
├── WSLDVCPlugin.cpp
├── WSLDVCPlugin.vcxproj.filters
├── dllmain.cpp
├── utils.h
├── rdpapplist.h
├── WSLDVCFileDB.cpp
├── WSLDVCPlugin.vcxproj
└── utils.cpp
├── docs
├── WSLg_IntegratedDesktop.png
├── WSLg_ArchitectureOverview.png
└── install-sample-gui-apps.sh
├── devops
├── common-win.yml
├── getversion.ps1
├── updateversion.ps1
├── common-linux.yml
└── version_functions.ps1
├── package
├── wslg_desktop.rdp
└── wslg.rdp
├── .github
└── ISSUE_TEMPLATE
│ ├── config.yml
│ ├── feature_request.yml
│ └── bug_report.yml
├── samples
└── container
│ ├── build.sh
│ ├── run.sh
│ └── Containers.md
├── .gitignore
├── WSLGd
├── common.h
├── Makefile
├── meson.build
├── ProcessMonitor.h
├── precomp.h
├── FontMonitor.h
├── ProcessMonitor.cpp
├── FontMonitor.cpp
└── lxwil.h
├── rdpapplist
├── server
│ ├── meson.build
│ └── rdpapplist_main.h
├── rdpapplist_common.h
├── rdpapplist_common.c
├── meson.build
├── rdpapplist_server.h
└── rdpapplist_protocol.h
├── LICENSE
├── Microsoft.WSLg.targets
├── cgmanifest.json
├── Microsoft.WSLg.nuspec
├── SECURITY.md
├── msi
└── updateversion.ps1
├── CONTRIBUTING.md
├── Dockerfile
└── azure-pipelines.yml
/vendor/.preserve:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/debuginfo/WSLGd.list:
--------------------------------------------------------------------------------
1 | /usr/bin/WSLGd
2 |
--------------------------------------------------------------------------------
/debuginfo/rdpapplist.list:
--------------------------------------------------------------------------------
1 | usr/lib/rdpapplist/librdpapplist-server.so
2 |
--------------------------------------------------------------------------------
/config/wsl.conf:
--------------------------------------------------------------------------------
1 | [boot]
2 | command=/usr/bin/WSLGd
3 | [user]
4 | default=wslg
--------------------------------------------------------------------------------
/.dockerignore:
--------------------------------------------------------------------------------
1 | .git
2 | .github
3 | .gitlab
4 | .gitlab-ci
5 | .vs
6 | out
7 | tmp
8 |
--------------------------------------------------------------------------------
/resources/linux.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/wslg/HEAD/resources/linux.png
--------------------------------------------------------------------------------
/config/weston.ini:
--------------------------------------------------------------------------------
1 | [xwayland]
2 | disable_access_control=true
3 |
4 | [input-method]
5 | path=
6 |
--------------------------------------------------------------------------------
/WSLDVCPlugin/WSLDVCPlugin.rc:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/wslg/HEAD/WSLDVCPlugin/WSLDVCPlugin.rc
--------------------------------------------------------------------------------
/docs/WSLg_IntegratedDesktop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/wslg/HEAD/docs/WSLg_IntegratedDesktop.png
--------------------------------------------------------------------------------
/WSLDVCPlugin/WSLDVCPlugin.def:
--------------------------------------------------------------------------------
1 | LIBRARY "WSLDVCPlugin.dll"
2 |
3 | EXPORTS
4 | VirtualChannelGetInstance PRIVATE
--------------------------------------------------------------------------------
/docs/WSLg_ArchitectureOverview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/wslg/HEAD/docs/WSLg_ArchitectureOverview.png
--------------------------------------------------------------------------------
/devops/common-win.yml:
--------------------------------------------------------------------------------
1 | steps:
2 | - script: 'choco install gitversion.portable --pre'
3 | displayName: 'Install GitVersion'
4 |
--------------------------------------------------------------------------------
/devops/getversion.ps1:
--------------------------------------------------------------------------------
1 | . .\devops\version_functions.ps1
2 |
3 | $version = Get-VersionInfo "version" "-beta"
4 |
5 | Write-Output $version
6 |
--------------------------------------------------------------------------------
/package/wslg_desktop.rdp:
--------------------------------------------------------------------------------
1 | audiocapturemode:i:2
2 | authentication level:i:0
3 | disableconnectionsharing:i:1
4 | enablecredsspsupport:i:0
5 | hvsocketenabled:i:1
6 |
--------------------------------------------------------------------------------
/WSLDVCPlugin/cpp.hint:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation.
2 | // Licensed under the MIT license.
3 | #define WSLDVCPLUGIN_API __declspec(dllexport)
4 | #define WSLDVCPLUGIN_API __declspec(dllimport)
5 |
--------------------------------------------------------------------------------
/WSLDVCPlugin/WSLDVCPlugin.vcxproj.user:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/WSLDVCPlugin/RegisterWSLPlugin.reg:
--------------------------------------------------------------------------------
1 | Windows Registry Editor Version 5.00
2 |
3 | [HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default\AddIns\WSLDVCPlugin]
4 | "Name"="C:\\WINDOWS\\system32\\WSLDVCPlugin.dll"
5 |
--------------------------------------------------------------------------------
/package/wslg.rdp:
--------------------------------------------------------------------------------
1 | audiocapturemode:i:2
2 | authentication level:i:0
3 | disableconnectionsharing:i:1
4 | enablecredsspsupport:i:0
5 | hvsocketenabled:i:1
6 | remoteapplicationmode:i:1
7 | remoteapplicationprogram:s:dummy-entry
--------------------------------------------------------------------------------
/WSLDVCPlugin/pch.cpp:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation.
2 | // Licensed under the MIT license.
3 | #include "pch.h"
4 |
5 | // When you are using pre-compiled headers, this source file is necessary for compilation to succeed.
6 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: Report issues on WSL in general
4 | url: https://github.com/microsoft/WSL/issues/new/choose
5 | about: Please report issues not related to WSLg
6 |
--------------------------------------------------------------------------------
/debuginfo/FreeRDP2.list:
--------------------------------------------------------------------------------
1 | /usr/bin/winpr-hash
2 | /usr/bin/winpr-makecert
3 | /usr/lib/libfreerdp-server2.so.2.4.0
4 | /usr/lib/libfreerdp2.so.2.4.0
5 | /usr/lib/libuwac0.so.0.1.1
6 | /usr/lib/libwinpr-tools2.so.2.4.0
7 | /usr/lib/libwinpr2.so.2.4.0
8 |
--------------------------------------------------------------------------------
/debuginfo/FreeRDP3.list:
--------------------------------------------------------------------------------
1 | /usr/bin/winpr-hash
2 | /usr/bin/winpr-makecert
3 | /usr/lib/libfreerdp-server3.so.3.0.0
4 | /usr/lib/libfreerdp3.so.3.0.0
5 | /usr/lib/libuwac0.so.0.2.0
6 | /usr/lib/libwinpr-tools3.so.3.0.0
7 | /usr/lib/libwinpr3.so.3.0.0
8 |
--------------------------------------------------------------------------------
/WSLDVCPlugin/WSLDVCPlugin.h:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation.
2 | // Licensed under the MIT license.
3 | #pragma once
4 |
5 | #include
6 |
7 | HRESULT
8 | WSLDVCPlugin_CreateInstance(
9 | IWTSPlugin** ppPlugin
10 | );
11 |
--------------------------------------------------------------------------------
/samples/container/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | sudo docker build -t xclock -f Dockerfile.xclock .
4 | sudo docker build -t glxinfo -f Dockerfile.glxinfo .
5 | sudo docker build -t glxgears -f Dockerfile.glxgears .
6 | sudo docker build -t videoaccel -f Dockerfile.videoaccel .
--------------------------------------------------------------------------------
/config/local.conf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | /mnt/wslg/distro/usr/share/fonts
6 | /mnt/wslg/distro/usr/local/share/fonts
7 |
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode/*
2 | vendor/*
3 | !vendor/.preserve
4 | out
5 | tmp
6 | *.nupkg
7 | *.tar
8 | *.vhd
9 | WSLGd/*.d
10 | WSLGd/*.o
11 | WSLGd/WSLGd
12 | WSLDVCPlugin/.vs
13 | WSLDVCPlugin/x64
14 | WSLDVCPlugin/ARM64/Debug/
15 | WSLDVCPlugin/ARM64/Release/
16 | WSLDVCPlugin/WSLDVCPlugin.aps
--------------------------------------------------------------------------------
/WSLDVCPlugin/WSLDVCListenerCallback.h:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation.
2 | // Licensed under the MIT license.
3 | #pragma once
4 |
5 | #include
6 |
7 | HRESULT
8 | WSLDVCListenerCallback_CreateInstance(
9 | IWTSListenerCallback** ppCallback
10 | );
--------------------------------------------------------------------------------
/WSLDVCPlugin/WSLDVCCallback.h:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation.
2 | // Licensed under the MIT license.
3 | #pragma once
4 |
5 | #include
6 |
7 | HRESULT
8 | WSLDVCCallback_CreateInstance(
9 | IWTSVirtualChannel* pChannel,
10 | IWTSVirtualChannelCallback** ppCallback
11 | );
--------------------------------------------------------------------------------
/config/default_wslg.pa:
--------------------------------------------------------------------------------
1 |
2 | ### WSLG specific ###
3 | ### Load Windows's default sound from Windows volume.
4 | .ifexists /mnt/c/Windows/Media/Windows Default.wav
5 | load-sample x11-bell /mnt/c/Windows/Media/Windows Default.wav
6 | ### Enable X11 bell by loading module-x11-bell.
7 | load-module module-x11-bell sample=x11-bell
8 | .endif
9 |
10 |
--------------------------------------------------------------------------------
/devops/updateversion.ps1:
--------------------------------------------------------------------------------
1 | param ([string] $XmlFile, [string] $xpath, [string] $name, [string] $buildSeparator = ".", [string] $type = "version")
2 |
3 | . .\devops\version_functions.ps1
4 |
5 | $version = Get-VersionInfo $type $buildSeparator
6 |
7 | if ($name -eq "")
8 | {
9 | Update-XML-Text $XmlFile $xpath $version
10 | }
11 | else
12 | {
13 | Update-XML-Attribute $XmlFile $xpath $name $version
14 | }
15 |
--------------------------------------------------------------------------------
/debuginfo/gen_debuginfo.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | function split_debuginfo(){
4 | file=${1//[$'\t\r\n']}
5 | dir=$(dirname "$file")
6 | mkdir -p $2/debuginfo/$dir
7 | org=$2/$file
8 | dst=$2/debuginfo/$file.debug
9 | objcopy --only-keep-debug $org $dst
10 | objcopy --strip-debug $org
11 | objcopy --add-gnu-debuglink=$dst $org
12 | echo $dst
13 | }
14 | while read line; do split_debuginfo $line $2; done < $1
15 |
16 |
--------------------------------------------------------------------------------
/debuginfo/weston.list:
--------------------------------------------------------------------------------
1 | usr/bin/weston
2 | usr/bin/weston-launch
3 | usr/bin/weston-screenshooter
4 | usr/lib/libweston-9.so.0.0.0
5 | usr/lib/libweston-desktop-9.so.0.0.0
6 | usr/lib/libweston-9/gl-renderer.so
7 | usr/lib/libweston-9/rdp-backend.so
8 | usr/lib/libweston-9/xwayland.so
9 | usr/lib/weston/libexec_weston.so.0.0.0
10 | usr/lib/weston/desktop-shell.so
11 | usr/lib/weston/rdprail-shell.so
12 | usr/lib/weston/wslgd-notify.so
13 | usr/libexec/weston-desktop-shell
14 | usr/libexec/weston-keyboard
15 | usr/libexec/weston-rdprail-shell
16 |
--------------------------------------------------------------------------------
/config/xwayland_log.patch:
--------------------------------------------------------------------------------
1 | diff -Naur xorg-server-1.20.9/hw/xwayland/xwayland.c xorg-server-1.20.9-patch/hw/xwayland/xwayland.c
2 | --- xorg-server-1.20.9/hw/xwayland/xwayland.c 2020-11-21 01:07:32.850000000 +0000
3 | +++ xorg-server-1.20.9-patch/hw/xwayland/xwayland.c 2020-11-21 01:06:20.290000000 +0000
4 | @@ -61,6 +61,9 @@
5 | void
6 | OsVendorInit(void)
7 | {
8 | + LogInit("/mnt/wslg/xlog.log", ".old");
9 | + LogSetParameter(XLOG_FILE_VERBOSITY, X_DEBUG);
10 | +
11 | if (serverGeneration == 1)
12 | ForceClockId(CLOCK_MONOTONIC);
13 | }
14 |
--------------------------------------------------------------------------------
/WSLDVCPlugin/resource.h:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation.
2 | // Licensed under the MIT license.
3 | //{{NO_DEPENDENCIES}}
4 | // Microsoft Visual C++ generated include file.
5 | // Used by WSLDVCPlugin.rc
6 |
7 | // Next default values for new objects
8 | //
9 | #ifdef APSTUDIO_INVOKED
10 | #ifndef APSTUDIO_READONLY_SYMBOLS
11 | #define _APS_NEXT_RESOURCE_VALUE 101
12 | #define _APS_NEXT_COMMAND_VALUE 40001
13 | #define _APS_NEXT_CONTROL_VALUE 1001
14 | #define _APS_NEXT_SYMED_VALUE 101
15 | #endif
16 | #endif
17 |
--------------------------------------------------------------------------------
/WSLGd/common.h:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation.
2 | // Licensed under the MIT license.
3 | #pragma once
4 | #define SHARE_PATH "/mnt/wslg"
5 | #define USER_DISTRO_MOUNT_PATH SHARE_PATH "/distro"
6 |
7 | void LogPrint(int level, const char *func, int line, const char *fmt, ...) noexcept;
8 | #define LOG_LEVEL_EXCEPTION 3
9 | #define LOG_LEVEL_ERROR 4
10 | #define LOG_LEVEL_INFO 5
11 | #define LOG_ERROR(fmt, ...) LogPrint(LOG_LEVEL_ERROR, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
12 | #define LOG_INFO(fmt, ...) LogPrint(LOG_LEVEL_INFO, __FUNCTION__, __LINE__, fmt, ##__VA_ARGS__)
13 |
--------------------------------------------------------------------------------
/WSLDVCPlugin/UpdateRCVersion.ps1:
--------------------------------------------------------------------------------
1 |
2 | $version = [string](gitversion /showvariable AssemblySemFileVer)
3 | $versionComma = $version.Replace(".", ",")
4 | $informationalVersion = [string](gitversion /showvariable InformationalVersion)
5 |
6 | $content = (Get-Content -Encoding "windows-1252" -Path ".\WSLDVCPlugin.rc")
7 | $content = $content.Replace("1,0,0,1", $versionComma);
8 | $content = $content.Replace("1.0.0.1", $version);
9 | $content = $content.Replace("InformationalVersion", $InformationalVersion);
10 |
11 | Set-Content -Encoding "windows-1252" -Path ".\WSLDVCPlugin.rc" -Value $content
--------------------------------------------------------------------------------
/devops/common-linux.yml:
--------------------------------------------------------------------------------
1 | steps:
2 | - task: DockerInstaller@0
3 | inputs:
4 | dockerVersion: '20.10.7'
5 | releaseType: 'stable'
6 |
7 | - script: wget https://github.com/GitTools/GitVersion/releases/download/5.6.8/gitversion-linux-x64-5.6.8.tar.gz &&
8 | tar -xvf gitversion-linux-x64-5.6.8.tar.gz &&
9 | sudo mv gitversion /usr/local/bin &&
10 | sudo mv libgit2-6777db8.so /usr/local/bin
11 | displayName: 'Install GitVersion'
12 |
13 | - script: git clone --branch v0.8.17 --single-branch https://github.com/microsoft/hcsshim.git
14 | displayName: 'Clone hcsshim repo for tar2ext4 tool'
15 |
--------------------------------------------------------------------------------
/WSLGd/Makefile:
--------------------------------------------------------------------------------
1 | CXX := clang++
2 | LDFLAGS := -lcap
3 | TARGET := WSLGd
4 | SRC_DIRS := .
5 | INSTALL := install -p
6 | INSTALL_PREFIX= $(DESTDIR)/$(PREFIX)/bin
7 |
8 | SRCS := $(shell find $(SRC_DIRS) -name "*.cpp" -or -name "*.c" -or -name "*.s")
9 | OBJS := $(addsuffix .o,$(basename $(SRCS)))
10 | DEPS := $(OBJS:.o=.d)
11 |
12 | INC_DIRS := $(shell find $(SRC_DIRS) -type d)
13 | INC_FLAGS := $(addprefix -I,$(INC_DIRS))
14 |
15 | CPPFLAGS := $(INC_FLAGS) -MMD -MP -std=c++17
16 |
17 | $(TARGET): $(OBJS)
18 | $(CXX) $(LDFLAGS) $(OBJS) -o $@ $(LOADLIBES) $(LDLIBS)
19 |
20 | .PHONY: clean
21 | clean:
22 | $(RM) $(TARGET) $(OBJS) $(DEPS)
23 |
24 | install:
25 | $(INSTALL) $(TARGET) $(INSTALL_PREFIX)
26 |
27 | -include $(DEPS)
--------------------------------------------------------------------------------
/WSLDVCPlugin/framework.h:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation.
2 | // Licensed under the MIT license.
3 | #pragma once
4 |
5 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
6 | // Windows Header Files
7 | #include
8 | #include
9 | #include
10 | #include
11 | #include
12 | #include /* For IPersistFile */
13 | #include /* For IShellLink */
14 | #include /* For PathIsDirectoryEmpty */
15 | #include /* For SHGetPropertyStoreForWindow */
16 | #include /* For InitPropVariantFromString */
17 | #include /* For PKEY_* */
18 | #include /* For PRIx64 */
19 |
--------------------------------------------------------------------------------
/WSLGd/meson.build:
--------------------------------------------------------------------------------
1 | project('WSLGd', 'cpp',
2 | version : '0.1',
3 | default_options : ['cpp_std=c++17'])
4 |
5 | config_h = configuration_data()
6 |
7 | dep_winpr = dependency('winpr3', version: '>= 3.0.0', required: false)
8 | if dep_winpr.found()
9 | config_h.set('HAVE_WINPR', '1')
10 | else
11 | dep_winpr = dependency('winpr2', version: '>= 2.0.0', required: false)
12 | if dep_winpr.found()
13 | config_h.set('HAVE_WINPR', '1')
14 | endif
15 | endif
16 |
17 | configure_file(output: 'config.h', configuration: config_h)
18 |
19 | executable('WSLGd',
20 | 'main.cpp',
21 | 'ProcessMonitor.cpp',
22 | 'FontMonitor.cpp',
23 | dependencies: dep_winpr,
24 | link_args: '-lcap',
25 | install : true)
26 |
--------------------------------------------------------------------------------
/WSLDVCPlugin/pch.h:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation.
2 | // Licensed under the MIT license.
3 | // pch.h: This is a precompiled header file.
4 | // Files listed below are compiled only once, improving build performance for future builds.
5 | // This also affects IntelliSense performance, including code completion and many code browsing features.
6 | // However, files listed here are ALL re-compiled if any one of them is updated between builds.
7 | // Do not add files here that you will be updating frequently as this negates the performance advantage.
8 |
9 | #ifndef PCH_H
10 | #define PCH_H
11 |
12 | // add headers that you want to pre-compile here
13 | #include "framework.h"
14 |
15 | using namespace Microsoft::WRL;
16 | using namespace std;
17 |
18 | #endif //PCH_H
19 |
--------------------------------------------------------------------------------
/rdpapplist/server/meson.build:
--------------------------------------------------------------------------------
1 | dep_frdp_server = dependency('freerdp-server3', version: '>= 3.0.0', required: false)
2 | if not dep_frdp_server.found()
3 | dep_frdp_server = dependency('freerdp-server2', version: '>= 2.0.0', required: false)
4 | if not dep_frdp_server.found()
5 | error('librapapplist-server requires freerdp-server2 or 3 which was not found.')
6 | endif
7 | endif
8 |
9 | deps_librdpapplist_server = [
10 | dep_frdp,
11 | dep_frdp_server,
12 | dep_winpr,
13 | ]
14 |
15 | srcs_librdpapplist_server = [
16 | '../rdpapplist_common.c',
17 | 'rdpapplist_main.c',
18 | ]
19 |
20 | incs_common_server = [
21 | '../',
22 | ]
23 |
24 | plugin_rdpapplist_server = shared_library(
25 | 'librdpapplist-server',
26 | srcs_librdpapplist_server,
27 | include_directories: incs_common_server,
28 | dependencies: deps_librdpapplist_server,
29 | name_prefix: '',
30 | install: true,
31 | install_dir: install_lib_dir_rdpapplist,
32 | )
33 |
--------------------------------------------------------------------------------
/docs/install-sample-gui-apps.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Make sure you are using Ubuntu 20.04!!
4 |
5 | apt update
6 |
7 | ## Gedit
8 |
9 | apt install gedit -y
10 |
11 | ## GIMP
12 |
13 | apt install gimp -y
14 |
15 | ## Nautilus
16 |
17 | apt install nautilus -y
18 |
19 | ## X11 apps
20 |
21 | apt install x11-apps -y
22 |
23 | ## Google Chrome
24 |
25 | cd /tmp
26 | wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
27 | dpkg -i google-chrome-stable_current_amd64.deb
28 | apt install --fix-broken -y
29 | dpkg -i google-chrome-stable_current_amd64.deb
30 |
31 | ## Microsoft teams
32 |
33 | cd /tmp
34 | curl -L -o "./teams.deb" "https://teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb"
35 | apt install ./teams.deb -y
36 |
37 | ## Edge Browser
38 |
39 | curl https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-dev/microsoft-edge-dev_88.0.673.0-1_amd64.deb -o /tmp/edge.deb
40 | apt install /tmp/edge.deb -y
--------------------------------------------------------------------------------
/WSLGd/ProcessMonitor.h:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation.
2 | // Licensed under the MIT license.
3 | #pragma once
4 | #include "precomp.h"
5 |
6 | namespace wslgd
7 | {
8 | class ProcessMonitor
9 | {
10 | public:
11 | ProcessMonitor(const char* username);
12 | ProcessMonitor(const ProcessMonitor&) = delete;
13 | void operator=(const ProcessMonitor&) = delete;
14 |
15 | passwd* GetUserInfo() const;
16 | int LaunchProcess(std::vector&& argv,
17 | std::vector&& capabilities = {},
18 | std::vector&& env = {});
19 | int Run();
20 |
21 | private:
22 | struct ProcessInfo
23 | {
24 | std::vector argv;
25 | std::vector capabilities;
26 | std::vector env;
27 | };
28 |
29 | std::map m_children{};
30 | passwd* m_user;
31 | };
32 | }
33 |
--------------------------------------------------------------------------------
/WSLGd/precomp.h:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft Corporation.
2 | // Licensed under the MIT license.
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | #include
11 | #include
12 | #include
13 | #include
14 | #include
15 | #include
16 | #include
17 | #include
18 | #include
19 | #include
20 | #include
21 | #include
22 | #include
23 | #include
24 | #include
25 | #include
26 | #include
27 | #include
28 | #include
29 | #include
30 | #include
31 | #include
32 | #include