🪟

Niri Compositor を使ってみる

に公開

Niri とは

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

特徴

  • Rust言語で開発されている
  • Waylandプロトコルに準じて動作する
    • 正直筆者は、「X11よりモダンでナウいやつだ!」程度の理解なので、それ以上の説明は割愛します
  • スクロール可能なタイリング(scrollable-tiling)」
    • Niriは、GNOME Extension のひとつであるところの PaperWM にインスピレーションを受けて開発が始まったらしい
      • Niri is heavily inspired by PaperWM which implements scrollable tiling on top of GNOME Shell. - 公式Githubより

      • PaperWM だと各モニターでワークスペースを独立させるのが難しかったため、新たに「独立したWaylandコンポジタ」として開発が始まったらしい
    • 従来のタイル型ウィンドウマネージャーよりも効率的で直感的な操作体験を提供することを目指している(らしい)

Sway や i3, Hyprlandとの違い

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

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

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

  • ウインドウを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)

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

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

水平方向にスクロールすればお目当てのウインドウに辿りつけるのが気にいっています。
1-2で述べたように、従来のタイルWMにおいて、ワークスペースを頻繁に行き来する動作は視差が激しくて辛かった。

  • 言い替えると、水平方向にスクロールする動作のほうがそれよりいくらかマシ
    • 加えて、Niri においてはワークスペース遷移の動作(垂直方向への移動)に既定でヌルっとしたアニメーションが付いている (逆に、Swayはそれが無くてパッと一瞬でモニター全部の表示が切りかわる)
      • 自分の操作によって、ワークスペースが遷移したという実感があるので個人的には気にいっている

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

  • 何かにつけて、環境を替えるときは自分好みのconfigに仕上げるのが楽しい一方で辛い
    • Niriはデフォルトの状態である程度完成しているが、後述のとおりカスタマイズ性も高いという側面がある
  • NiriはWaylandコンポジターなので、Swayで使っていたツール郡の流用が効く(mako,rofi,SwayOSD,など)
    • キーバインドさえおきにいりだったツール郡に割り当てたり、デーモンとして立ちあがるようにしてしまえばよいので楽
  • 視覚的な側面でも完成度が高く見える
    • スクロールがヌルッと動く,Overviewの機能が内包されている等
      • ちなみにHyprlandはHyprExpoを入れると似たような挙動ができる
        • Overviewを見ながらフォーカス移動できるNiriのほうが使い勝手が良く感じる
    • ウインドウのGapや丸い角, カラースキームもconfigで変更できるので自由度は高め
  • XWaylandには公式で対応していないことになっているが、xwayland-satelliteを入れてconfigに必要事項を記述することで現状問題なく動いている
    • Cisco Packet Tracer や、Wiresharkなどは動作確認が(私の環境では)取れています
      • Waylandネイティブでないアプリケーションも問題なく動いているように見える
      • ゲームとかはしらん!() けど、きっと問題なく動くと思う

あとがき

以上で Niri Compositor の紹介は終わりです。ここまで読んでくれてありがとうございます。
是非実際に使っていただいて、皆様のDesktop LinuxライフのQOLが上がってくれればうれしく思います。
おすすめの設定や使い勝手の向上方法を見つけたら改めて共有します。

!!! openSUSEにおける対応状況 !!!

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

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

Discussion