【お知らせ】


<2019/03/29 追記>
Windows 10 version 1903 の対応を行ってみました。まだテストできていませんので、不具合があるかもしれません。
(2019/07/01 追記)Windows 10 version 1903 で動作することを確認しました。VolFs 上のファイルやディレクトリもダイレクトに開くことができるこをと確認しています。

<2019/02/17 追記>
Windows 10 version 1903 では WSL がさらに使いやすくなりそうです。

<2018/04/17 追記>
WSL から直接 Cygwin の cygstart を利用する方法を以下で紹介しています。VolFs 上のファイルを開くことはできませんが、cygstart 以外の Cygwin コマンドも利用できるなど汎用性がある方法です。お試しください。

<2017/09/15 追記>
本設定で紹介しているコマンドは以下の設定と一緒に使うことを想定しています。Windows 上のドキュメントファイルを emacs の dired から開くことができ、開いたファイルの操作を emacs のキーバインドで行うことができるようになるため、OS 全体を emacs で操作している感覚となります。本設定と併せ、お試しください。

<2016/10/11 追記>
本設定と似たようなものとして以下のものも作成しています。singleton な動きをする cygstart 的コマンドとして動作しますので、お試しください。

<2016/10/01 追記>
wslstart は VirtualBox 上の Ubuntu からも利用できます。以下をお試しください。

【本題】


Windows Subsystem for Linux で cygstart 的コマンドを使うための設定です。

1) Windows 10 1803 以降をインストールする。

2) Windows Subsystem for Linux を有効にし、ストアから Ubuntu 等の Linux をインストールする。

3) 以下にある wslstart、wslcommon の2つのスクリプトをコマンドパスが通ったフォルダ(/usr/local/bin や ~/bin 等)に作成し、chmod +x wslstart することにより実行可能とする。

引数を一つしか指定できない以外は、cygstart と同様の利用方法となります。
$ cd /mnt/c/foo
$ wslstart .
$ wslstart bar.pdf

$ cd
$ wslstart /mnt/c/foo
$ wslstart /mnt/c/foo/bar.pdf

$ wslstart .       # ← エラーとなる。VolFs 上のフォルダは開けない。ただし、Windows 10 1903 からは開けるようになる筈。
$ wslstart bar.pdf # ← エラーとはならない。VolFs 上のファイルは、%TEMP% フォルダにコピーし、読み込み専用にしてから開く。ただし、Windows 10 1903 からは直接開けるようになる筈。

$ wslstart cmd
$ wslstart notepad
$ wslstart https://www49.atwiki.jp/ntemacs
$ wslstart shell:Desktop # https://www.atmarkit.co.jp/ait/articles/1401/24/news036.html
また、wslstart が利用する作業ディレクトリの消去を支援する機能を提供しています。詳しくは、wslstart スクリプトの初めにあるコメントを参照してください。
$ wslstart -c
rm -rf "/mnt/c/Users/<username>/AppData/Local/Temp/wslstart"

# 消去!
$ wslstart -c | sh

なお、本設定は dired-open パッケージや「dired を OS と連携して使うための設定」 と連携することを目的として作成しました。WSL 上で emacs を利用されている方はお試しください。emacs の dired が Windows のファイラー兼ランチャーとして使えるようになると思います。

これから WSL 上 emacs の環境を構築しようとしている場合は、以下を参考としてください。


<変更履歴>
  • 2016/09/15 このページを作成した。
  • 2016/09/16 スクリプトの見直しを行った。
  • 2016/09/17 DrvFs ファイルシステムへのアクセスのみをデフォルトで許可するするようにスクリプトを見なおした。
  • 2016/09/17 指定するファイル名にスペースが入っている時も正常に動作するように対応した。
  • 2016/10/08 drvfs_access_only=1 の際に lxss_path の設定等の無駄な処理が行われないように改善した。
  • 2017/05/23 Windows 10 Creators Update 用にスクリプトの見直しを行った。
  • 2017/09/14 開くファイルが VolFs ファイルシステム上にある場合でも、そのファイルを DrvFs ファイルシステム上にあるテンポラリフォルダ配下に複写し、起動できるように対応した。
  • 2017/09/15 本コマンドから起動したアプリにフォーカスが移らないことがある場合の対策を行った。
  • 2017/09/15 空白を含むファイルのオープンに対応に対応した。
  • 2018/02/28 mount されたネットワークボリュームでもコマンドが正常に実行できるように対応した。
  • 2018/03/23 wsl コマンドの見直しにより、高速化対策を行った。