Problem
In some companies, App Defender/AppLocker makes the entire Windows OS practically unusable. EXEs are blocked, and the virus scan slows any build to a crawl. Nevertheless, we still need to work, and WSL is often the only feasible solution. But how can we start, for example, Eclipse or any other application in WSL that requires a screen?
Solution
We might wither build on x11 (steps 4 and 5) or use the build in WSLg which should run out of the box:
- Install eclipse or STS in Linux
- Export the DISPLAY env variable export
DISPLAY=:0
- Run eclipse or any other application in Linux
- (optional) Install x11 in Linux
sudo apt install x11-xserver-utils
- (optional) Install VcXsrv on windows
Install eclipse or Spring STS in Linux
We might either install eclipse with sudo
apt install eclipse or as many other of us choose to install a different IDE here an example for spring sts (update the URL as needed to the current version):
wget https://cdn.spring.io/spring-tools/release/STS4/4.25.0.RELEASE/dist/e4.33/spring-tool-suite-4-4.25.0.RELEASE-e4.33.0-linux.gtk.x86_64.tar.gz tar -xvf spring-tool-suite-4-4.25.0.RELEASE-e4.33.0-linux.gtk.x86_64.tar.gz rm -rf spring-tool* ln -s sts-4.25.0.RELEASE/SpringToolSuite4 sts
Export the DISPLAY env variable
In order to find our windows screen we have to define the DISPLAY destination with the same named environment variable. The simplest way is to extend the .profile that it is automatically exported on each shell start (or .zprofile if zsh is used).
export DISPLAY=:0
Run eclipse or any other application
Now we can either start eclipse using ./eclipse
or the spring STS using ./sts
.
In case of any issues the x11 app might help you e.g. using xeyes:
sudo apt install x11-apps xeyes
Install x11 in Linux
x11 tools on Linux are responsible to send the screen information from our Linux system to windows and on the other hand receive mouse and keyboard commands. In ubuntu the tools can be installed by using:
sudo apt install x11-xserver-utils
This step is not need anymore on a newer WSL as by default windows support UI apps in the WSL using WSLg.
If x11 is used the DISPLAY variable has to be adjusted to point to the Windows Host machine.
Install VcXsrv on windows
In order to receive the screen information from Linux in Windows and to display the application started in Linux we need an x11 client here too. First we have to install VcXsrv and start it using XLaunch which will prompt us of the settings:
- Multiple windows in the display settings, which allows us to start more than one app
- Start no client which of course requires us to start the app in Linux manually later on
Everything else may stay in the default settings.
This step is not need anymore on a newer WSL as by default windows support UI apps in the WSL using WSLg.