誰が得をするのかという内容ですが、それなりに苦労したので記事にしてみます。
関連記事:
Arch LinuxでSystemd-nspawnを使ってSpacemacsをGUIで起動し、Emacs-mozcを使う
動機
Arch Linuxではfcitx-mozcとemacs-mozcが競合しており、双方を使うことができない。
そこで、Systemd-nspawnによりコンテナを作り、そこで最低限のアプリケーションをインストールし、emacs-mozcを利用する。
手順
ゴールは、ホスト側のEmacsが、コンテナ内にインストールされたmozc_emacs_helper
を呼び出せるようにすること
Arch Linuxのコンテナを作成
Systemd-nspawnを使う
mkdir -p $HOME/var/container/arch
sudo pacstrap -i -c -d $HOME/var/container/arch base base-devel
コンテナ内にemacs-mozcをインストール
cat << 'EOF' >> /etc/pacman.conf
[pnsft-pur]
SigLevel = Optional TrustAll
Server = http://downloads.sourceforge.net/project/pnsft-aur/pur/$arch
EOF
pacman -Syy
pacman -S emacs emacs-mozc
useradd --create-home arch-container-user
動作確認
echo -e '(0 CreateSession)\n(1 SendKey 1 97)' |
sudo systemd-nspawn --quiet -D $HOME/var/container/arch -u arch-container-user mozc_emacs_helper
エラーが帰ってこなければOK
ホストのEmacsにmozcをインストール
M-x package-install mozc
で入れた後、
init.el
(require 'mozc)
を追加する
ホストにmozc_emacs_helperコマンドを追加
$HOME/bin/mozc_emacs_helper
#!/bin/bash
sudo systemd-nspawn --quiet -D $HOME/var/container/mozc_emacs_helper -u arch mozc_emacs_helper
注
-
--quiet
オプションを入れるのがポイントで、入れないとSystemd-nspawnのメッセージが入り、mozc.elが動作しない - コンテナ側のユーザーがrootだと、mozc_emacs_helperがうまく動作しないので、
arch
ユーザーを指定する - コンテナに入る時、パスワード無しで
sudo
できるよう、ホスト側のvisudo
で設定しておく
やってみる
Emacsを起動して、M-x mozc-mode
します。
こんな感じになりました。
感想
最近はEmacsをGUIで起動しないので、正直あまり使い道は無さそうです。
が、GUI/CUIアプリケーションに関わらず、いざとなったらコンテナと連携できるというのは安心できますね。
仮想化最高。
参考