Debian / Ubuntu上のwaylandとwestonで最小限のGUIを構築する

# 概要
X.Orgは古臭いということになり最近のGNOMEやKDEではwaylandがデフォルトになっています。ただGNOMEやKDEは余計なものが多く入っています。最小限(firefoxで日本語入力して音楽を聞く)ためのdebian最小インストールをメモします。以下の記述は`/etc/apt/apt.conf` で `APT::Install-Recommends 0;` と設定して推奨パッケージを入れない設定でもうまくいくようになっています。Ubuntuでもbionic (18.04 LTS)の場合以下の「インストール作業」の部分で、ubuntu serverをインストールするためのalternative installer (debian installer)で最初にF6を押してエキスパートモードを選び、現れるブートコマンドラインのubuntu-server.seedをubuntu-server-minimal.seedに変えればインストールされるパッケージを最小にしてほぼ同様のことが出来るはずです。NVIDIAのドライバ入れるとwayland/westonが使えないので注意

# インストール作業(Debian)

エキスパートインストールを選んで、パッケージの選択で何も選択しない。インストーラー言語は日本語を選び、システムデフォルトロカールは`ja_JP.UTF-8`を選んでおく。
ファームウェアを含むインストーラーは https://cdimage.debian.org/cdimage/unofficial/non-free/cd-including-firmware/ にある

# ネットワークの設定(debian busterで無線LANを使う場合)

Debian Busterで無線LANを用いてインストールすると起動後まったくネットワークが使えず新規パッケージのインストールが何も出来ないから以下の作業を行いネットワークが使えるようにする。

* `ip l` などを実行し無線LANのインターフェース名を確認し、以下のファイルを作成する

```text:/etc/wpa_supplicant/wpa_supplicant-無線IF名.conf
country=JP  # crda パッケージインストールが必要
network={
    ssid="SSID名"
    scan_ssid=1
    key_mgmt=WPA-PSK
    psk="パスワード"
}
```
* `systemctl enable  wpa_supplicant@無線IF名` を実行する
* 以下のファイルを作成する

```text:/etc/systemd/network/適当な名前.network
[Match]
Name=wl*

[Network]
DHCP=true
MulticastDNS=true
```

* `systemctl enable systemd-networkd.service systemd-resolved.service` を実行する
* `ifupdown`, `avahi-autoipd` パッケージは不要なので `apt-get --purge remove ifupdown avahi-autoipd` で削除する
* Ubuntuの場合`netplan.io` と `nplan` がDebianの`ifupdown`に対応するため削除してよい。また、もし`whiptail`, `apt-utils`が入っていない場合なるべく作業のなるべく早い段階で入れておく。`dpkg-reconfigure locales` を行い`ja_JP.UTF-8`ロカールを入れると共にシステムのデフォルトロカールを（再）設定しておく。

# kernel command lineの設定(そうしたい場合のみ)
`GRUB_CMDLINE_LINUX_DEFAULT="i8042.reset=1 cgroup_no_v1=all systemd.unified_cgroup_hierarchy=1"` を `/etc/default/grub` に書いて `update-grub` する

# どういう用途でも必要そうなパッケージのインストール
`apt-get install libnss-resolve libnss-systemd dbus-user-session policykit-1`
またCPUのバグを直すために`intel-microcode`または`amd-microcode`をインストールする。必要なfirmware、例えば`firmware-intel-sound`など

# mozcとibusによる日本語入力のためのパッケージインストール
`apt-get install ibus-gtk3 ibus-gtk ibus-mozc mozc-utils-gui`

# 音を鳴らすためのPulseAudio関係パッケージのインストール
`apt-get install pulseaudio rtkit pavucontrol`
音量のコントロールは後述の`wayland-terminal`から`pavucontrol` を実行する。

# emacs関係パッケージ
`apt-get install emacs emacs-el emacs-common-non-dfsg`

# Wayland/Weston関連のほぼ最低限のパッケージインストール
`apt-get install weston xwayland xfonts-base fonts-vlgothic fonts-ipafont poppler-data`

# Firefoxのインストール
`firefox-esr-l10n-ja` または `firefox-l10n-ja` をインストールする。後者のほうがバージョンが高いがunstableからしかインストール出来ない

# Wayland/Westonで日本語入力する手順（結構コツがいる）
## `weston.ini` の設定
例えばホームディレクトリに以下を置く。レイアウトを指定しないとアメリカ配列になりキートップと入力文字が一致しなくなる。

```text:weston.ini
[core]
xwayland=true
require-input=false
backend=drm-backend.so
modules=systemd-notify.so
use-pixman=true

[keyboard]
keymap_layout=jp

[shell]
#client=/usr/bin/weston-terminal
locking=false
animation=fade
allow-zap=true
```

## westonとwayland-terminalの起動
`weston --log=weston.log --config=weston.ini` とGUIではないコンソールから打ってwestonを起動し、左上にあるアイコンを起動して`wayland-terminal`を起動する。現状では`wayland-terminal`からはどうやっても日本語入力出来ない（`ibus-wayland`パッケージがバグっているため）。ターミナルから日本語入力したい場合は例えば`gnome-terminal`などを用いる

## 環境変数の設定
```text:/etc/environment
CLUTTER_IM_MODULE=ibus
QT4_IM_MODULE=ibus
QT_IM_MODULE=ibus
XMODIFIERS=@im=ibus
GTK_IM_MODULE=ibus
LANG=ja_JP.UTF-8
```
上記の環境変数を設定する。例えば `/etc/environment` に書く。

## `ibus-daemon` の起動
```shell-session
$ ibus-daemon -d -r -x
$ ibus engine mozc-jp
```
上記コマンドの実行後に`firefox`等で日本語入力出来る。入力の設定は`ibus-setup`コマンドを`wayland-terminal`などから実行する。`firefox` を起動して日本語入力や音楽再生を確認して下さい。

## uim
`ibus` の代わりにuimを使う場合、環境変数設定の`ibus`を`uim`に置き換えて、`uim-xim` を起動すると日本語入力できるようになります。必要なパッケージは xfonts-base im-config mozc-data mozc-server mozc-utils-gui uim-mozc uim uim-data uim-gtk2.0 uim-gtk2.0-immodule uim-gtk3 uim-gtk3-immodule
uim-plugins uim-qt5 uim-qt5-immodule uim-xim


# `virt-manager` へのメモ書き
`virt-manager` はwestonからでも動作するが、それとは独立に `APT::Install-Recommends 0;` の設定だと`gir1.2-spiceclientgtk-3.0` がインストールされないから画面が出ない。そのほかにもrecommendパッケージにいろいろ入っているので`--install-recommends`を付けてインストールしたほうがよいかも。