【Windows10/WSL2 Ubuntu 20.04 LTS】X Serverアプリを実行する(Emacs GUI版を試す)

スポンサーリンク

以前の記事で、Windows10のWSL2で Ubuntu 20.04 LTS が使えるようにした。そこで、「X Server」ソフトをインストールし、Xアプリの実行を試したので備忘録を残す。

【Windows10】WSL2(Windows Subsystem for Linux Version2)で「Ubuntu 20.04 LTS」を使う
前の記事で、Windwos10 バージョン2004 をインストールした。この、Windwos10 バージョン2004 からは、WSL2(Windows Subsystem for Linux Version2)が正式に利用できるようになった...

X410のインストール

Windows用の X Server ソフトは、以前の記事で紹介したWSLの時は VcXsrv で試したが、今回は「X410」を使ってみる。X410は、Microsoftストアからダウンロード&インストールできる有償アプリで5,850円だが、今なら80%OFFの1,150円(税込み)で購入できる。

Microsoftストアで「X410」を検索しインストール。

画像01

  • Microsoftストアで購入したこのアプリは、最大 10 台 の Windows 10 デバイスにインストールできる。

パブリックアクセスを許可する

X410を初めてインストールした時は、セキュリティ上の理由から、127.0.0.1などのループバックアドレスからの接続のみが許可となっている。WSL2では下記記事で紹介したように、Windowsマシンとは別のネットワークが割り当てられる。

【Windows10】WSL2のイーサネットIPアドレス
前の記事で、WSL2で Ubuntu 20.04 LTS を使った。 それで、利用されるIPアドレスについて確認したので備忘録を残す。 WSL2のIPアドレス確認 WSL2を起動し、ip addr, ip route コマンドで確認。 17...

なので X410 サーバは、他ネットワークからのアクセス許可が必要。X410を起動して、右クリックメニューから、[Allow Public Access]をクリックし有効にする。

画像02

ただし初回は、以下のウィンドウが表示されるので [OK] する。

画像03

続いて、「パブリックネットワーク」をチェックし [アクセスを許可する] を押して許可する。

画像04

DISPLAY環境変数の設定

X Serverの接続先を、DISPLAY環境変数にセットしておく必要がある。通常は同じマシン内の場合は「localhost」を利用するのだが、前述したようにWSL2では独自ネットワークの別IPアドレスとなっているので、WSL2側からこのループバックアドレスを指定してもWindows側の X Server には届かない。

そこで、母艦となっているWindowsに割り当てられたIPアドレスを直接使用してもよいのだが、WSL2の「/etc/resolv.conf」ファイルに自動的に追加される内部IPアドレスを使用する。このアドレスは、Windowsを再起動するか、WSL2を再起動すると変更される場合がある。したがって、そのファイルからアドレスを動的に抽出し、それをDISPLAY環境変数に割り当てておく。下記コマンドを、~/.bashrc に追加する。

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0

再ログインして、環境変数が設定されているか確認。

$ echo $DISPLAY
172.30.32.1:0.0

X11アプリケーションの動作確認

必要なパッケージのインストール

WSL2から下記コマンドで関連パッケージをインストール。

$ sudo apt install git build-essential libssl-dev libreadline-dev zlib1g-dev x11-apps x11-utils x11-xserver-utils libsqlite3-dev nodejs fonts-ipafont libxml2-dev libxslt1-dev
  • インストール済みのものもあるが、とりあえず入れておく。

xeyesを動かす

Windows側で X410 が実行している事を確認したら、X11appsがインストールされてるので「xeyes」を起動してみる。

$ xeyes &

画像11

目玉のGUIアプリケーション(xeyes)が起動すればOK。

X410を自動起動するようにしておく

X410を毎回起動しなくて済むように、X410を自動実行するようにする。

スタートメニュー右クリックの「ファイル名を指定して実行」から、“shell:appsfolder”を実行。

画像21

アプリフォルダを開く。

画像22

スタートメニュー右クリックの「ファイル名を指定して実行」から、“shell:startup”を実行。

画像23

アプリフォルダの「X410」アイコンを、スタートアップフォルダにドラッグ&ドロップする。

画像24

これで、Windowsへのログイン時に X410 が自動起動する。

Emacs(GUI版)を試してみる

「Emacs」のインストール手順は下記記事を参照。そこではコンソール版(CUI)のEmacsは動かした。

【Windows10/WSL2 Ubuntu 20.04 LTS】Emacsを使う
以前の記事で、Windows10のWSL2で「Ubuntu 20.04 LTS」が使えるようにした。そこで、Emacsエディターも動くようにしたので備忘録を残す。 WSL2とはいえ基本的にはLinuxなので、以前、Ubuntu Server...

GUI版のEmacsをWSL2から使いたい。とりあえず起動してみた。

$ emacs sample.c &

一応動いた(下記画面)。

画像31

  • 漢字は、CTRL + \ キーで、一応は入力できる。
  • 操作は、けっこうキビキビ動いて快適。msys2で動かす時よりも格段に速い。
  • さすがにWindowsファイルのドラッグ&ドロップは出来ないようである。

WSL2コンソールからemacsclientで呼び出す

私が使っている初期設定ファイルは、GUIで起動していればServerモードを有効にしているので、下記のように、emacsclientコマンドで呼び出す事ができる。(emacsclientは常駐しているソフトを呼び出すだけなので起動が速い)

$ emacsclient -n sample.c

.bashrcに下記のようにalias定義して「e」コマンドで起動できるようにする。

alias e='emacsclient -n'

パソコンのログイン時に、GUI版 Emacsを自動起動して常駐するようにしておけば、「e」の入力だけで高速起動できるので便利。

【Emacs 25-29】初期設定ファイル(~/.emacs.d/)をGitHubに公開
これまで紹介してきた、私の使ってるEmacsの初期設定ファイル「~/.emacs.d/」をGitHub(下記URL)に公開した。macOS, Windows, Linuxで共用。 Emacsの初期状態ではお世辞にも使い勝手がいいとは言えない...

補足

  • Emacsの日本語入力など、まだ調整が必要なようなので、もう少し整備して使いやすくできたら報告していきたい。

2020/7/15追記

git-guiとgitkのGUIアプリを、このXサーバで動かしてみた。

【Windows10/WSL2 Ubuntu】Xサーバで、git-guiとgitkのGUIソフトを使う
以前の記事で、Windows10のWSL2(Ubuntu 20.04 LTS)で、XサーバでGUIアプリを動かせるようにした。続いて、Git用のGUIクライアントソフト「git-gui」と「gitk」を動かしたので備忘録を残す。 Linux...

関連記事

【Windows10/WSL Ubuntu】X Serverアプリを実行する(Emacs25 GUI版を試す)
以前の記事で、Windows10のWSLでUbuntuが使えるようにした。そこで、「X Server」ソフトをインストールし、Xアプリの実行を試したので備忘録を残す。 追記(2018/05/15) 「Ubuntu 18.04」でも動くことを...
【Emacs 25-29】macOS, Windows, Ubuntuで共通なエディター環境を構築(まとめ)
macOS, Windows(msys2), Ubuntu-Server/Desktopで共通操作性のエディターを目指して、「Emacs」環境を構築してきた。 私も実際に使ってきて実用的になってきた。本サイトでも断片的に紹介してきたのをまと...

参考

  1. Using X410 with WSL2
  2. Windows 10でストアアプリを自動起動する方法
  3. WSL向けに最適化されたLinuxディストロ「WLinux」が改称、「Pengwin」に「Pengwin」+「X410」ならばLinux向けGUIアプリの利用も簡単
  4. emacsclientのオプション
  5. サーバーとしてのEmacsの使用

コメント

タイトルとURLをコピーしました