wsl-open

Utility for opening files from the Windows Subsystem for Linux (WSL) in native Windows applications

Usage no npm install needed!

<script type="module">
  import wslOpen from 'https://cdn.skypack.dev/wsl-open';
</script>

README

wsl-open (:open_file_folder: :arrow_right: :computer:)

pipeline status npm version

Utility for opening files within the Windows Subsystem for Linux command line in Windows GUI applications.

Usage

Just run wsl-open with the file/directory/URL that you want to open.

wsl-open { FILE | DIRECTORY | URL }

  • FILE paths can be relative or absolute
  • DIRECTORY paths are the same, with a possible limitation*
  • URLs must include the protocol (http://, https://, ftp://, etc) or begin with www, which is consistent with how xdg-open handles URLs

*If using a WSL build without the wslpath (prior to Build 1803 - released April 2018), only Windows directories can be opened

Examples

# Opens in your Windows default image viewer
wsl-open image.png

# Relative and absolute paths work
wsl-open ../Downloads/resume.pdf
wsl-open /home/other/README.txt

# Directories under Windows
wsl-open /mnt/c/Users/4u6u5/Music

# Opens your Windows default browser
wsl-open http://google.com

Set file associations

The real benefit of wsl-open is setting it as the default program in the Windows Subsystem for a particular filetype. This allow you to use Linux's standard xdg-open utility to open files, and wsl-open will handle the rest! This keeps your scripts platform agnostic.

# Set association for file type
wsl-open -a image.png

# Now, you can open up any PNG with xdg-open, and wsl-open will handle it
xdg-open another_image.png

# Unassociate wsl-open with a file type
wsl-open -d image.png

# Associate wsl-open with links (set wsl-open as your shell's BROWSER)
wsl-open -w

# Now URL's work as well!
xdg-open https://gitlab.com/4U6U57/wsl-open

# And this allows other programs that depend on xdg-open to use it as well!
npm repo wsl-open # Same as the previous command

Protip: I like to furthur generalize my scripts by setting alias open='xdg-open' on my Linux machines, which make them behave more like macOS

Full specification

For full details on how the script operates, feel free to check out the manpage or design specification

Installation

npm

The easiest way to get it is to use the Node Package Manager and install it globally.

# Get npm if you don't have it already
sudo apt-get install -yqq npm

# Install
sudo npm install -g wsl-open

Standalone

wsl-open is actually just a single, self contained bash script, so the bare minimum installation is simply downloading the script (either by cloning the repo or via curl) and then adding it to your path. Here is an example:

# Make a bin folder in your home directory
mkdir ~/bin

# Add the bin folder to your PATH in your bashrc
echo '[[ -e ~/bin ]] && export PATH=$PATH:~/bin' >> ~/.bashrc

# Download the script to a file named 'wsl-open'
curl -o ~/bin/wsl-open https://raw.githubusercontent.com/4U6U57/wsl-open/master/wsl-open.sh