【お知らせ】


<2019/09/01 追記>
sglstart の内部から呼ばれている winactivate.exe コマンドを更新しました。ピリオドで始まるファイルを開いている際のウィンドウのアクティベートの誤動作が解消されます。

<2018/01/24 追記>
この設定の Cygwin版 もあります。お試しください。

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

【本題】


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

本コマンドを作成した目的は、「singleton な動きをする cygstart 的コマンドを使うための設定 (Cygwin版)」内の説明を参照ください。この設定の Windows Subsystem for Linux 版 が本コマンドとなります。

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

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

3) 以下に従い、wslstart コマンドをインストールする。

4) 以下にある sglstart というスクリプトを wslstart をインストールしたパスと同じ場所に格納する。

5) DrvFs ファイルシステム上にフォルダを作成し、そのフォルダのパスを PATH に登録する。そして、そのフォルダに 以下のリポジトリにある winactivate.exe を配置する。
※ Windows 10 1903 を利用している場合、PATH に登録するパスは DrvFs のフォルダへの実際のパス(シンボリックリンクではないパス)としてください。シンボリックリンクのパスを PATH に登録すると、exe コマンドが実行できなくなります。

6) コマンドの動作の精度を高めるため、以下に従い「ファイル名の拡張子を表示する」設定を行う。
※ 設定を行わなくてもコマンドは動作しますが、suffix だけが異なる名前をもつ複数のファイルを開いている際などの動作精度が高まりますので、設定することをお薦めします。

7) WSL 上で sglstart <filename> を複数回実行し、singleton な動きをする cygstart 的コマンドとして機能することを確認する。


なお、本設定は Emacs の dired-open パッケージや「dired を OS と連携して使うための設定」 と連携することを目的として作成しました。Emacs の dired と連携しなければ利用場面が限られ、あまり有効な設定ではないかもしれません。


<変更履歴>
  • 2016/09/21 このページを作成した。
  • 2016/10/08 drvfs_access_only=1 の際に lxss_path の設定等の無駄な処理が行われないように改善した。
  • 2017/05/23 Windows 10 1703 用にスクリプトの見直しを行った。
  • 2017/09/14 開くファイルが VolFs ファイルシステム上にある場合でも、そのファイルを DrvFs ファイルシステム上にあるテンポラリフォルダ配下に複写し、起動できるように対応した。
  • 2017/09/15 本コマンドから起動したアプリにフォーカスが移らないことがある場合の対策を行った。
  • 2017/09/15 空白を含むファイルのオープンに対応した。
  • 2017/09/16 ウィンドウをポップアップする判定条件を見直した。
  • 2017/11/24 ウィンドウをアクティベートする方法を AutoHotKey を使った方法に見直した。
  • 2018/02/28 mount されたネットワークボリュームでもコマンドが正常に実行できるように対応した。
  • 2018/03/23 wsl コマンドの見直しにより、高速化対策を行った。
  • 2019/09/01 sglstart の内部から呼ばれている winactivate.exe コマンドを更新した。