WSLユーザー必見!知らないと損するwsluコマンドガイド【パス変換・GUI連携etc】

先日まではPythonの実行ファイル化やWSL(Windows Subsystem for Linux)の実行ファイルをWindows側で実行するなどを行っていましたが、今回は少し目線を変えて、WSL上でWindowsのプログラムを動かしたりURLを与えるとブラウザを開いたり、パスの表記方法をかえるなどといった事のできるツールを紹介したいと思います。

参照

uepon.hatenadiary.com

uepon.hatenadiary.com

uepon.hatenadiary.com

そのツールの名前はwslu。こうした環境間の橋渡しを簡素化する便利なツール群となっています。

wsluとは?

WSL Utilities(wslu)は、WSL環境からWindows側のアプリケーション、ファイルパス、環境変数にアクセスするためのツール群です。

1. 🐧インストール方法

インストールは簡単で、WSLのディストリビューションのターミナル上で以下のように実行します。

$ sudo apt update
$ sudo apt install wslu

2. 🐧主要コマンドの紹介

2.1 パス変換

wslpath … WindowsパスとLinuxパス間の変換

Windowsで使用するパス文字列をWSLで使用するものに変換をしてくれます。また、-wオプションを使うことでWSLで使用するパス文字列をWindowsのパス文字列に変換してくれます。

使用例

# WindowsパスをLinuxパスに変換
$ wslpath "C:\Users\username\Desktop"
# 出力: /mnt/c/Users/username/Desktop

# LinuxパスをWindowsパスに変換
$ wslpath -w /mnt/c/Users/username/Documents
# 出力: C:\Users\username\Documents

2.2 Windowsのデフォルトアプリケーションでファイルなどを開く

wslview … ファイルやURLをWindows側のデフォルトアプリケーションで開く

引数にファイル名やURLをつけるとWindowsに設定されたデフォルトアプリケーションが開きます。実はこれが結構便利で、WSL上にはブラウザや表示ツールが無いときにWindowsの機能がしようできるというかなり便利機能です。これまではWindows側にコピーをしてチェックをしていたのですが、この方法がわかってからはかなり手間が減りました。

使用例

# WebページをWindowsのデフォルトブラウザで開く
$ wslview https://example.com

# PDFファイルをWindowsのデフォルトビューアで開く
$ wslview ~/document.pdf

2.3 ショートカット生成

wslusc … LinuxスクリプトからWindowsショートカット(.lnk)ファイルを生成

これでWSLで作成した実行ファイルのシェルなどを作成しなくてもWindows側から簡単に実行ができるようになります。また、定期実行スクリプトwsluscWindowsショートカット化することで、GUIからの実行を可能にし、技術に詳しくないユーザーでも利用できるツールに出来ます。

使用例

# スクリプトファイルからWindowsショートカットを作成
$ wslusc ~/scripts/backup.sh
# backup.lnkファイルがデスクトップに生成される

2.4 Windows側の環境変数の参照

wslvar … Windows環境変数の参照

使用例

# Windows環境変数を取得
$ wslvar PATH

2.5 Pythonでの活用

これらの機能はPythonのsubprocess()からも使用する事ができます。

サンプル

# 注意: このコードはWSL (Windows Subsystem for Linux) 環境で実行することを前提としています。
import subprocess

def open_in_windows_browser(url):
    """指定されたURLをWindowsブラウザで開く"""
    subprocess.run(["wslview", url])

def convert_to_windows_path(linux_path):
    """LinuxパスをWindowsパスに変換"""
    result = subprocess.check_output(["wslpath", "-w", linux_path])
    return result.decode().strip()

# 使用例
open_in_windows_browser("https://github.com")
windows_path = convert_to_windows_path("/mnt/c/Users/username/project")
print(f"Windows path: {windows_path}")

2.6 シェルへのエイリアス追加

エイリアスへの登録をすることで便利に使用する事もできます。

.bashrcへのエイリアス追加例

# よく使用するディレクトリをWindowsで開く
alias openwin='wslview $(wslpath -w $(pwd))'

# Windows環境変数を簡単に参照
alias winpath='wslvar PATH'

おわりに

wsluは、WSL環境での開発において環境間の境界を意識せずに作業を進めるための強力なツールではないでしょうか。特にwslviewwslpathwsluscの3つは、かなりの作業効率を上げてくれます。

wsluWindows環境とLinux環境の両方を活用する方には必須のユーティリティではないでしょうか😎

(おまけ)wsluのコマンドの使用例

コマンド 概要 使用例 説明
wslview URLやファイルをWindowsアプリで開く wslview https://google.com URLをWindowsデフォルトブラウザで開く
wslview document.pdf PDFファイルをWindowsデフォルトビューアで開く
wslview ~/Pictures/image.jpg 画像ファイルをWindowsデフォルトアプリで開く
wslview . 現在のディレクトリをWindowsエクスプローラーで開く
wslpath WindowsパスとLinuxパス間の変換 wslpath "C:\Users\username\Desktop" WindowsパスをLinuxパスに変換
wslpath -w /mnt/c/Users/username/Documents LinuxパスをWindowsパス(-wオプション)に変換
wslpath -m /mnt/c/Program\ Files LinuxパスをWindows形式(-mオプション、スペース対応)に変換
wslpath -u "C:\Windows\System32" WindowsパスをUnix形式(-uオプション)に変換
wslusc LinuxスクリプトからWindowsショートカット作成 wslusc ~/scripts/backup.sh スクリプトのショートカットをデスクトップに作成
wslusc -n "バックアップツール" ~/scripts/backup.sh カスタム名(-nオプション)でショートカット作成
wslusc -i ~/icons/app.ico -n "My App" ~/bin/myapp カスタムアイコン(-iオプション)付きショートカット作成
wslvar Windows環境変数の参照 wslvar USERPROFILE Windows環境変数USERPROFILEの値を取得
wslvar PATH Windows環境変数PATHの値を取得
wslvar APPDATA Windows環境変数APPDATAの値を取得
wslvar TEMP Windows環境変数TEMPの値を取得
wslfetch WSLシステム情報の表示 wslfetch neofetchコマンドの代替
wslfetch -s システム情報を短縮形式(-sオプション)で表示
wslfetch -v 詳細な情報(-vオプション)を表示

実用的な組み合わせ例

用途 コマンド例 説明
ディレクトリ移動と表示 cd $(wslpath "C:\Users\username\Projects") && wslview . WindowsのProjectsフォルダに移動してエクスプローラーで開く
ファイルパス変換と環境変数活用 wslpath -w $(wslvar USERPROFILE)/Documents WindowsユーザープロファイルのDocumentsフォルダのパスを取得
GUI アプリの起動準備 wslusc -e "export DISPLAY=:0;" -g code VS CodeのショートカットをX11 DISPLAY設定付きで作成
システム情報確認 wslfetch && wslvar COMPUTERNAME システム情報とコンピューター名を表示

.bashrcエイリアス

# wslviewを使ったエイリアス
alias open='wslview'                    # 'open ファイル名' でWindowsアプリで開く
alias explorer='wslview .'              # 現在のディレクトリをエクスプローラーで開く

# wslpathを使ったエイリアス  
alias winpath='wslpath -w'              # Linuxパス→Windowsパス変換
alias linpath='wslpath'                 # Windowsパス→Linuxパス変換

# wslvarを使ったエイリアス
alias winuser='wslvar USERNAME'         # Windowsユーザー名取得
alias winhome='cd $(wslpath $(wslvar USERPROFILE))'  # Windowsホームディレクトリに移動