🪟

Niri Compositor を使ってみる

に公開

Niri とは

スクロール可能なタイル型Waylandコンポジターです。

特徴

  • Rust言語で開発されている
  • Waylandで動作する
  • スクロール可能なタイリング(scrollable-tiling)」
    • 従来のタイル型ウィンドウマネージャーよりも効率的で直感的な操作体験を提供することを目指している(らしい)

Sway や i3, Hyprlandとの違い

一般的なタイル型ウインドウマネージャは

  1. 1枚の画面の中でウインドウを開く
  2. もう一つウインドウを開くと自動でリサイズして並び替える
  3. (ユーザの入力に応じて)ウインドウを手動でリサイズしたり並び替える
    という挙動をします。

先述のとおり、ユーザの入力に対して1枚の画面の中で動作が基本的には完結します。
また、ワークスペースを切り替えることで1枚の画面では足りない表示領域を補うという側面もあります。

Niriの挙動

既存のほどんどのタイル型ウインドウマネージャに対してNiriは、水平方向(横方向)に無限に広がるデスクトップにウインドウを配置し、左右にスクロールすることでウインドウを切り替えます。
具体的には、以下のような挙動になります。

  1. 1つ目のウインドウを開く
  2. 2つ目のウインドウを開くと、1つ目のウインドウの右隣に配置される。
  3. 以降新しいウインドウを開くたびに右隣に配置されていく。
  4. (ユーザの入力に応じて)ウインドウを並び替えたり垂直方向に配置することもできる。(リサイズもできる)

なお、ウインドウのフォーカスはSwayやi3と同じく、Mod+H,J,K,LのVimライクなキーバインドで変更することができます。

いっぱいウインドウを開いてわけがわからなくなったら、Mod+OでOverViewを見ることもできます。

ワークスペースについては、垂直方向(縦,下方向)に拡張される仕様で存在しています。

  • Mod+数字キーMod+U,I でワークスペースを移動することができます。

で、何が嬉しいの?

という疑問を、ここまで読んだ方は抱いていることでしょう。
というのも、実際に使っていただかなきゃ良さは伝わらない…という言葉を言ってしまえばそれはそうです…(???)
特にラップトップ等、小さめディスプレイの環境でタイル型WMを使ってる人には、是非使ってほしいと思っています。

いままでのタイルWMで辛かったところ

私は今まで、ラップトップ環境でSwayを使っていました(Thinkpad X13)

  • ワークスペースを頻繁に行き来して、表示領域の小ささに対応していた
    • どこになにがあるかわかりにくい気持ちがあった
    • 行き来する際の視差が地味に辛かった(画面の全てが更新されるため)
  • 目が悪いため、フォントサイズも大きめにしており、4分割にすると表示領域が足りなすぎる
  • 作業をしたりブラウジングをするときは、基本そのウインドウをフルスクリーンにして使っていた
    • 集中しているとき、余計な情報は極力排除したかった

Niriを使ってみて(日は浅いですが)

垂直方向に移動すればお目当てのウインドウに辿りつけるのが気にいっています。

  • ワークスペースを頻繁に行き来するのは視差が激しくて辛い
    • 言い替えると、垂直方向にスクロールしている動作のほうがマシ

程良いOOTB感が気にいっています。

  • 何かにつけて、環境を替えるときは自分好みのconfigに仕上げるのが楽しい一方で辛い
  • NiriはWaylandコンポジターなので、Swayで使っていたツール郡の流用が効く(mako,rofi,Hyprshot等)
    • キーバインドさえ割り当ててしまえばよいので楽
  • 視覚的な側面でも完成度が高く見える
    • スクロールがヌルッと動く,OverViewの機能が内包されている等
      • ちなみにHyprlandはHyprExpoを入れると似たような挙動ができる
        • OverViewを見ながらフォーカス移動できるNiriのほうが使い勝手が良く感じる
    • ウインドウのGapや丸い角, カラースキームもconfigで変更できるはずなので自由度は高め
  • XWaylandには公式で対応していないことになっているが、xwayland-satelliteを入れてconfigに必要事項を記述することで現状問題なく動いている

おすすめの設定や使い勝手の向上方法を見つけたら改めて共有します。

ちなみに、openSUSE Tumbleweedでも使えます😄😄😄😄😄😄😄😄
https://repology.org/project/niri/versions

  • SDDMで起動できることを確認済み
  • ディスプレイマネージャを使用しない場合はniri-sessionで起動できます

Discussion