2019年5月1日水曜日

XQuartz後日談

 XQuartzにアプリケーションを登録すると、MacBook AirからBeelink S1の「emacs -damon」を起動できる。
 これはよかった。「emacs -daemon」はXQuartzを終了させてもBeelink S1で立ち上がりつづけるからだ。Emacsが一種のサーバになる。これに接続するには「emacsclient」を使うのだけれど、「ssh -Y ほげほげ emacsclient -c」でこれはOK。XQuartzにEmacsが表示される。
 実体は「emacs -daemon」なのでそれまで編集していたバッファとかがそのまま、残されている——なのだけれど、どうやらXサーバに接続する「-c」オプションはemacsclientを終わらせてもXサーバに接続されたままらしい。Xサーバ(XQuartz)を終了させると、「emacs -daemon」がcoreを吐いて落ちてしまう1
 これがターミナル上に表示される「-nw」オプションだと、emacsclientを終了させてもdaemonは動きつづけているし(ここまでは「-c」オプションのときと同じ)、ターミナルを終了させてもだいじょうだ(ここがちがう)。もちろんMacBook Airを終了させてもOKだ。
 ふむ。
 しかたないのでワンクッションいれることにした。
 「ssh -Y ほげほげ」でBeelink S1からターミナル2を立ち上げ、その中で「emacsclient -nw」を立ち上げる。これでEmacs自体はXに接続していないのでdaemonごとお亡くなりにならないだろう。Beelink S1のターミナルならcommandキーをmetaキーと認識できる。ただしクリップボードの共有はできないけれど。
 まぁ、これはしかたないか。
 アプリケーションには次のように登録した。

ssh -Y ほげほげ lxterminal -e emacsclient -nw

 これでemacsclientまで一気に起動される。当たり前だが、起動はやたら速い。

Footnotes:

1

coreを吐いているということはBUGかもしれない。emacs26。

2

最終的にLXTerminalを使うことにした。