Arch Linuxにタイル型WaylandコンポジタSwayを導入する
2022-07-31
2022-07-31
こんにちは。今回のテーマは「Arch Linuxにタイル型WaylandコンポジタSwayを導入する」です。Ubuntu 22.04 LTSのディスプレイサーバーがデフォルトでWayland(実装はMutterというWaylandコンポジタ)になり、X.Org Serverを用いてきた従来の流れから大きく変わりました。今回はそんなWaylandを体験してみたく、Arch Linuxにタイル型のWaylandコンポジタであるSwayを導入してみたいと思います。
Swayとは?
Swayとはタイル型のWaylandコンポジターであり、Xorgサーバー用のi3ウィンドウマネージャと互換性があります。i3用の設定ファイルをそのまま使用でき、キーマップなども同じなのでi3を使用していた方はスムーズにSwayに移行できます。
下図はSwayのスクリーンショット
Waylandとは?
ではWaylandとは何でしょうか?Waylandはディスプレイサーバとクライアント間の通信プロトコルおよびライブラリなのですが、これだけでは何のことだかわかりませんよね。
これまでGUIの画像描画はX Window System(X11)ディスプレイサーバープロトコルを実装したX.Org Server(以下Xorgと省略)が用いて行われており、デスクトップ環境やウィンドウマネージャを始め、多くのGUIアプリケーションはXorg上で動作するように開発されてきました。前述のi3もXorg上で動作するように開発されています。
Waylandは、肥大化し複雑化したX11に対して、よりシンプルで現代的な画面描画の仕組みとしてRed Hatの開発者であったKristian Høgsberg氏によって開発が開始されました。WaylandはX11とは異なり、コンポジット型のウィンドウマネージャの機能を含んでおり、ディスプレイサーバーとコンポジタが統合されている分だけシンプルです。
Waylandのディスプレイサーバープロトコルを実装したディスプレイサーバーはWaylandコンポジタとも呼ばれます。ディスプレイサーバーでありながらコンポジタとしての役割を担っているためです。実装としては以下のようなものがあります。
- Weston: Waylandコンポジタのリファレンス実装
- Sway: i3互換のタイル型Waylandコンポジタ
- Kwin: デスクトップ環境KDEのためのウィンドウマネージャ
- Mutter: デスクトップ環境GNOMEのためのウィンドウマネージャ
- Enlightenment: スタック型のウィンドウマネージャ
Westonに関してはArch LinuxでWaylandコンポジタWestonを動かしてみるにて記事化しています。
VirtualBox上で動作させる際の注意事項
VirtualBoxのようなVMで動作させるときには3Dアクセラレータが有効になっていないとSwayは起動できませんので、ご注意ください。VirtualBoxの場合は各マシンの設定画面のディスプレイ項目から「3Dアクセラレーションを有効化」にチェックを入れてください。
Swayの導入
それでは早速導入していきましょう。以下コマンドでインストール作業を進めていきます。
pacman -S sway swaybg xorg-xwayland polkit dmenu foot
以下にインストールしたパッケージについては以下表にしておきます。
パッケージ | 説明 |
---|---|
sway | sway本体 |
swaybg | swayの壁紙を出力するのに必要 |
xorg-xwayland | xorg用のアプリをwaylandで動かすために必要 |
polkit | 各デバイスに接続するために必要 |
dmenu | swayデフォルトのランチャー |
foot | swayデフォルトの端末 |
※polkitを使用したくない場合はseatd
を代替として利用する手段があります。詳細はArchwikiをご覧ください。
swayの起動
一度ログアウトしてユーザーでログインします。swayはrootでは起動できません。コンソール画面で以下のコマンドを入力してswayを起動します。
sway
さよならstartx
ですね。ログインと同時にswayを起動させるにはシェル初期化ファイル(bashなら.bash_profile
)に以下を追記します。
if [ -z $DISPLAY ] && [ "$(tty)" == "/dev/tty1" ]; then
exec sway
fi
設定ファイルの作成・編集
i3を使っていた方はi3の設定ファイルをコピーして使うことができます。もし初めて設定ファイルを使う場合はサンプルファイルをコピーして編集することもできます。
cp /etc/sway/config ~/.config/sway/config
このファイルを書き換えることでデフォルト設定を上書きすることができます。例えばデフォルトのModキーはsuperキーですが以下のように設定することでAltキーに変更できます。
~/.config/sway/config
#set $mod Mod4
set $mod Mod1 #AltキーはMod1
configファイルを書き換えたらmod + shift + c
で再読込させましょう。
キーボードレイアウトの設定
デフォルトではUSの設定となっていますので、これを日本語レイアウトに設定します。swayを起動してしまうとUSレイアウトで作業することになるので、sway起動前にコンソール画面で作業しておくことをオススメします。
~/.config/sway/config
#キーボードレイアウトを日本語に設定
input * {
xkb_layout "jp"
}
今回はワイルドカードである“*”を用いてすべてのキーボードについて設定しましたが、特定のキーボードやマウス等の特定のデバイスに対して設定をしたい場合はデバイスのidentifierを指定するようにしてください。identifierはswayを起動した状態で以下のコマンドで取得可能です。
swaymsg -t get_inputs
壁紙の設定
壁紙はswaybgをインストールしていればデフォルトの壁紙が表示されていると思います。configファイルを修正することで任意の画像を壁紙にできます。
ステータスバーの設定
Swayには標準でswaybarというステータスバーがついていて時刻やワークスペース等の表示がされますが、i3status
により代替することもできます。その場合はまず以下のコマンドでi3status
をインストールしましょう。
pacman -S i3status
~/.config/sway/config
のbarの項を以下のように書き換えます。
bar {
status_command i3status
}
付録:Swayキーマップ早見表
デフォルトで設定されているswayのキーマップを紹介しておきます。操作に不慣れな場合は参考にしてみてください。デフォルトではModキーはsuperキー(windowsマークのキー)に設定されています。
キー | 機能 |
---|---|
Mod + Enter | ターミナルを開く |
Mod + d | ランチャーを開く |
Mod + shift + q | ウィンドウを閉じる |
Mod + j(or ↓) | 下にフォーカス |
Mod + k(or ↑) | 上にフォーカス |
Mod + h(or ←) | 左にフォーカス |
Mod + l(or →) | 右にフォーカス |
Mod + a | 親コンテナにフォーカス |
Mod + shift + j(or ↓) | 下に移動 |
Mod + shift + k(or ↑) | 上に移動 |
Mod + shift + h(or ←) | 左に移動 |
Mod + shift + l(or →) | 右に移動 |
Mod + 1~9 | 各ワークスペースに移動 |
Mod + shift + 1~9 | ウィンドウを各ワークスペースに移動 |
Mod + r | ウィンドウのリサイズ |
Mod + f | フルスクリーンの切り替え |
Mod + v | 垂直にウィンドウを分割 |
Mod + b | 水平にウィンドウを分割 |
Mod + space | フロートエリアとタイルエリアの切り替え |
Mod + shift + space | フロートモードの切り替え |
Mod + e | タイル型レイアウトに変更 |
Mod + s | スタック型レイアウトに変更 |
Mod + w | タブ型レイアウトに変更 |
Mod + shift + c | 設定ファイルの再読込 |
Mod + shift + e | swayを終了 |
最後に
駆け足でしたが、Arch LinuxにSwayを導入してみました。Waylandに興味をもっていて使ってみたいなと言う方はまず手始めとしてSwayは手軽で良いと思います。タイル型ウィンドウマネージャーに興味を持っている方も是非使ってみてください。
本記事が何かのお役に立てば幸いです。