Ubuntu – Default Ubuntu Desktop with TightVnc and Windows Linux Subsystem

gnometightvncservervncwindows-subsystem-for-linux

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
enter image description here
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
enter image description here
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?

Best Answer

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 or apt

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/