LoginSignup
10
10

More than 5 years have passed since last update.

Arch LinuxでSystemd-nspawnを使ってSpacemacsをGUIで起動し、Emacs-mozcを使う

Last updated at Posted at 2016-10-06

ついにできた。誰が得をするのかという環境ですが、

  • Arch Linux
  • Systemd-nspawnによる仮想環境
  • Host側で起動しているXserverに画面を映す

動機

Arch Linuxではfcitx-mozcとemacs-mozcが競合しており、双方を使うことができない

そこで、Systemd-nspawnによりコンテナを作り、そこで最低限のアプリケーションをインストールし、emacs-mozcを利用する。

ついでに、話題のエディタSpacemacsも利用する。

手順

まずはSpacemacsをホスト側に持ってくる

mkdir -p $HOME/etc/spacemacs
git clone https://github.com/syl20bnr/spacemacs $HOME/etc/spacemacs/.emacs.d

mozcのインストールスクリプトを作成

install_mozc.sh
#!/bin/bash
# This script is for install emacs-mozc to arch

UID=1000

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 --needed git emacs emacs-mozc adobe-source-code-pro-fonts

useradd --create-home --uid $UID arch

Arch Linuxのコンテナを作成し、mozcのインストールスクリプトをホストからゲストへコピー

create_container
#!/bin/bash

mkdir -p $HOME/var/container/arch
sudo pacstrap -i -c -d $HOME/container/arch base base-devel
sudo cp install_mozc.sh $HOME/var/container/arch/tmp/

コンテナに入り、↑でコピーしたmozcのインストールスクリプトを実行する

sudo systemd-nspawn -D $HOME/container/arch
chmod +x /tmp/install_mozc.sh
/tmp/install_mozc.sh

最後に、コンテナからXに画面を映せるように設定

xhost +local:

SPACEMACSを起動するには、下記のスクリプトを実行すればOK。パスの通っているところに置こう。

spacemacs
#!/bin/bash

CONTAINER_USER=arch
CONTAINER_HOME=/home/$CONTAINER_USER

sudo systemd-nspawn \
     --setenv=DISPLAY=$DISPLAY \
     --setenv=SHELL=/bin/bash \
     --setenv=HOME=$CONTAINER_HOME/etc/spacemacs \
     --bind=$HOME/etc/spacemacs:$CONTAINER_HOME/etc/spacemacs \
     --bind=$HOME:$CONTAINER_HOME/host_home \
     --bind=/tmp/.X11-unix \
     -D ~/var/container/arch \
     -u $CONTAINER_USER \
     emacs

いやあ疲れた。動作はちょっともっさりしている。

参考

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10