Sway
sway (SirCmpwn's Wayland window manager) は i3 と互換性のある Wayland コンポジタを作成しようという試みです。公式ウェブサイト より:
- Sway は Wayland において Xorg の i3 ウィンドウマネージャの代わりとなるウィンドウマネージャです。既存の i3 設定で動作し i3 の機能のほとんどをサポートしています。
目次
現状
Release sway 1.0 にあるように、Sway は基本的に100% i3 と互換です。実装された機能と、実装されていない機能については以下のリンクを参照してください:
インストール
sway は sway パッケージでインストールできます。最新の開発版は wlroots-gitAUR と sway-gitAUR でインストールできます。sway は wlroots に緻密に依存しているので、sway 更新時には wlroots も更新するのが望ましいです。
また、画面をロックする swaylock や、アイドル時間管理デーモンの swayidle もインストールできます。
sway の起動
ターミナルから
ターミナルに sway
と入力すれば sway が起動します。
ディスプレイマネージャを使う
sway のセッションは /usr/share/wayland-sessions/sway.desktop
にあります。GDM や SDDM などのディスプレイマネージャは自動的にセッションを認識します。
あるいは、テキストベースのセッションマネージャを使うこともできます。ディスプレイマネージャ#コンソールを参照してください。
設定
i3 を既に使っている場合、i3 の設定を ~/.config/sway/config
にコピーすればそのまま動作します。i3 を使ったことがない場合は、サンプル設定ファイルを ~/.config/sway/config
にコピーしてください。サンプル設定ファイルは /etc/sway/config
にあります。ただし DFALLBACK_CONFIG_DIR
フラグが設定されている場合は存在しません。設定方法は sway(5) を見てください。
キーマップ
デフォルトでは、sway は US QWERTY キーマップで起動します。次のようなコマンドで sway を起動することでキーマップを変更できます:
$ export XKB_DEFAULT_LAYOUT=gb; export XKB_DEFAULT_VARIANT=colemak; export XKB_DEFAULT_MODEL=pc101; sway
上記のコマンドでは、101キーボードの英国キーマップの Colemak 配列に設定されます。
ディスプレイマネージャを使用している場合、sway.desktop
ファイルに上記の行を追加することはできません。root で、以下のファイルを作成してください:
/usr/bin/sway-gb-ck
#!/bin/sh XKB_DEFAULT_LAYOUT=gb XKB_DEFAULT_VARIANT=colemak XKB_DEFAULT_MODEL=pc101 sway
それから、上記のスクリプトを呼び出す sway-gb-ck.desktop
ファイルを作成してください:
/usr/share/wayland-sessions/sway-gb-ck.desktop
[Desktop Entry] Name=Sway British(Colemak) Comment=SirCmpwn's Wayland window manager with the British Colemak keyboard layout Exec=sway-gb-ck Type=Application
上記の方法が上手く行かない場合、.bash_profile
または .zprofile
に以下を追加してみてください:
$ export XKB_DEFAULT_LAYOUT=gb; export XKB_DEFAULT_VARIANT=colemak; export XKB_DEFAULT_MODEL=pc101
ステータスバー
ステータスバーを表示したいときは i3status プログラムをインストールするのが簡単です。sway の設定の末尾に以下のスニペットを追加するだけで表示できます:
~/.config/sway/config
bar { status_command i3status }
i3status をカラー出力させたい場合、i3status の設定の以下の部分を調整してください:
~/.config/i3status/config
general { colors = true interval = 5 }
どちらの例でも、システム全体にインストールされた設定ファイルはユーザーディレクトリにコピーされるので、それを修正してください。
壁紙
Sway 1.1 以降、壁紙機能は swaybg に分割され、output
コマンドを動作させるのに必要です。
以下の行を sway の設定の最後に追加することで、全ての画面 ("*"
という名前にマッチする画面) で背景画像を設定できます:
~/.config/sway/config
output "*" background /home/onny/pictures/fredwang_norway.jpg fill
ファイルの名前やパスは適当に置き換えて下さい。
入力デバイス
特定の入力デバイスの設定を調整することができます。例えば、タッチパッドの tap-to-click とナチュナルスクロールを有効にするには、以下の input ブロックを追加:
~/.config/sway/config
input "2:14:ETPS/2_Elantech_Touchpad" { tap enabled natural_scroll enabled }
デバイスの識別子は以下のコマンドで確認できます:
$ swaymsg -t get_inputs
上記のコマンドの出力には、"/" などの記号をエスケープするために "\" が付いていることがあります (例: "2:14:ETPS\/2_Elantech_Touchpad"
)。設定に追加するときはエスケープを取り除いてください。
アクセラレーションなど他のオプションについては sway-input(5) で詳細を確認できます。
HiDPI
設定ファイルの output
コマンドでディスプレイのスケールファクタを設定してください。スケールファクタは整数で指定する必要があります。HiDPI ディスプレイの場合は 2 などに設定してください。
output <name> scale <factor>
ディスプレイの名前は以下のコマンドで確認できます:
$ swaymsg -t get_outputs
カスタムキーバインド
キーボードの特殊なキーを使ってコマンドを実行することができます。例えば、ボリュームや画面の明るさを制御するには:
~/.config/sway/config
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') +5% bindsym XF86AudioLowerVolume exec pactl set-sink-volume $(pacmd list-sinks |awk '/* index:/{print $3}') -5% bindsym XF86AudioMute exec pactl set-sink-mute $(pacmd list-sinks |awk '/* index:/{print $3}') toggle bindsym XF86MonBrightnessDown exec brightnessctl set 5%- bindsym XF86MonBrightnessUp exec brightnessctl set +5%
brightnessctlAUR を使うことで輝度を制御できます。輝度や色補正を制御するユーティリティについてはバックライトを見てください。
.Xresources
sway で使用するには .Xresources
を .Xdefaults
にコピーしてください。
ヒントとテクニック
ログイン時に自動起動
tty1 にログインしたときに起動するには、以下を .bash_profile
に追加してください:
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then exec sway fi
dmenu は XWayland 上で動作するため、フォーカスが他のところへ移るとアプリケーションは反応しなくなります。反応しなくなった dmenu を元に戻すには sway を再起動する必要があります。rofi を使用するという案もありますが、rofi をメニューとして使用するには、urxvt など wayland ネイティブではない仮想端末から起動しなくてはなりません。Sway でメニューとして起動してもメニューにフォーカスが移りません (rofi にマウスを載せないと入力が通りません)。詳しくは https://github.com/swaywm/sway/issues/1367#issuecomment-332910152 を参照。
既知の問題
i3-dmenu-desktop を sway から直接使うことはできませんが、パッチが存在します: https://github.com/i3/i3/pull/2265/files 。残念ながら、特定の状況で i3 から使ったときにパッチが問題を起こすために、パッチがマージされることはありません。詳しくは次を参照: https://github.com/SirCmpwn/sway/issues/521 。
sway-dmenu-desktopAUR[リンク切れ: パッケージが存在しません] をインストールすることでパッチを手動で適用できます。パッケージは sway-dmenu-desktop
という新しい名前のバイナリを作成して sway で使用します。
VirtualBox を使う
Sway は VirtualBox との相性があまり良くありません (あるいは全く動作しません)。
Sway Socket Not Detected
ターミナルマルチプレクサ (例: GNU Screen や tmux) の中で swaymsg -t get_outputs
などのように swaymsg
を使ったときに、以下のようなメッセージが返ってくることがあります:
sway socket not detected. ERROR: Unable to connect to
これは swaymsg
が SWAYSOCK
のソケットに接続できないことを意味しています。
SWAYSOCK
の現在の値を確認するには:
$ env | fgrep SWAYSOCK SWAYSOCK=/run/user/1000/sway-ipc.1000.4981.sock
最初の sway ソケットにアタッチしてみて、コマンドを再実行してみてください:
$ export SWAYSOCK=$(ls /run/user/*/sway-ipc.*.sock | head -n 1)
上記のエラーを解決するには、マルチプレクサの外でコマンドを実行する必要があります。
ディスプレイの解像度が正しくない
output "HDMI-A-1" res 1280x1024
などの設定オプションで解像度が正しく設定できない場合があります。解像度の設定は wlc コンポジタが受け持っており、TTY からディスプレイの解像度を認識します。
video=HDMI-A-1:1280x1024:e
などのカーネルパラメータを指定したりカスタム EDID バイナリ (Kernel Mode Setting を参照) を使用することで TTY の解像度を変えられる場合があります (WLC や Sway の解像度も変わります)。