MobaXterm はタブ型の端末ソフトで、SSH端末機能や、Xサーバ機能を内包した多機能端末である。
バージョン20.6において、XサーバーのOpenGLアクセラレーションがONになっていると、PC-6001VXは動かない。
WSL2環境下において、起動するたびに172.16.0.0/12 のプライベートアドレスのいずれかが割り当てられるためIPアドレスは不定となる。 ホスト側になる Windowsに関しても同様であるため、環境変数DISPLAYは都度設定しなおす必要がある。
WSL2環境のホスト名は、Windowsの端末名を利用しているので、これを利用して、ホストのIPアドレスを取得する方法を以下に示す。 なお、Windowsの端末名を「デスクトップ」などの日本語にしている場合にはどうなるかわからない。1)
今、仮に、Windowsの端末名が、古い伝統に則り2)、venus
だったとする。
~/.bashrc
などに、以下の行を追加する。
if [ -z "${HOSTNAME}" ]; then HOSTNAME=venus fi DISPLAY=`dig +short ${HOSTNAME}|head -n 1`:0 export DISPLAY
これにより、毎回、DISPLAYを手動で設定する必要がなくなる。 なお、Xサーバの設定を On Demandにしていると、都度、アクセス許可を求められるので、注意。
Linux環境で広く音を鳴らすためのサービスとして用いられている PulseAudioであるが、残念ながら、MobaXtermには統合されていない。 このため、MobaXtermとは別途、PulseAudioサーバを立ち上げておかなければならない。
本来は別のソフトであり、別途まとめるべき内容だが、運用上はMobaXtermと抱き合わせになる形なので、ここに記しておく。
Pulse Audioは本来はソースからbuildして利用すべきなのだろうけれど、Windows用のバイナリが配布されているので、ここではそれを利用する。 ここから1.1とやや古いバージョンのバイナリーがダウンロード可能である。 頑張って最新の機能やセキュリティを追いかけたい向きは、ソースからビルドして利用すればいいだろう。
バイナリーは特にパッケージの形であったりはしないので、適当なところに展開する。
当方は、C:\Program Files (x86)\PulseAudio
に展開したが、管理者権限が~とうるさいので、C:\Users\<ユーザ名>\PulseAudio
とかでもいいだろう。
ただ、後でサービス化することを念頭に置いていたので面倒でも、標準のパスに置いた方がいいかと思ったのでそうしてある。 別にそこまでこだわる必要もないかもしれないのだが。
どうせ、KeyHac は C:\Users\<ユーザ名>\keyhac
の下に展開してあるのだし。
設定ファイルは、パッケージを展開したところにある etc\pulse
の下にある。
このうち、default.pa
とdaemon.conf
の二つを修正する必要がある。
default.pa
43行目にrecord=0
を追記、61行目のコメントマークを削除して、接続許可するIPを範囲指定する。
... 39 ### Load audio drivers statically 40 ### (it's probably better to not load these drivers manually, but instead 41 ### use module-udev-detect -- see below -- for doing this automatically) 42 load-module module-waveout sink_name=output source_name=input record=0 43 #load-module module-null-sink 44 ... 59 ### here if you plan to use paprefs) 60 #load-module module-esound-protocol-tcp 61 load-module module-native-protocol-tcp auth-ip-acl=127.0.0.0/8;172.16.0.0/12;192.168.0.0/24 62 ...
daemon.conf
39行目のコメントマークを外して、値を-1
に変更。
39 exit-idle-time = -1
一般的には、環境変数PULSE_SERVER
に、PulseAudioサーバを運用している端末名またはIPアドレスを設定する。
ここでは、WSL2環境において、自動的に取得する方法を記す。
基本的には、Xサーバに対するDISPLAY
と同様である。
if [ -z "${HOSTNAME}" ]; then HOSTNAME=venus fi PULSE_SEVER=`dig +short ${HOSTNAME}|head -n 1` export PULSE_SERVER
Windows版の Pulse Audio 1.1は、残念ながら Windowsのサービスとして構築されていないため、都度、手動で実行してやる必要があり利便性が低い。
MobaXtermに統合されていれば、MobaXtermの起動とともに使用可能となり便利なのだが、そうはなっていない。
そこで、ここにWindowsのサービスとして起動する方法を記す。
NSSMはthe Non-Sucking Service Managerの略で、非サービスのアプリケーションをWindowsのサービス化してくれるサービスである。
Windows標準のscとの違いは、非サービスのアプリも対象であることだろう。
NSSM.EXE
を、C:\Windows\System32
などにコピーしたら、管理者として実行している、コマンドプロンプトやPowerShellなどのコマンドラインから、以下のように起動する。
C:\Windows\System32> NSSM install <サービス名>
すると、ダイアログがポップアップするので、コマンドラインおよび引数、起動方法などを設定し、installして終了する。