Linuxを日常的に使う実験ブログ

Arch Linuxにタイル型WaylandコンポジタSwayを導入する

 2022-07-31

 2022-07-31

 Arch Linux

こんにちは。今回のテーマは「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のスクリーンショット

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アクセラレーションを有効化」にチェックを入れてください。

vbox設定画面

Swayの導入

それでは早速導入していきましょう。以下コマンドでインストール作業を進めていきます。

pacman -S sway swaybg xorg-xwayland polkit dmenu foot

以下にインストールしたパッケージについては以下表にしておきます。

パッケージ説明
swaysway本体
swaybgswayの壁紙を出力するのに必要
xorg-xwaylandxorg用のアプリをwaylandで動かすために必要
polkit各デバイスに接続するために必要
dmenuswayデフォルトのランチャー
footswayデフォルトの端末

※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 + eswayを終了

最後に

駆け足でしたが、Arch LinuxにSwayを導入してみました。Waylandに興味をもっていて使ってみたいなと言う方はまず手始めとしてSwayは手軽で良いと思います。タイル型ウィンドウマネージャーに興味を持っている方も是非使ってみてください。

本記事が何かのお役に立てば幸いです。