Sway on Ubuntu 22.04

# 背景
Ubuntu 22.04もリリースされてそろそろ１ヶ月立ちますし、22.04版のSway構築手順を確認しておこうと思います。

# そもそも Ubuntuのインストールの変更
20.04と比べて、パット見で気になった変更点は以下でしょうか。

- インストール時に、最新のインストーラを確認して、該当があったらgitからダウンロードしてきてそれを実行する
- インストール構成で「minimum」が選べる

他、設定投入画面が省略されているものがあった気がしますが、詳細は追ってません。

## minimum構成
サーバを建てる際は可能な限り最小パッケージで組みたくなるものなのですが、、
ざっと無印構成とminimum構成のパッケージ数を比較すると、無印が606で、minimumが420。

で、minimumは何を削っているかというと、、、

```bash
apt-utils/jammy,now 2.4.5 amd64 [installed,automatic]	      
bash-completion/jammy,now 1:2.11-5ubuntu1 all [installed,auto 
bc/jammy,now 1.07.1-3build1 amd64 [installed,automatic]	      
bind9-dnsutils/jammy-updates,jammy-security,now 1:9.18.1-1ubu 
bind9-host/jammy-updates,jammy-security,now 1:9.18.1-1ubuntu1 
bind9-libs/jammy-updates,jammy-security,now 1:9.18.1-1ubuntu1 
bolt/jammy,now 0.9.2-1 amd64 [installed,automatic]	      
bsdextrautils/jammy,now 2.37.2-4ubuntu3 amd64 [installed,auto 
busybox-static/jammy,now 1:1.30.1-7ubuntu3 amd64 [installed,a 
byobu/jammy,now 5.133-1 all [installed,automatic]	      
cloud-initramfs-copymods/jammy,now 0.47ubuntu1 all [installed 
cloud-initramfs-dyn-netconf/jammy,now 0.47ubuntu1 all [instal 
command-not-found/jammy,now 22.04.0 all [installed,automatic] 
cron/jammy,now 3.0pl1-137ubuntu3 amd64 [installed,automatic]  
debconf-i18n/jammy,now 1.5.79ubuntu1 all [installed,automatic 
distro-info/jammy,now 1.1build1 amd64 [installed,automatic]   
dmidecode/jammy,now 3.3-3 amd64 [installed,automatic]	      
dosfstools/jammy,now 4.2-1build3 amd64 [installed,automatic]  
ed/jammy,now 1.18-1 amd64 [installed,automatic]		      
eject/jammy,now 2.37.2-4ubuntu3 amd64 [installed,automatic]   
ethtool/jammy,now 1:5.16-1 amd64 [installed,automatic]	      
file/jammy,now 1:5.41-3 amd64 [installed,automatic]	      
fonts-ubuntu-console/jammy,now 0.83-6ubuntu1 all [installed,a 
friendly-recovery/jammy,now 0.2.42 all [installed,automatic]  
ftp/jammy,now 20210827-4build1 all [installed,automatic]      
fwupd-signed/jammy,now 1.44+1.2-3 amd64 [installed,automatic] 
fwupd/jammy,now 1.7.5-3 amd64 [installed,automatic]	      
git-man/jammy-updates,jammy-security,now 1:2.34.1-1ubuntu1.2  
git/jammy-updates,jammy-security,now 1:2.34.1-1ubuntu1.2 amd6 
hdparm/jammy,now 9.60+ds-1build3 amd64 [installed,automatic]  
htop/jammy,now 3.0.5-7build2 amd64 [installed,automatic]      
info/jammy,now 6.8-4build1 amd64 [installed,automatic]	      
init/jammy,now 1.62 amd64 [installed]			      
install-info/jammy,now 6.8-4build1 amd64 [installed,automatic 
iptables/jammy,now 1.8.7-1ubuntu5 amd64 [installed,automatic] 
iputils-ping/jammy,now 3:20211215-1 amd64 [installed,automati 
iputils-tracepath/jammy,now 3:20211215-1 amd64 [installed,aut 
irqbalance/jammy,now 1.8.0-1build1 amd64 [installed,automatic 
landscape-common/jammy,now 19.12-0ubuntu13 amd64 [installed,a 
less/jammy,now 590-1build1 amd64 [installed,automatic]	      
libarchive13/jammy,now 3.6.0-1ubuntu1 amd64 [installed,automa 
libatasmart4/jammy,now 0.19-5build2 amd64 [installed,automati 
libblockdev-crypto2/jammy,now 2.26-1 amd64 [installed,automat 
libblockdev-fs2/jammy,now 2.26-1 amd64 [installed,automatic]  
libblockdev-loop2/jammy,now 2.26-1 amd64 [installed,automatic 
libblockdev-part-err2/jammy,now 2.26-1 amd64 [installed,autom 
libblockdev-part2/jammy,now 2.26-1 amd64 [installed,automatic 
libblockdev-swap2/jammy,now 2.26-1 amd64 [installed,automatic 
libblockdev-utils2/jammy,now 2.26-1 amd64 [installed,automati 
libblockdev2/jammy,now 2.26-1 amd64 [installed,automatic]     
liberror-perl/jammy,now 0.17029-1 all [installed,automatic]   
libestr0/jammy,now 0.1.10-2.1build3 amd64 [installed,automati 
libevent-core-2.1-7/jammy,now 2.1.12-stable-1build3 amd64 [in 
libfastjson4/jammy,now 0.99.9-1build2 amd64 [installed,automa 
libflashrom1/jammy,now 1.2-5build1 amd64 [installed,automatic 
libfribidi0/jammy-updates,jammy-security,now 1.0.8-2ubuntu3.1 
libftdi1-2/jammy,now 1.5-5build3 amd64 [installed,automatic]  
libfwupd2/jammy,now 1.7.5-3 amd64 [installed,automatic]	      
libfwupdplugin5/jammy,now 1.7.5-3 amd64 [installed,automatic] 
libgcab-1.0-0/jammy,now 1.4-3build2 amd64 [installed,automati 
libgpgme11/jammy,now 1.16.0-1.2ubuntu4 amd64 [installed,autom 
libgpm2/jammy,now 1.20.7-10build1 amd64 [installed,automatic] 
libgusb2/jammy,now 0.3.10-1 amd64 [installed,automatic]	      
libip6tc2/jammy,now 1.8.7-1ubuntu5 amd64 [installed,automatic 
libjansson4/jammy,now 2.13.1-1.1build3 amd64 [installed,autom 
libjcat1/jammy,now 0.1.9-1 amd64 [installed,automatic]	      
libjson-glib-1.0-0/jammy,now 1.6.6-1build1 amd64 [installed,a 
libjson-glib-1.0-common/jammy,now 1.6.6-1build1 all [installe 
liblmdb0/jammy,now 0.9.24-1build2 amd64 [installed,automatic] 
libmagic-mgc/jammy,now 1:5.41-3 amd64 [installed,automatic]   
libmagic1/jammy,now 1:5.41-3 amd64 [installed,automatic]      
libmaxminddb0/jammy,now 1.5.2-1build2 amd64 [installed,automa 
libmbim-glib4/jammy,now 1.26.2-1build1 amd64 [installed,autom 
libmbim-proxy/jammy,now 1.26.2-1build1 amd64 [installed,autom 
libmm-glib0/jammy,now 1.18.6-1 amd64 [installed,automatic]    
libmspack0/jammy,now 0.10.1-2build2 amd64 [installed,automati 
libnetfilter-conntrack3/jammy,now 1.0.9-1 amd64 [installed,au 
libnewt0.52/jammy,now 0.52.21-5ubuntu2 amd64 [installed,autom 
libnfnetlink0/jammy,now 1.0.1-3build3 amd64 [installed,automa 
libnftables1/jammy,now 1.0.2-1ubuntu2 amd64 [installed,automa 
libnftnl11/jammy,now 1.2.1-1build1 amd64 [installed,automatic 
libnl-3-200/jammy,now 3.5.0-0.1 amd64 [installed,automatic]   
libnl-genl-3-200/jammy,now 3.5.0-0.1 amd64 [installed,automat 
libnspr4/jammy,now 2:4.32-3build1 amd64 [installed,automatic] 
libnss3/jammy,now 2:3.68.2-0ubuntu1 amd64 [installed,automati 
libnuma1/jammy,now 2.0.14-3ubuntu2 amd64 [installed,automatic 
libparted-fs-resize0/jammy,now 3.4-2build1 amd64 [installed,a 
libparted2/jammy,now 3.4-2build1 amd64 [installed,automatic]  
libpcap0.8/jammy,now 1.10.1-4build1 amd64 [installed,automati 
libpipeline1/jammy,now 1.5.5-1 amd64 [installed,automatic]    
libpython3.10/jammy,now 3.10.4-3 amd64 [installed,automatic]  
libqmi-glib5/jammy,now 1.30.4-1 amd64 [installed,automatic]   
libqmi-proxy/jammy,now 1.30.4-1 amd64 [installed,automatic]   
libslang2/jammy,now 2.3.2-5build4 amd64 [installed,automatic] 
libsmbios-c2/jammy,now 2.4.3-1build1 amd64 [installed,automat 
libsodium23/jammy,now 1.0.18-1build2 amd64 [installed,automat 
libtcl8.6/jammy,now 8.6.12+dfsg-1build1 amd64 [installed,auto 
libtext-charwidth-perl/jammy,now 0.04-10build3 amd64 [install 
libtext-iconv-perl/jammy,now 1.7-7build3 amd64 [installed,aut 
libtext-wrapi18n-perl/jammy,now 0.06-9 all [installed,automat 
libtss2-esys-3.0.2-0/jammy,now 3.2.0-1ubuntu1 amd64 [installe 
libtss2-mu0/jammy,now 3.2.0-1ubuntu1 amd64 [installed,automat 
libtss2-sys1/jammy,now 3.2.0-1ubuntu1 amd64 [installed,automa 
libtss2-tcti-cmd0/jammy,now 3.2.0-1ubuntu1 amd64 [installed,a 
libtss2-tcti-device0/jammy,now 3.2.0-1ubuntu1 amd64 [installe 
libtss2-tcti-mssim0/jammy,now 3.2.0-1ubuntu1 amd64 [installed 
libtss2-tcti-swtpm0/jammy,now 3.2.0-1ubuntu1 amd64 [installed 
libudisks2-0/jammy,now 2.9.4-1ubuntu2 amd64 [installed,automa 
libutempter0/jammy,now 1.2.1-2build2 amd64 [installed,automat 
libuv1/jammy,now 1.43.0-1 amd64 [installed,automatic]	      
libvolume-key1/jammy,now 0.3.12-3.1build3 amd64 [installed,au 
libxmlsec1-openssl/jammy,now 1.2.33-1build2 amd64 [installed, 
libxmlsec1/jammy,now 1.2.33-1build2 amd64 [installed,automati 
libxslt1.1/jammy,now 1.1.34-4build2 amd64 [installed,automati 
locales/jammy,now 2.35-0ubuntu3 all [installed,automatic]     
logrotate/jammy,now 3.19.0-1ubuntu1 amd64 [installed,automati 
lshw/jammy,now 02.19.git.2021.06.19.996aaad9c7-2build1 amd64  
lsof/jammy,now 4.93.2+dfsg-1.1build2 amd64 [installed,automat 
manpages/jammy,now 5.10-1ubuntu1 all [installed,automatic]    
mawk/jammy,now 1.3.4.20200120-3 amd64 [installed,automatic]   
modemmanager/jammy,now 1.18.6-1 amd64 [installed,automatic]   
motd-news-config/jammy,now 12ubuntu4 all [installed,upgradabl 
mtr-tiny/jammy,now 0.95-1 amd64 [installed,automatic]	      
nano/jammy,now 6.2-1 amd64 [installed,automatic]	      
netcat-openbsd/jammy,now 1.218-4ubuntu1 amd64 [installed,auto 
nftables/jammy,now 1.0.2-1ubuntu2 amd64 [installed,automatic] 
open-vm-tools/jammy,now 2:11.3.5-1ubuntu4 amd64 [installed,au 
overlayroot/jammy,now 0.47ubuntu1 all [installed,automatic]   
parted/jammy,now 3.4-2build1 amd64 [installed,automatic]      
pastebinit/jammy,now 1.5.1-1ubuntu1 all [installed,automatic] 
patch/jammy,now 2.7.6-7build2 amd64 [installed,automatic]     
powermgmt-base/jammy,now 1.36 all [installed,automatic]	      
psmisc/jammy,now 23.4-2build3 amd64 [installed,automatic]     
python3-automat/jammy,now 20.2.0-1 all [installed,automatic]  
python3-bcrypt/jammy,now 3.2.0-1build1 amd64 [installed,autom 
python3-commandnotfound/jammy,now 22.04.0 all [installed,auto 
python3-constantly/jammy,now 15.1.0-2 all [installed,automati 
python3-debconf/jammy,now 1.5.79ubuntu1 all [installed,automa 
python3-debian/jammy,now 0.1.43ubuntu1 all [installed,automat 
python3-gdbm/jammy,now 3.10.4-0ubuntu1 amd64 [installed,autom 
python3-hamcrest/jammy,now 2.0.2-2 all [installed,automatic]  
python3-hyperlink/jammy,now 21.0.0-3 all [installed,automatic 
python3-incremental/jammy,now 21.3.0-1 all [installed,automat 
python3-newt/jammy,now 0.52.21-5ubuntu2 amd64 [installed,auto 
python3-openssl/jammy,now 21.0.0-1 all [installed,automatic]  
python3-pexpect/jammy,now 4.8.0-2ubuntu1 all [installed,autom 
python3-ptyprocess/jammy,now 0.7.0-3 all [installed,automatic 
python3-pyasn1-modules/jammy,now 0.2.1-1 all [installed,autom 
python3-pyasn1/jammy,now 0.4.8-1 all [installed,automatic]    
python3-service-identity/jammy,now 18.1.0-6 all [installed,au 
python3-twisted/jammy-updates,jammy-security,now 22.1.0-2ubun 
python3-zope.interface/jammy,now 5.4.0-1build1 amd64 [install 
rsync/jammy,now 3.2.3-8ubuntu3 amd64 [installed,automatic]    
rsyslog/jammy-updates,jammy-security,now 8.2112.0-2ubuntu2.2  
run-one/jammy,now 1.17-0ubuntu1 all [installed,automatic]     
sbsigntool/jammy,now 0.9.4-2ubuntu2 amd64 [installed,automati 
screen/jammy,now 4.9.0-1 amd64 [installed,automatic]	      
secureboot-db/jammy,now 1.8 amd64 [installed,automatic]	      
sosreport/jammy,now 4.3-1ubuntu2 amd64 [installed,automatic]  
strace/jammy,now 5.16-0ubuntu3 amd64 [installed,automatic]    
tcl8.6/jammy,now 8.6.12+dfsg-1build1 amd64 [installed,automat 
tcl/jammy,now 8.6.11+1build2 amd64 [installed,automatic]      
tcpdump/jammy,now 4.99.1-3build2 amd64 [installed,automatic]  
telnet/jammy,now 0.17-44build1 amd64 [installed,automatic]    
time/jammy,now 1.9-0.1build2 amd64 [installed,automatic]      
tmux/jammy,now 3.2a-4build1 amd64 [installed,automatic]	      
tnftp/jammy,now 20210827-4build1 amd64 [installed,automatic]  
tpm-udev/jammy,now 0.6 all [installed,automatic]	      
ubuntu-advantage-tools/jammy,now 27.7~22.04.1 amd64 [installe 
ubuntu-minimal/jammy,now 1.481 amd64 [installed]	      
ubuntu-server/jammy,now 1.481 amd64 [installed]		      
ubuntu-standard/jammy,now 1.481 amd64 [installed]	      
udisks2/jammy,now 2.9.4-1ubuntu2 amd64 [installed,automatic]  
ufw/jammy,now 0.36.1-4build1 all [installed,automatic]	      
update-manager-core/jammy,now 1:22.04.9 all [installed,automa 
update-notifier-common/jammy,now 3.192.54 all [installed,auto 
usb-modeswitch-data/jammy,now 20191128-4 all [installed,autom 
usb-modeswitch/jammy,now 2.6.1-3ubuntu2 amd64 [installed,auto 
usb.ids/jammy,now 2022.04.02-1 all [installed,automatic]      
uuid-runtime/jammy,now 2.37.2-4ubuntu3 amd64 [installed,autom 
vim-common/jammy,now 2:8.2.3995-1ubuntu2 all [installed,autom 
vim-runtime/jammy,now 2:8.2.3995-1ubuntu2 all [installed,auto 
vim-tiny/jammy,now 2:8.2.3995-1ubuntu2 amd64 [installed,autom 
vim/jammy,now 2:8.2.3995-1ubuntu2 amd64 [installed,automatic] 
whiptail/jammy,now 0.52.21-5ubuntu2 amd64 [installed,automati 
zerofree/jammy,now 1.1.1-1build3 amd64 [installed,automatic]  
```

気になるところとしては、以下でしょうか。

- viがない。というか、nanoも入っていない。
- lessも入ってない。
- nftables, iptables, ufwが入っていない、、
- cromもrsyslogもufwも入ってない、、、

サーバ用途で考えるとminimumベースでnftablesやcrom/rsyslogなどの最小限のものを追加導入する方式おありえますが、自分の普段使いとしては、あえてminimumにはしなくていいかな、、という感じですね。

# Ubuntu 22.04にSwayを導入する
実機に導入する前に、VirtualBoxの仮想マシンで手順を整理したいと思います。
まずはVirtualBoxにUbuntu 22.04をインストール。
上記のとおり、minimumにはしません。

で、swayを導入。

```bash
# apt install --no-install-recommends sway
```

依存関係でxwaylandなどの導入は行われません。
パット見、依存関係は結構スッキリしたような。

## Swayの初回起動まで

で、起動、、、しません。

```bash
$ sway > ./sway.log
```

症状としては、上記の表示のまま画面がフリーズしてしまう感じ。
ログの方はちゃんと出力されていて、内容をみてみると、、

```bash
$ head ./sway.log  
VMware: No 3D enabled (0, Success).
libEGL warning: DRI2: failed to create dri screen
00:00:00.314 [ERROR] [wlr] [EGL] command: eglInitialize, error: EGL_NOT_INITIALIZED (0x3001), message: "DRI2: failed to create screen"
VMware: No 3D enabled (0, Success).
libEGL warning: DRI2: failed to create dri screen
00:00:00.334 [ERROR] [wlr] [EGL] command: eglInitialize, error: EGL_NOT_INITIALIZED (0x3001), message: "DRI2: failed to create screen"
00:00:00.334 [ERROR] [wlr] [EGL] command: eglInitialize, error: EGL_NOT_INITIALIZED (0x3001), message: "eglInitialize"
00:00:00.334 [ERROR] [wlr] [render/egl.c:242] Failed to initialize EGL
00:00:00.334 [ERROR] [wlr] [render/egl.c:521] Failed to initialize EGL context
00:00:00.334 [ERROR] [wlr] [render/gles2/renderer.c:698] Could not initialize EGL
```

一番上に気になる記載が、、
以下のチェックがディフォルトだと外れていたのですが、これにチェック入れたら起動しました。
21.04では気にした記憶がないのですが。。まぁ解決したので深追いはしてないです。

![20220521_13h08m00s_grim.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587269/0b530835-ce51-0132-caed-60deaeb9cecc.png)

さておき。あらためて、起動。しました。

![20220521_13h37m50s_grim.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/587269/df7effb1-2471-c460-ea56-e4f318112da7.png)

。。。て、、ん？
マウスカーソルが表示されていない、、

調べたら、ドンピシャのがありました。
仮想マシン環境で実行するときは以下の環境変数を入れないとカーソルが出ないことがあるんだそうです。
https://wiki.archlinux.jp/index.php/Sway#.E3.83.9E.E3.82.A6.E3.82.B9.E3.82.AB.E3.83.BC.E3.82.BD.E3.83.AB.E3.81.8C.E8.A1.A8.E7.A4.BA.E3.81.95.E3.82.8C.E3.81.AA.E3.81.84

```
$ export WLR_NO_HARDWARE_CURSORS=1
```

.bashrcあたりに仕込むかな。

## 最小限の設定いろいろ
では改めて、色々設定していきます。

### マルチディスプレイ
実機に導入するときに試すので、今回はパス。

### menu
標準だとdmenuが入っているので、waylandネイティブでできるものに切り替えます。
archではbmenuを使っていましたが、ubuntuのパッケージにはbmenuがないんでしたね。。
自分でmakeするのもなぁ、、
https://github.com/Cloudef/bemenu

以前調べた以下の方法の設定をswayのコンフィグに追記する形で凌ぐことにします。
まず、fzfのパッケージが必要なので追加。

```
# apt install fzf
```

合わせて、swayのコンフィグもローカルに持ってきておきます。

```
$ mkdir -p ~/.local/sway
$ cp /etc/sway/config ~/.local/sway/
```

で、以下をswayコンフィグに追加。

```
set $menu foot -T menu bash -c 'compgen -c | sort -u | fzf | xargs swaymsg exec --'
for_window [app_id="foot" title="menu"] {
  floating enable
  resize set width 25 ppt height 20 ppt
  move position 0 px 0 px
}
```

## ブラウザ
firefoxを入れます。
22.04ではsnapでの導入になったとき来ましたが、とりあえずaptで実行するとsnapを呼び出してインストールしてくれるみたいですね。

```bash
# apt install firefox
```

21.04に下調べしたときの手順に従って日本語表示用のfonts-nanoを、、入りません。
微妙に名前変わったみたいです。

```
# apt install fonts-noto-cjk
```

chromiumも入れておきます。

```
# apt install chromium-browser
```

chromium-browserで起動するとXを使おうとして失敗するので、waylandを使うように引数を加えてやります。

```
$ chromium-browser --enable-features=UseOzonePlatform --ozone-platform=wayland
```

ディフォルトでwaylandを使ってくれないかなーと期待していたのですが、だめでしたね。。

## 日本語入力

```
# apt install --no-install-recommends fcitx5-mozc fcitx5-config-qt qtwayland5 mozc-utils-gui
# apt install --no-install-recommends fcitx5-module-wayland fcitx5-module-xorg fcitx5-frontend-gtk3
# echo -e "export GTK_IM_MODULE=fcitx\nexport QT_IM_MODULE=fcitx\nexport XMODIFIERS=@im=fcitx" >> /etc/environment
$ echo "exec fcitx5" >> ~/.config/sway/config
```

fictx5-configtoolでmozcの設定を入れて一旦終了。
firefoxは、これで問題なく日本語入力が可能になります。

chromeはNG。
試しに、それらしいプラグインも入力してみましたが、だめ。。
https://www.google.com/intl/ja/inputtools/chrome/
導入も有効化もできるのですが、いざ入力しても日本語に変換されません。。
westonの事例ですが、--enable-wayland-imeをつける例があったので試したのですが、それもダメ。
うーん、、依然chromeはダメかぁ、、

## スピーカーの設定

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

.config/sway/configに追記

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

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

これは問題なし。

#まとめ
archlinux構成の際のトラブルが一気に解決したら、、と思ったのですが、状況変わらずでした。
もしかするとドライバ周りが安定していて、現状のsway環境でちょこちょこ発生しているnouveau(Nvidiaドライバらしい）のエラーを出してswayが異常終了する事象が解決したりする、、、かもしれないので、ubuntu構成のswayも併用して試してみようと思います。
なんとも。。