Default Ubuntu Desktop with TightVnc and Windows Linux Subsystem
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?
Solution 1:
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/
Solution 2:
I use VcXsrv because it's free and is frequently updated. See my answer here:
- What's the easiest way to run GUI apps on Windows Subsystem for Linux as of 2018?.
The important thing is to install it accepting the defaults and then (for me) to edit /etc/environment
and change this:
PATH="/mnt/e/bin:/mnt/e/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:"
to this:
PATH="/mnt/e/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
export LIBGL_ALWAYS_INDIRECT=Yes
export DISPLAY=localhost:0.0
- Adding
/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. - export
LIBGGL...
is important for GUI to paint properly - export
DISPLAY...
is important for X-Server to run properly Then I can useyad
andzenity
for all my GUI scripts.