Sway on Ubuntu 調査続き 最低限の設定まで 2/2

# Sway on Ubuntu 21.10の続きの続き
前回に引き続き、残分をやっていきます。
また、前回分で足りてなかったところがあるのでいくつか追加します。

- スピーカーの設定
- ログイン（デスクトップマネージャ）の設定
- VirtualBoxの導入と設定

# (追加) 3.ブラウザの導入
音声周りの試験の題材にとニコニコ動画を流そうとしたら、、失敗。
動画周りのライブラリが抜けてましたので、追加します。
音声周りは、スピーカの設定の項にて。

```
# apt install ffmpeg
```

# 4.スピーカーの設定
現状通りpulseaudioを、、、と思ったのですが、PipeWireという単語がちらほらググると引っかかります。
今後どうなるか要注意ですが、現状ではpulseaudioをつかう前提で手順を整理します。

まず、導入。

```
# apt install alsa-base pulseaudio
```

これで音が出る、、はずです。
だいぶあれこれいじってきてしまっているので意図せず必要ライブラリを先に入れてしまっている可能性はなくはありません。

で、ボリューム設定変更用のキーバインドを。
あとpulseaudioプロセスが起動していないとボリューム変更を受け付けてくれないので、プロセス起動も入れておきます。
以上踏まえて、.config/sway/configの末尾に以下を足します。

```
# Sound
    bindsym $mod+t exec exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') -5%
    bindsym $mod+y exec exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5%

exec pulseaudio --start --log-target=syslog --daemonize+no
```

# 5. ログイン（ディスプレイマネージャ）の設定
。。厄介なんですよ、これ。。
というのもデスクトップマネージャ自体も動作にディスプレイサーバが必要で、Xorgをベースにしてたり、Wayland「にも」対応している（いじらないとXorg側で動く、、）というものが多々。。
そもそもswayは推奨のディスプレイマネージャを持たないんだそうで、、
https://wiki.archlinux.jp/index.php/Sway#.E3.83.87.E3.82.A3.E3.82.B9.E3.83.97.E3.83.AC.E3.82.A4.E3.83.9E.E3.83.8D.E3.83.BC.E3.82.B8.E3.83.A3.E3.82.92.E4.BD.BF.E3.81.86

一旦、lightdmで動作するところまで持っていってみます。

```
# apt show lightdm
Package: lightdm
Version: 1.30.0-0ubuntu4
Priority: optional
Section: universe/x11
Origin: Ubuntu
Maintainer: Robert Ancell <robert.ancell@ubuntu.com>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 855 kB
Provides: x-display-manager
Pre-Depends: dpkg (>= 1.15.7.2)
Depends: debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.14), libgcrypt20 (>= 1.7.0), libglib2.0-0 (>= 2.39.4), libpam0g (>= 0.99.7.1), libxcb1, libxdmcp6, adduser, bash (>= 4.3), dbus, libglib2.0-bin, libpam-runtime (>= 0.76-14), libpam-modules, plymouth (>= 0.8.8-0ubuntu18)
Recommends: xserver-xorg, unity-greeter | lightdm-greeter | lightdm-kde-greeter
Suggests: bindfs
Conflicts: liblightdm-gobject-0-0, liblightdm-qt-0-0
Homepage: https://github.com/canonical/lightdm
Task: xubuntu-core, xubuntu-desktop, ubuntukylin-desktop, ubuntu-mate-core, ubuntu-mate-desktop, ubuntu-budgie-desktop, ubuntu-budgie-desktop-raspi
Download-Size: 148 kB
APT-Sources: http://jp.archive.ubuntu.com/ubuntu impish/universe amd64 Packages
Description: Display Manager
 LightDM is a X display manager that:
  * Has a lightweight codebase
  * Is standards compliant (PAM, ConsoleKit, etc)
  * Has a well defined interface between the server and user interface
  * Cross-desktop (greeters can be written in any toolkit)
```

気をつけないとxserverがはいっちゃいますので、--no-install-recommendsで。

```
# apt install --no-install-recommends lightdm lightdm-gtk-greeter
```

で、テスト。

```
# lightdm --test-mode --debug
[+0.00s] DEBUG: Logging to /var/log/lightdm/lightdm.log
[+0.00s] DEBUG: Starting Light Display Manager 1.30.0, UID=0 PID=1338
[+0.00s] DEBUG: Loading configuration dirs from /usr/share/lightdm/lightdm.conf.d
[+0.00s] DEBUG: Loading configuration from /usr/share/lightdm/lightdm.conf.d/50-disable-guest.conf
[+0.00s] DEBUG: Loading configuration from /usr/share/lightdm/lightdm.conf.d/50-disable-log-backup.conf
[+0.00s] DEBUG: Loading configuration from /usr/share/lightdm/lightdm.conf.d/50-greeter-wrapper.conf
[+0.00s] DEBUG: Loading configuration from /usr/share/lightdm/lightdm.conf.d/50-guest-wrapper.conf
[+0.00s] DEBUG: Loading configuration from /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf
[+0.00s] DEBUG: Loading configuration from /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf
[+0.00s] DEBUG: Loading configuration dirs from /usr/local/share/lightdm/lightdm.conf.d
[+0.00s] DEBUG: Loading configuration dirs from /etc/xdg/lightdm/lightdm.conf.d
[+0.00s] DEBUG: Loading configuration from /etc/lightdm/lightdm.conf
[+0.00s] DEBUG: Registered seat module local
[+0.00s] DEBUG: Registered seat module xremote
[+0.00s] DEBUG: Using D-Bus name org.freedesktop.DisplayManager
[+0.00s] DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
[+0.00s] DEBUG: Monitoring logind for seats
[+0.00s] DEBUG: New seat added from logind: seat0
[+0.01s] DEBUG: Seat seat0: Loading properties from config section Seat:*
[+0.01s] DEBUG: Seat seat0 has property CanMultiSession=no
[+0.01s] DEBUG: Seat seat0: Starting
[+0.01s] DEBUG: Seat seat0: Creating greeter session
[+0.01s] DEBUG: Seat seat0: Creating display server of type x
[+0.01s] DEBUG: Using VT 7
[+0.01s] DEBUG: Seat seat0: Starting local X display on VT 7
[+0.01s] DEBUG: XServer 0: Logging to /var/log/lightdm/x-0.log
[+0.01s] DEBUG: XServer 0: Can't launch X server X -core, not found in path
[+0.01s] DEBUG: XServer 0: X server stopped
[+0.01s] DEBUG: Releasing VT 7
[+0.01s] DEBUG: Seat seat0: Display server stopped
[+0.01s] DEBUG: Seat seat0: Can't create display server for greeter
[+0.01s] DEBUG: Seat seat0: Session stopped
[+0.01s] DEBUG: Seat seat0: Stopping display server, no sessions require it
[+0.01s] DEBUG: Seat seat0: Stopping
[+0.01s] DEBUG: Seat seat0: Stopped
[+0.01s] DEBUG: Failed to start seat: seat0
```

Xを使おうとして、当然ないんで、エラーになります。
コンフィグできれいにWaylandに切り替える設定ぽいものは見つけられませんでした。

じゃぁ試しにXwaylandでと思って以下のようなXwaylandを使う方法で試してみますが、、、

```
# apt install xwayland

# echo /etc/lightdm/lightdm.conf.d/99_wayland.conf
[Seat:*]
xserver-command=Xwayland -core

# lightdm --test-mode --debug
[+0.00s] DEBUG: Logging to /var/log/lightdm/lightdm.log
[+0.00s] DEBUG: Starting Light Display Manager 1.30.0, UID=0 PID=1347
[+0.00s] DEBUG: Loading configuration dirs from /usr/share/lightdm/lightdm.conf.d
[+0.00s] DEBUG: Loading configuration from /usr/share/lightdm/lightdm.conf.d/50-disable-guest.conf
[+0.00s] DEBUG: Loading configuration from /usr/share/lightdm/lightdm.conf.d/50-disable-log-backup.conf
[+0.00s] DEBUG: Loading configuration from /usr/share/lightdm/lightdm.conf.d/50-greeter-wrapper.conf
[+0.00s] DEBUG: Loading configuration from /usr/share/lightdm/lightdm.conf.d/50-guest-wrapper.conf
[+0.00s] DEBUG: Loading configuration from /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf
[+0.00s] DEBUG: Loading configuration from /usr/share/lightdm/lightdm.conf.d/60-lightdm-gtk-greeter.conf
[+0.00s] DEBUG: Loading configuration dirs from /usr/local/share/lightdm/lightdm.conf.d
[+0.00s] DEBUG: Loading configuration dirs from /etc/xdg/lightdm/lightdm.conf.d
[+0.00s] DEBUG: Loading configuration from /etc/lightdm/lightdm.conf.d/99_wayland_sway.conf
[+0.00s] DEBUG: Loading configuration from /etc/lightdm/lightdm.conf
[+0.01s] DEBUG: Registered seat module local
[+0.01s] DEBUG: Registered seat module xremote
[+0.01s] DEBUG: Using D-Bus name org.freedesktop.DisplayManager
[+0.01s] DEBUG: _g_io_module_get_default: Found default implementation local (GLocalVfs) for ?gio-vfs?
[+0.02s] DEBUG: Monitoring logind for seats
[+0.02s] DEBUG: New seat added from logind: seat0
[+0.02s] DEBUG: Seat seat0: Loading properties from config section Seat:*
[+0.02s] DEBUG: Seat seat0 has property CanMultiSession=no
[+0.02s] DEBUG: Seat seat0: Starting
[+0.02s] DEBUG: Seat seat0: Creating greeter session
[+0.02s] DEBUG: Seat seat0: Creating display server of type x
[+0.03s] DEBUG: Using VT 7
[+0.03s] DEBUG: Seat seat0: Starting local X display on VT 7
[+0.03s] DEBUG: XServer 0: Logging to /var/log/lightdm/x-0.log
[+0.03s] DEBUG: XServer 0: Writing X server authority to /var/run/lightdm/root/:0
[+0.03s] DEBUG: XServer 0: Launching X Server
[+0.03s] DEBUG: Launching process 1353: /usr/bin/Xwayland -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
[+0.03s] DEBUG: XServer 0: Waiting for ready signal from X server :0
[+0.03s] DEBUG: Acquired bus name org.freedesktop.DisplayManager
[+0.03s] DEBUG: Registering seat with bus path /org/freedesktop/DisplayManager/Seat0
[+0.03s] WARNING: Error getting user list from org.freedesktop.Accounts: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.freedesktop.Accounts was not provided by any .service files
[+0.03s] DEBUG: Loading user config from /etc/lightdm/users.conf
[+0.03s] DEBUG: User hogemin added
[+0.11s] DEBUG: Process 1353 terminated with signal 6
[+0.11s] DEBUG: XServer 0: X server stopped
[+0.11s] DEBUG: Releasing VT 7
[+0.11s] DEBUG: XServer 0: Removing X server authority /var/run/lightdm/root/:0
[+0.11s] DEBUG: Seat seat0: Display server stopped
[+0.11s] DEBUG: Seat seat0: Stopping session
[+0.11s] DEBUG: Seat seat0: Session stopped
[+0.11s] DEBUG: Seat seat0: Stopping display server, no sessions require it
[+0.11s] DEBUG: Seat seat0: Stopping; greeter display server failed to start
[+0.11s] DEBUG: Seat seat0: Stopping
[+0.11s] DEBUG: Seat seat0: Stopped
[+0.11s] DEBUG: Required seat has stopped
[+0.11s] DEBUG: Stopping display manager
[+0.11s] DEBUG: Display manager stopped
[+0.11s] DEBUG: Stopping daemon

# cat /var/log/lightdm/x-0.log  | head
Unrecognized option: vt7
use: X [:<display>] [option]
-a #                   default pointer acceleration (factor)
-ac                    disable access control restrictions
-audit int             set audit trail level
-auth file             select authorization file
-br                    create root window with black background
+bs                    enable any backing store support
-bs                    disable any backing store support
-c                     turns off key-click
```

Xで使っている引数についてXwaylandで食えないものがあるみたいで、NGになります。
惜しいところまで来てるのではなかろうかという気がするのですが、全然そうでもないのかな。。

Desktop + sway構成の場合は、正常に起動します。
lightdmは多分Xを素直に使っているのだと思いますが、詳細は確認方法がわからず。

ここはいかんともしがたいので、これも22.04のタイミングで再検討ですね。。
最悪ターミナルでログインしてからsway起動するか、自動で起動させるかでもいいのですが、PC立ち上げたときにそれっぽい画面が開くのは気分がいいので、なんとかうまくしたいところです。

# 6. VirtualBoxの導入と設定
。。。現状では無理です。
これが一番の懸案だったりするのですが、現状まだ21.10用のdebすら公開されていませんし、今試しているのは実機じゃないのでdebがあっても試せない。
Virtual Box on Virtual Box,,, 何が起こるかわかったもんじゃないので、、。

なんだかんだ言っても今回のようのにGUI付きのOSをDVDからぽんと導入して試すということがありますので、dockerだけでは流石にどうにもならず、何かしらの仮想環境が必須で。
ここの安定をギリギリまでまたないと22.04への移行はできないかもしれませんね。。

# 脱線 Ubuntu Desktop + sway
必要なものが一通り揃った状態を整えるなら、一回Ubuntu Desktopでインストールしてからapt install swayして、デスクトップマネージャのログインの際にswayを選ぶ、、という方法があります。
今使っているi3がその方法なのですが、i3側から呼び出せない（呼び出す必要もない）アプリなどが入ってしまっていて気持ちが悪いな、、と思ってたこともあり、今回その方法を取らない方法を探ってみました。
実際は、Ubuntu 21.10 Desktop + swayの環境と今回の環境をならべて、パッケージや設定の差分眺めながら動く構成をなんとか探ってた感じではありますが。
素で導入した状態で、Ubuntu 21.10 Desktop + swayのほうが軽量かつ安定している感じがものすごくあるのは事実なので、22.04の際に改めて検証して、結局　Ubuntu Desktop + swayの構成を取るかもしれませんが、、まぁ今回何がどう動作して環境が動いているかを学び直す良い機会になりましたので、良しとします。

# 脱線 ArchLinux使えば？
実際今回の調べものでもArchLinuxのサイトにたどり着くことが多く、シンプルにswayを使うならUbuntuにこだわらないほうが良いのでは、と感じるところは多々ありました。
ArchLinuxはきちんと使ったことないですし、勉強がてらそちらを使うというのもありではあるのですが、、、
サーバ用途で仕事で使う際に流石にArchを使う機会はなさそうだなというのと、カスタマイズがききすぎてしまって古くなってろくにメンテされないライブラリを使ってても気がつくのが遅くなってしまうのでは、という食わず嫌いもあり、手が出せてませんでした。
ただし、今回Ubuntuへの導入整理していて悩ましい箇所がいくつかあったのも事実ですので、別途ArchLinux使った場合の調査もしておくかな。。

# まとめ
swayをubuntuで使う、可能な限りXorgに依存しない構成を選ぶ、ということで調べてみました。
i3から引っ越そうとした場合、Xorgに依存しているものが結構残るのですが、それがいずれWayland対応してくれて解消するのか、対応しきれず別のライブラリに入れ替えになるのか、、結構注意を要する箇所が多そうです。
当面はXorgとWaylandの共存にはなるのでしょうけれど。
22.04が出た段階で改めて調査しますが、結構ヒヤヒヤです。
とりあえずこんなところで。