【お知らせ】
<2021/08/11 追記>
次のリポジトリのコマンドに Windows 11 の対応を行いました。
<2021/02/05 追記>
本ページの内容は WSL2 でも動作します。DrvFs や VolFs の記載がある場合には、Windows 側のファイルシステム、WSL2 側のファイルシステムと読み替えてください。
<2020/10/27 追記>
WSL2 では、UNC パスをマウントしているマウントポイント配下がカレントディレクトリの状態で Windows の exe コマンドを実行するとエラー終了します。sglstart にこの対策を行いました。
<2018/01/24 追記>
この設定の Cygwin版 もあります。お試しください。
<2017/09/15 追記>
本設定で紹介しているコマンドは次の設定と一緒に使うことを想定しています。Windows 上のドキュメントファイルを Emacs の dired から開くことができ、開いたファイルの操作を Emacs のキーバインドで行うことができるようになるため、OS 全体を Emacs で操作している感覚となります。本設定と併せ、お試しください。
【本題】
Windows Subsystem for Linux で singleton な動きをする cygstart 的コマンドを使うための設定です。
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 コマンドを更新した。
最終更新:2021年08月11日 19:48