Ubuntu – Windows Subsystem for Linux desktop shortcut to GUI

bashguishortcutswindows-subsystem-for-linuxyad

I have a bash script called lock-screen-timer which calls yad to mount a GUI dialog box. Under Windows 10 and the Windows Subsystem for Linux (WSL) I can run it from the bash prompt (note VcXsrv has to be installed first). I can't figure out how to create a working desktop shortcut in Windows 10. I can create the shortcut on the Windows 10 desktop OK…

Lock Screen Timer Shortcut

… it just doesn't run when I click on it. I've looked at many websites without any luck.

Best Answer

Why didn't I think of that?

This is one of those solutions where you look at it and think "Why didn't I think of that?". Unfortunately I had to look at many websites with wrong suggestions or over-kill such as "how to use regedit to run shortcut as admin".

Having the right parameters

Right click on your Windows 10 desktop and setup your shortcut to look like this:

Windows 10 shortcut properties

The full line for the Target field should look like this:

C:\Windows\System32\bash.exe -c "cd && DISPLAY=:0 /mnt/e/bin/lock-screen-timer"

NOTE: Most users will use /mnt/c/.... as their path but I'm dual-booting and the same script is shared by WSL and Ubuntu 16.04 so must be on a separate NTFS partition I've called /mnt/e. WSL cannot write to a Linux ext4 drive and Linux nor Windows Apps can write to a WSL sub-directory. It's complicated...

Also note the DISPLAY=:0 parameter accommodates calling a bash GUI script but the same is likely true if calling gedit or nautilus which are my next desktop shortcut projects. If not, I'll revise this answer..

Click the Change Icon button to get a default list of icons to choose from. This is where the clock icon came from.