Run ubuntu-desktop on WSL (Ubuntu 18.04 LTS)
I am running 18.04 LTS on Windows subsystem for Linux (WSL). I have installed the Ubuntu Desktop by running
sudo apt-get install ubuntu-desktop
However, when I start Linux only the terminal starts. How do I get the Desktop to start?
Windows 10 itself does not support GUI. In order to run GUI in wsl you need to install a X server and get it to configure correctly.
I would suggest you to install VcXsrv to display GUI.
I am not able to run GUI successfully by sudo apt-get install ubuntu-desktop
. However, I successfully installed mate-desktop GUI in Debian and ubuntu.
Here are the steps for me to display GUI by wsl. You can check my videos on detailed steps Install GUI (mate desktop) to Microsoft Windows Subsystem Linux
step 1:
install Debian or Ubuntu Linux subsystem:
- PowerShell as administrator: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
- Microsoft Store: install "Debian" or "ubuntu"
step 2:
install mate tesktop for Debian:
- open Debian in windows 10. Type the following commend
- sudo apt-get update
- sudo apt install task-mate-desktop
OR install mate-desktop for Ubuntu
- open Ubuntu console in windows 10
- sudo apt install tasksel
- sudo apt update
- sudo tasksel install ubuntu-mate-desktop
step 3:
install VcXsrv in windows 10:
- download from: https://sourceforge.net/projects/vcxsrv/
- open XLauch, and use the following options for setup
- select: "One large window"
- Display number: 0
- next
- Start no client
- next
- finish
step 4:
setup display in linux console:
- export DISPLAY=:0
- export LIBGL_ALWAYS_INDIRECT=1
step 5:
start Mate-desktop environment:
- run mate-session
Step 3 and step 4 are extremely important to display GUI in windows 10 wsl.
As great as WSL is, it's really not designed for that sort of thing.
If your goal is to get the full Ubuntu Desktop, it makes a lot more sense to just install a full Ubuntu Virtual Machine, using something like Virtualbox, Hyper-V, etc. Good luck!
@gus33000 posted a working solution on Twitter:
https://twitter.com/gus33000/status/1188517307867381761
quick rundown for people wanting to recreate this:
Install VcXsrv
Install WSL
Install Ubuntu from the store
sudo apt-get upgrade
sudo apt-get install ubuntu-desktop
sudo service dbus start
sudo service x11-common start
gnome-shell --x11 -r
The following instructions were copied and pasted from an article I wrote but it lost the original formatting, links, and screenshots:
Source: How to Install Ubuntu Desktop with a Graphical User Interface in WSL2
Download VcXsrv: Visit the official website Click "Download"
Install VcXsrv: Open "vcxsrv-64.1.20.8.1.installer.exe" Click "Next" Click "Install" Click "Close"
Allow Access to VcXsrv: Check "Private Networks" Click "Allow Access"
Open PowerShell: Press "⊞ Windows" Enter "PowerShell" into the search bar Right-click "Windows PowerShell" Click "Run as Administrator"
Open WSL2: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
wsl
Install Ubuntu Desktop: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
sudo apt --yes install ubuntu-desktop
Set the Username Variable: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
username=$(wslvar USERNAME)
Create the Ubuntu Directory: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
mkdir --parents /mnt/c/users/$username/.ubuntu/
Open the Ubuntu Directory: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
cd /mnt/c/users/$username/.ubuntu
Download Linux Software Repository for Microsoft Products: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
Ubuntu 20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb --output-document packages-microsoft-prod.deb
Ubuntu 18.04:
wget https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb --output-document packages-microsoft-prod.deb
Install Linux Software Repository for Microsoft Products: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
sudo dpkg --install packages-microsoft-prod.deb
Update the Repositories: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
sudo apt update
Install APT Transport for HTTPS: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
sudo apt install --yes apt-transport-https
Update the Repositories: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
sudo apt update
Install .Net: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
sudo apt install --yes dotnet-sdk-5.0
Add Arkane Systems to the Source List Directory: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
sudo sh -c 'echo "deb [trusted=yes] https://wsl-translinux.arkane-systems.net/apt/ /" > /etc/apt/sources.list.d/wsl-translinux.list'
Update the Repositories: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
sudo apt update
Install Genie: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
sudo apt install --yes systemd-genie
Create the Sudoers File: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
echo "$USER ALL=(ALL) NOPASSWD:/usr/bin/genie" | sudo EDITOR="tee" visudo --file /etc/sudoers.d/$USER
Create the Desktop Script: Copy the code from below these instructions Paste the code into PowerShell Press "Enter"
# CREATE BASH SCRIPT
# Store block of text with here document
create_bash_script=$(cat << end_of_string
# Define necessary environment variables
export DISPLAY="\$(cat /etc/resolv.conf | grep nameserver | awk '{ print \$2 }'):1.0"
export DESKTOP_SESSION="ubuntu"
export GDMSESSION="ubuntu"
export XDG_SESSION_DESKTOP="ubuntu"
export XDG_CURRENT_DESKTOP="ubuntu:GNOME"
export XDG_SESSION_TYPE="x11"
export XDG_BACKEND="x11"
export XDG_SESSION_CLASS="user"
export XDG_DATA_DIRS="/usr/local/share/:/usr/share/:/var/lib/snapd/desktop"
export XDG_CONFIG_DIRS="/etc/xdg"
export XDG_RUNTIME_DIR="\$HOME/xdg"
export XDG_CONFIG_HOME="\$HOME/.config"
export XDG_DATA_HOME="\$HOME/.local/share"
export XDG_CACHE_HOME="\$HOME/.cache"
export XDG_DESKTOP_DIR="\$HOME/Desktop"
export XDG_DOCUMENTS_DIR="\$HOME/Documents"
export XDG_DOWNLOAD_DIR="\$HOME/Downloads"
export XDG_MUSIC_DIR="\$HOME/Music"
export XDG_PICTURES_DIR="\$HOME/Pictures"
export XDG_PUBLICSHARE_DIR="\$HOME/Public"
export XDG_TEMPLATES_DIR="\$HOME/Templates"
export XDG_VIDEOS_DIR="\$HOME/Videos"
# Start desktop environment
gnome-session
end_of_string
)
# Store username environment variable in lowercase
username=$(wslvar USERNAME | awk '{ print tolower($0) }') &&
# Save block of text in bash file
echo "${create_bash_script}" > "/mnt/c/users/$username/.ubuntu/02_start_desktop.sh"
Download the Shortcut Images: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
wget https://assets.ubuntu.com/v1/9fbc8a44-circle-of-friends-web.zip
Unzip the Shortcut Images: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
unzip -o 9fbc8a44-circle-of-friends-web.zip
Create the Shortcut Icon: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
convert -resize 64x64 ./circle-of-friends-web/png/cof_orange_hex.png ubuntu.ico
Exit WSL2: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
exit
Create the VcXsrv Script: Copy the code from below these instructions Paste the code into PowerShell Press "Enter"
# RELOAD VCXSRV SCRIPT
# Store username environment variable in lowercase
$username = $env:username.tolower()
# Store block of text with here-string
$reload_vcxsrv_script = @"
# Stop vcxsrv proccess that contains "1.0" in the program window title
get-process vcxsrv | where { `$_.mainwindowtitle -like "*1.0*" } | stop-process
# Start vcxsrv process in a large program window on display number one
start-process "c:\program files\vcxsrv\vcxsrv.exe" -argument ":1 -ac -nowgl -multimonitors -dpms"
"@
# Save block of text in powershell file
echo "${reload_vcxsrv_script}" > $env:userprofile/.ubuntu/reload_vcxsrv.ps1
Create the Ubuntu Script: Copy the code from below these instructions Paste the code into PowerShell Press "Enter"
# CREATE VISUAL BASIC SCRIPT
# Store username environment variable in lowercase
$username = $env:username.tolower()
# Store block of text with here-string
$create_vbs_script = @"
' Run PowerShell script in background
set application = createobject("shell.application")
application.shellexecute "powershell", "-file c:\users\admin\.ubuntu\01_reload_vcxsrv.ps1", "", "", 0
' Allow PowerShell script to complete
wscript.sleep 3000
' Run Bash script in background
set shell= createobject("wscript.shell")
shell.run "wsl sudo genie -c bash /mnt/c/users/admin/.ubuntu/02_start_desktop.sh", 0
"@
# Save block of text in bash file
echo "${create_vbs_script}" > $env:userprofile/.ubuntu/03_start_ubuntu.vbs
Create the Shortcut Script: Copy the code from below these instructions Paste the code into PowerShell Press "Enter"
# Store block of text with here-string
$create_shortcut_script = @"
# Define location variables
`$shortcut_location = "`$env:userprofile\.ubuntu\Ubuntu.lnk"
`$program_location = "`$env:userprofile\.ubuntu\03_start_ubuntu.vbs"
# Create shortcut
`$object = new-object -comobject wscript.shell
`$shortcut = `$object.createshortcut(`$shortcut_location)
`$shortcut.targetpath = `$program_location
`$shortcut.iconlocation = "`$env:userprofile\.ubuntu\ubuntu.ico"
`$shortcut.save()
"@
# Save block of text in powershell file
echo $create_shortcut_script > $env:userprofile/.ubuntu/04_create_shortcut.ps1
Open the Ubuntu Directory: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
cd c:\users\admin\.ubuntu
Create the Shortcut: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
powershell.exe -file .\04_create_shortcut.ps1
Open the Directory in Explorer: Copy the command from below these instructions Paste the command into PowerShell Press "Enter"
explorer .
Launch the Ubuntu Desktop: Double-click the "Ubuntu" shortcut
Open Terminal: Click "Activities" in the top-left corner Enter "Terminal" into the search bar Click "Terminal"
Disable the Screen Lock: Copy the command from below these instructions Paste the command into Terminal Press "Enter"
gsettings set org.gnome.desktop.screensaver lock-enabled false
Install the Snap Store: Copy the command from below these instructions Paste the command into Terminal Press "Enter"
sudo snap install snap-store