I have successfully installed WLS (ubuntu 18
) on windows 10 machine. I want to access its UI features using TightVnc
. With default settings the .vnc/xstartup
contains the following lines
xrdb $HOME/.Xresources
xsetroot -solid grey
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
# Fix to make GNOME work
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession
and I can connect to it using Tight vnc viewer from windows but the UI looks like
But, I want to use the default desktop that ships with Ubuntu 18. I installed gnome
and changed xstartup
file to the following (suggested by someone on the web)
#!/bin/sh
#Uncommment this line if using Gnome and your keyboard mappings are incorrect.
#export XKL_XMODMAP_DISABLE=1
# Load X resources (if any)
if [ -r "$HOME/.Xresources" ]
then
xrdb "$HOME/.Xresources"
fi
gnome-session --disable-acceleration-check --session=ubuntu &
But when I start vncserver
after making these changes, I am able to connect but it shows a grey screen with no visual controls like
Please note that I had no .Xresources
file on my machine so I created an empty one manually but it made no difference. Below is the output of ls /usr/share/xsessions
ubuntu-communitheme-snap.desktop ubuntu.desktop xfce.desktop
I can see some errors in .vnc/CS-63341DT:5.log
file. Below are the contents of this file
05/04/19 12:49:17 Xvnc version TightVNC-1.3.10
05/04/19 12:49:17 Copyright (C) 2000-2009 TightVNC Group
05/04/19 12:49:17 Copyright (C) 1999 AT&T Laboratories Cambridge
05/04/19 12:49:17 All Rights Reserved.
05/04/19 12:49:17 See http://www.tightvnc.com/ for information on TightVNC
05/04/19 12:49:17 Desktop name 'X' (CS-63341DT:5)
05/04/19 12:49:17 Protocol versions supported: 3.3, 3.7, 3.8, 3.7t, 3.8t
05/04/19 12:49:17 Listening for VNC connections on TCP port 5905
Font directory '/usr/share/fonts/X11/75dpi/' not found - ignoring
Font directory '/usr/share/fonts/X11/100dpi/' not found - ignoring
gnome-session-binary[1645]: WARNING: Using null backend for session tracking
_IceTransmkdir: Owner of /tmp/.ICE-unix should be set to root
GNOME_KEYRING_CONTROL=/home/adeel/.cache/keyring-FKBRZZ
GNOME_KEYRING_CONTROL=/home/adeel/.cache/keyring-FKBRZZ
GNOME_KEYRING_CONTROL=/home/adeel/.cache/keyring-FKBRZZ
SSH_AUTH_SOCK=/home/adeel/.cache/keyring-FKBRZZ/ssh
Window manager warning: Unsupported session type
gnome-session-binary[1645]: WARNING: App 'org.gnome.Shell.desktop' exited with code 1
Window manager warning: Unsupported session type
gnome-session-binary[1645]: WARNING: App 'org.gnome.Shell.desktop' exited with code 1
gnome-session-binary[1645]: WARNING: App 'org.gnome.Shell.desktop' respawning too quickly
gnome-session-binary[1645]: CRITICAL: We failed, but the fail whale is dead. Sorry....
What can I do to make default ubuntu 18 deskto work with TightVnc viewer from windows?
According to Microsoft WSL is designed only for developers who want to run Linux terminal utilities. This is indicated in this similar question.
It's been reported that you can obtain possibly successful results by
1) Installing an Xserver like Xming or VcXsrv.
2) Installing the graphical software you wish to run under WSL via
apt-get
orapt
3) Exporting your display environment variable with
export DISPLAY=:0
every time you want to run a graphical application.4) launch a graphical application by typing the name of its executable
Note: This subsystem (WSL) is not capable of running all Linux software, such as 32-bit binaries, or those that require specific Linux kernel services not implemented in WSL.
It is possible to run some graphical (GUI) applications (such as Mozilla Firefox) by installing an X11 server within the Windows (host) environment (such as VcXsrv or Xming), as mentioned above although not without caveats, such as the lack of audio support or hardware acceleration (resulting in poor graphics performance). Support for OpenCL and CUDA is also not being implemented currently, although it may be implemented in future releases.
IMHO this exercise is more work than it's worth. The end result suffers from poor graphics performance and I/O bottlenecks. It's far prefereable to simply run Ubuntu on a VM or dual-boot than to deal with the possibility that the Linux system calls an application requires may not be fully supported by the Windows Subsystem for Linux.
Sources:
What's the easiest way to run GUI apps on Windows Subsystem for Linux as of 2018?
How do I install Ubuntu alongside a pre-installed Windows with UEFI?
https://www.howtogeek.com/261575/how-to-run-graphical-linux-desktop-applications-from-windows-10s-bash-shell/
https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux
https://blogs.msdn.microsoft.com/wsl/2016/06/08/wsl-system-calls/
I use VcXsrv because it's free and is frequently updated. See my answer here:
The important thing is to install it accepting the defaults and then (for me) to edit
/etc/environment
and change this:to this:
/mnt/e/bin:
at beginning of path is only important for shared scripts stored on NTFS partition that both Ubuntu natively runs and WSL Bash runs.LIBGGL...
is important for GUI to paint properlyDISPLAY...
is important for X-Server to run properly Then I can useyad
andzenity
for all my GUI scripts.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"
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"
Create the Ubuntu Script: Copy the code from below these instructions Paste the code into PowerShell Press "Enter"
Create the Shortcut Script: Copy the code from below these instructions Paste the code into PowerShell Press "Enter"
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