Swayを使ってみる

はじめに

この記事は東京高専プロコンゼミアドベントカレンダーの記事です。

背景

このArch Linuxを構築してもう1年以上経ちました。安定したLinux環境を運用できていることが嬉しい一方、新しい環境に対して少しハードルのようなものを感じてきました。このままではいずれ老害になってしまうと思い、Swayの導入を試みました。

Swayって?

WaylandはX WindowSystemの置き換えでGNOMEKDEがサポートしています。

Sway(SirCmpwn's Wayland window manager)はWaylandのコンポジタのひとつです。似たようなものとしてWestonというものがあるそうです。

また、Swayはi3 window managerとの置き換えでもあるため、今まで書いてきた設定ファイルの使い回しができます。

インストール

sudo pacman -S sway
mkdir .config/sway
cp .config/i3/config .config/sway/config

これだけです。 LightDMからSwayを選択して実行できます。

困ったこと

configファイルのエラー

「置き換えるだけでいい」って言ったくせにエラーが起きました。

このようにしてエラーは潰せますがうまくいってるのかどうかは知りません。

$ diff .config/i3/config .config/sway/config 
5,6c5,6
< new_window pixel 1
< new_float normal
---
> default_border pixel 1
> default_floating_border normal
109d108
<         i3bar_command i3bar -t

xrandrが使えない

そりゃそうなので新しいコマンドを探しました。

情報取得

$ swaymsg -t get_outputs                    
Output eDP-1 'Panasonic Industry Company VVX13T043N00 0x00002300' (focused)
  Current mode: 2560x1440 @ 59.999001 Hz
  Position: 0,1542
  Scale factor: 1.000000
  Subpixel hinting: unknown
  Transform: normal
  Workspace: 4
  Available modes:
    2560x1440 @ 48.000000 Hz
    2560x1440 @ 59.999001 Hz

Output HDMI-A-1 'Eizo Nanao Corporation EV2336W 92891093'
  Current mode: 1920x1080 @ 60.000000 Hz
  Position: 0,0
  Scale factor: 0.700000
  Subpixel hinting: unknown
  Transform: normal
  Workspace: 8
  Available modes:
    720x400 @ 70.082001 Hz
    640x480 @ 59.939999 Hz
    800x600 @ 60.317001 Hz
    1024x768 @ 60.004002 Hz
    1280x720 @ 60.000000 Hz
    1280x960 @ 60.000000 Hz
    1280x1024 @ 60.020000 Hz
    1680x1050 @ 59.882999 Hz
    1920x1080 @ 60.000000 Hz

swaymsg -t get_outputs というコマンドでディスプレイの名前等の情報を取得します。これはxrandrとほとんど同じ感じですね。 ここのeDP-1Output HDMI-A-1をつかって操作します。

画面回転、スケール変更

swaymsg 自体が今動いているswayへメッセージを送るコマンドなのでこれを使います。

$ swaymsg -t command output HDMI-A-1 transform 270
$ swaymsg -t command output HDMI-A-1 scale 0.7

位置変更

ディスプレイの左上をどこに置くかをグローバルな座標で指定します。数値が大きくなるにつれて右下へずれます。スケールを変更している場合はそれに応じたpositionを指定するところに気をつけてください。

# HDMIディスプレイを上に、eDP-1を下にもってくる
# HDMIは1920x1080でscaleが0.7だとすると、1080/0.7≒1542なので
$ swaymsg -t command output HDMI-A-1 pos 0 0    
$ swaymsg -t command output eDP-1 pos 0 1542

日本語入力

最初は動かなかったけれど、configのエラーを直して環境変数を直し、リロードしたら直りました。

おわりに

確かにi3のままではあるし、普通にアプリケーションが動くけど細かいところで違うので使ってて微妙だなと思いました。

nm-appletの表示とかタッチパッドの挙動とか直す気にもなれないし、かといって直さないと不便だし。

3日くらい使ってみて慣れたらこのまま使い続けようかと思います。