世界を動かす技術を、日本語で。

Niri – スクロール可能なタイル型Waylandコンポジタ

概要

niri は、Wayland向けの スクロール型タイル型コンポジタ。 ウィンドウは 無限に右へ続くストリップ で管理、既存ウィンドウのリサイズなし。 マルチモニター動的ワークスペースカスタマイズ性 が特徴。 アクセシビリティパフォーマンス にも配慮。 コミュニティ や関連リソースも充実。

niri: スクロール型タイル型Waylandコンポジタの特徴

  • ウィンドウ管理

    • ウィンドウは 右方向に無限に続く列 で配置
    • 新規ウィンドウ追加時も既存ウィンドウのリサイズなし
    • 各モニターごとに独立したウィンドウストリップ
    • ウィンドウが 隣のモニターにオーバーフローしない設計
  • ワークスペース機能

    • 動的ワークスペース (GNOMEのようなスタイル)
    • ワークスペースは 縦方向に並び、常に1つ空きが下に存在
    • モニターの接続・切断時もワークスペース配置を維持
    • 切断時は他モニターへ移動、再接続時は元のモニターへ自動復帰
  • 主な機能

    • スクロール型タイル型設計 を基礎から実装
    • ワークスペース・ウィンドウのズームアウトオーバービュー
    • 内蔵スクリーンショットUI
    • xdg-desktop-portal-gnomeによる画面・ウィンドウキャスト
    • センシティブウィンドウのキャスト除外
    • 動的キャストターゲット切替
    • タッチパッド・マウスジェスチャー
    • ウィンドウのタブグループ化
    • レイアウトカスタマイズ(ギャップ、ボーダー、ウィンドウサイズなど)
    • Oklab/Oklch対応のグラデーションボーダー
    • カスタムシェーダ対応アニメーション
    • ライブリロード設定
    • スクリーンリーダー対応
  • デモ・導入例

    • demo.mp4によるビデオデモ
    • Brodie Robertsonによる紹介動画
    • awesome-niri でコミュニティプロジェクトやリソースを紹介
  • 利用状況とサポート

    • 日常利用に十分な安定性
    • MatrixチャンネルやDiscordでコミュニティサポート
    • Getting Startedページで導入方法を案内
    • WaybarやFuzzel等の外部ツールとの併用推奨
    • niri自体はデスクトップ環境全体ではなく、コンポジタ単体

niriの技術詳細と互換性

  • マルチモニター対応

    • 設計段階からマルチモニターを重視
    • Mixed DPI・フラクショナルスケーリング にも対応
    • 全UIがピクセルパーフェクト
    • NVIDIA環境でも動作確認済み
  • ウィンドウ管理拡張

    • フローティングウィンドウ (niri 25.01以降対応)
    • タブレット・タッチパッド・タッチスクリーン対応
      • タブレットは特定モニターへのマッピングやOpenTabletDriver利用可
      • タッチパッドジェスチャー対応(タッチスクリーンジェスチャーは未実装)
  • Waylandプロトコル対応

    • layer-shell, gamma-control, screencopy 等主要プロトコルに対応
    • wayland.app で各プロトコルの対応状況を確認可能
  • パフォーマンス

    • 軽量設計 で古いPC(例:Eee PC 900)でも動作報告あり
  • Xwayland対応

    • niri 25.08以降、xwayland-satelliteを統合

メディア・関連情報

  • 講演・記事・インタビュー
    • 2024年Moscow RustConでのniri開発講演(YouTubeで英語字幕あり)
    • 2025年Das Triumviratによる開発者インタビュー(英語)
    • 2025年LWNによるniriの概要と紹介記事

コミュニティ・貢献方法

  • 貢献ガイド

    • CONTRIBUTING.md でコーディング・非コーディング貢献方法を案内
  • インスピレーション

    • PaperWM (GNOME Shell拡張)から着想
    • モニターごとのウィンドウ分離 を目指す設計思想
    • PaperWMはグローバル座標空間の制約があるため、独自実装に挑戦

類似プロジェクト

  • PaperWM: GNOME Shell用のスクロール型タイル型
  • karousel: KDE用スクロール型タイル型
  • scroll/papersway: sway/i3用スクロール型タイル型
  • hyprscrolling/hyprslidr: Hyprland用スクロール型タイル型
  • PaperWM.spoon: macOS用スクロール型タイル型

連絡先・コミュニティ

  • Matrixチャット: https://matrix.to/#/#niri:matrix.org
  • Discordコミュニティ: https://discord.gg/vT8Sfjy7sx

Hackerたちの意見

2、3週間前にi3からNiriに切り替えたんだけど、めっちゃ満足してる。Niriは、ウィンドウやワークスペースの使い方に自然に合ってる感じがするんだ。プロジェクトごとにワークスペースを使ってて、何かを参照したり、ちょっとしたコマンドを実行するために右側に一時的なターミナルウィンドウやウェブブラウザを開くことがあるけど、他のウィンドウには影響がないし、リフローも起こらない。終わったらすぐに閉じられるのがいいね。Niriの唯一の問題は、ウルトラワイドモニターが欲しくなっちゃったこと。

macOSでは基本的に常にフルスクリーンなんだけど、超フルスクリーンモードじゃなくて、cmd-tab/cmd-`がちゃんと機能するようにしてる。これをmacOSでやりたいんだけど、無理なのは分かってる。雇用主からmacOSを使うように言われてるから、Linuxに切り替えることもできないし。結局、より良いワークフローがあるのにそれを実現できないもどかしさを感じてるのは、私だけじゃないってことくらいかな。

あなたは一人じゃないよ。

ウィンドウを最大化するたびにオプションキーを押さなきゃいけないのが嫌だ。デフォルトでウィンドウを伸ばすようにして、フルスクリーンモードは使わないようにしたいんだ。

うーん…「予測可能」ってどういう意味?私にとってはcmd+tab / cmd+`がすごくうまくいってるんだけど、最後に使ったアプリやウィンドウに切り替えられるから。

https://github.com/mogenson/PaperWM.spoon

MacではYabaiをウィンドウマネージャーとして使ってるよ。大画面ではすごく快適だけど、ノートパソコンだけ使うときのワークフローがまだうまくできてないんだ。そうなると、スペースがたくさんできて、各スペースに1、2個のウィンドウしかない状態になっちゃう。

13インチのMBPでVSCodeやFreeCADを使うとき、フルフルスクリーンモードが大好きだよ。alt-tabの問題はあんまりないけど、3つのウィンドウを切り替えるときは、サイクルじゃないときに気を使うことが多くなるね。KDE Plasma 6(グローバルメニューバー付き)でこれを試そうとしたけど、なかなかうまくいかなくて、最大化はできてもフルスクリーンにはならないアプリに妥協しなきゃいけないのがイライラする。X/Waylandの「フルスクリーン」は基本的にキオスクモードで、ゲームを邪魔しないためのものってのは理解してるけど、Macではクロームレスウィンドウが仮想デスクトップに表示されて、復元のキーを忘れたらハマっちゃうことはないんだよね。でも、これができないのがもどかしい。

macOSでPaperWM.spoonと一緒にHammerspoonを試してみるといいかも。これを使ってるけど、ちょっとしたクセはあるけど、ないよりは全然マシだよ。[0] https://www.hammerspoon.org/ [1] https://github.com/mogenson/PaperWM.spoon

俺もほぼ同じだよ。今はステージマネージャーを使ってて、ウィンドウの上部バーをダブルクリックして最大化してる(緑のボタンとは違うよ)。

この1ヶ月、komorebiをmacOSに移植する作業をしてたんだけど、スクロールレイアウトは結構うまくいってるよ。Niriと全く同じってわけじゃないけど、個人的な好みに基づいて実装してるから、両方のプラットフォームでちゃんと機能してるよ。

Niriのおかげでxmonadを手放すことにした。xmonadを14年間ずっと使ってたんだけど、デスクトップに無制限のウィンドウを持てるのがすごくいい。タイル構造を切り替えずにトピックのコレクションみたいにできるから、快適に収まる範囲で複数のデスクトップを持つ必要がなくなった。以前は「エディタとターミナル」のデスクトップから「ブラウザ」のデスクトップに切り替えてたのが、今は同じデスクトップ内で関連するブラウザウィンドウに横移動するだけになった。入りやすいし、すぐに使えるのがいいね。Waylandの初期の問題(アプリサポート、例えばZoomが使えないとか)はあったけど、克服できないものではなかった(たまにXに戻ることで解決できた)。ほとんどの問題は時間とともに解決されてきたよ。編集:ハードウェア:2017年のSystem76 Bonobo WS、2x GTX 1080、複数のスクリーン(4k @ 2xスケーリング + 2 1080p)。PopOS。Niriの1-2年前のビルドを使ってるけど(壊れてないから)、他の人が嫌がるような派手なアニメーションは経験してない。大きなセットアップの手間がないなら、クローンしてソースからビルドするのは入りやすいと思ってるから、ちょっと偏見があるかも。注意してね。

Niriは最近、xwayland-satelliteとの統合が改善されたから、Waylandをサポートしていないプログラムを実行しやすくなったよ: https://github.com/YaLTeR/niri/wiki/Xwayland

俺も同じだよ、i3で10年以上使ってたけど、niriは一瞬で「なるほど!」って感じだった。最近のビルドには「ミニマップ」みたいなズームアウト機能があって、これが結構気に入ってるんだ。niriの唯一の不満は、たまに迷っちゃうことかな。

もう数ヶ月、メインデスクトップでNiriを使ってる。LWNにこれについて書いたよ: https://lwn.net/Articles/1025866/ 「普通」のタイルWMやコンポジタは私には合わないけど、タイルモデルは合ってる。Niriの前はPaperWMとGNOMEを使ってたけど、GNOMEの拡張機能には限界がある。COSMICの開発者たちがスクロール可能なタイルを追加してくれたらいいんだけど、そうなるまでNiriを使い続けるつもり。

ありがとう、COSMICとの違いを知りたかったんだ。

COSMICの人たちが1.0リリース後にそれを追加しても驚かないな。結構多くの機能リクエストがあるしね。その間に、System76の社員がNiriを含む他のコンポジタをCOSMIC内で使えるようにする非公式の拡張を作ったよ。 https://github.com/Drakulix/cosmic-ext-extra-sessions

タイル機能付きのCosmicは最高だろうな。Cosmicが大好きだけど、それが欠けてるんだよね。

Niriを試すのをためらってた理由の一つは、設定が1ファイルに限定されてて、追加の設定をオーバーライドしたり含めたりできないのが結構重要だと思ってるから。もしドットファイルを公開したいなら、デバイスごとに少し変更したメインの設定が必要なんだよね。例えば、各デバイスでオーバーライド用の「ローカル」ファイルをgitignoreしておくことができる。ついこの間、作者が2つのPRをマージして、両方のユースケースに対応したよ。https://github.com/YaLTeR/niri/pull/2482 まだリリースにはなってないけど、早く出てほしいな。

この機能は「正しい方法」で実装するためにかなりの変更が必要だったから、ずっと開発中だったんだ。やっとこれらの変更がマージされて、すごくワクワクしてるよ!

Niriは今「抱きしめられすぎて」大変なことになってるから、もし手伝いたいなら、Ivanに寄付するか、他の人のPRをレビューしてから自分のを出してみて。プロジェクトには商業的なバックがないし、最近の成功で「オーバーロード」状態なんだ。私は何年も使ってるけど、SmithayとNiriは高品質なプロジェクトだって明らかだよ。欠けてる機能以外は特に問題もなかったし(時間が経つにつれて、もっと機能が増えてきたけど)。

サポートリンク: https://github.com/sponsors/YaLTeR

ランダムな人が他の人のPRをレビューするのって、実際どれくらい役に立つの?メンテナーとしては、どんなに多くの人がレビューしても、自分でPRを確認してからマージしたいな。貢献者としては、問題やプロジェクトについて浅い理解の人が来て、変更を要求されたり、自分のPRがダメだと言われるのは嫌だ。メンテナーが強いネットの意見に影響されやすい場合もあるしね。

以前、数ヶ月間Niriを日常的に使ってたんだけど、大きなウルトラワイドモニターでちゃんと動くWMはこれが初めてだった。アクティブウィンドウをセンターにするための便利なホットキーもあるし、他のWMだとワイドモニターでうまく動かすのが結構面倒だったんだよね。従来のスプリットビューだと、何も正面にないから常に向きを変えなきゃいけないし、モニターに合わせてカスタマイズするのに時間がかかる。そういう場合にはNiriが一番だと思う。でも最近は浮動ウィンドウが好きだから、GNOMEを使ってる。

以前はHyprlandを試してたんだけど、カスタマイズに時間をかけても、まだ満足できない点が多くて、結局GNOMEに戻ったんだ。「仕事をさっさと終わらせたい」って感じで使ってる(複数のワークスペースを使ってて、ブラウザのウィンドウを何十個も開いてるし、いくつかのトレイ拡張に依存してる)。でも最近GNOMEがバージョンアップして、また拡張が壊れちゃったから、今度は自分のワークフローに合わないものを直す作業に再度取り組むことにした。GNOMEはもうやめるつもり(前はOpenboxの方がずっと快適だったけど、まあ、Waylandだし)。今回の試みでRiver、QTile、Niriを試してみたけど、いろいろ試した結果、Niriに落ち着いて、足りない機能を少しずつ追加してるところ。- 機能別にグループ化した複数の動的ワークスペースが好きで、スプリットが一つか二つ以上の意味はあまり感じないから、Niriは結構うまくいった。キーボードショートカットも、自分に合ったものに設定できたし。- 他のDEの部分にはwaybarとswayncを使ってる。長時間動かしてるClaude Code/Codexをワークスペースで使って、いくつかのカスタムスクリプトを作ってる。- niri-workspaces - ウィンドウやアクティビティを表示するワークスペースをwaybarに動的に生成する - niri-workspace-names - fuzzelと統合してワークスペースの名前を変更できるようにする - niri-alttab - アプリのサイクリングを自分に合った形で動かす、これはライブサムネイルとかが必要になるから、結構大きなプロジェクトになるかも - niri-terminal-below - 新しい縦のターミナルスプリットを作りたいことが多いんだけど、ちょっとハックっぽいけど動く(新しいターミナルを出して、それを下に持っていって、右側にいるときは戻す必要がある)。ドキュメントを全部読んだわけじゃないし、あまり調べてないけど、これらの新しいコーディングエージェントのいいところは、私が望むように調整するために、そこそこ良い仕事をしてくれることだね。

アプリのサイクリングについてだけど、https://github.com/isaksamsten/niriswitcherにも興味があるかも。

Niriに説得されて、スクロールが最強だと思うようになった。ウィンドウがカラムをまたいでほしいんだよね。例えば、1つのカラムに2つのウィンドウがあって、下のウィンドウにフォーカスしてから右に新しいウィンドウ/カラムを作ると、その新しいウィンドウはカラム2の下半分に来てほしい。カラム1の上のウィンドウはカラム1と2をまたいで伸びてほしいんだ。さらに右にもう1つウィンドウ/カラムを作ると、その左上のウィンドウはカラム1-3をまたいで伸びるべきだよね。だから、画面の上にすごく広いウィンドウがあって、下には3つのウィンドウが並ぶ感じ。今、hyprlandのhyprscrollingプラグインでこのアイデアを試してみてるけど、ちょっとバカだから最近はあまり時間がないんだよね。

2011年からGnome内でxmonadをウィンドウマネージャーとして使ってるけど、すごく快適だよ。Niriをその中で動かす合理的な方法ってあるのかな?

よくわからないけど、難しいんじゃないかな。Gnome内でPaperWM [0]を試してみて、スクロールWMのワークフローを体験してみるのもいいかも。それがNiriに切り替える価値があるかどうか、判断できるかもしれないよ。[0] https://github.com/paperwm/PaperWM