先日まではPythonの実行ファイル化やWSL(Windows Subsystem for Linux)の実行ファイルをWindows側で実行するなどを行っていましたが、今回は少し目線を変えて、WSL上でWindowsのプログラムを動かしたりURLを与えるとブラウザを開いたり、パスの表記方法をかえるなどといった事のできるツールを紹介したいと思います。
参照
そのツールの名前は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側から簡単に実行ができるようになります。また、定期実行スクリプトをwsluscでWindowsショートカット化することで、GUIからの実行を可能にし、技術に詳しくないユーザーでも利用できるツールに出来ます。
使用例
# スクリプトファイルからWindowsショートカットを作成 $ wslusc ~/scripts/backup.sh # backup.lnkファイルがデスクトップに生成される


2.4 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環境での開発において環境間の境界を意識せずに作業を進めるための強力なツールではないでしょうか。特にwslview、wslpath、wsluscの3つは、かなりの作業効率を上げてくれます。
wsluはWindows環境と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ホームディレクトリに移動