ハクソク

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

Niri 26.04: スクロール可能なタイル配置のWaylandコンポジタ

概要

  • niriは、スクロール可能なタイル型Waylandコンポジタ
  • ウィンドウは右方向に無限に続くカラムで配置、既存ウィンドウのリサイズなし
  • GitHub組織への移行、関連プロジェクトやアートワークも集約
  • Blur(ぼかし)機能やポップアップへの背景効果など、多数の新機能追加
  • Screencastingや設定ファイルのオプションincludeなど、利便性向上

niriの概要とGitHub組織移行

  • niriは、Wayland上で動作するスクロール可能なタイル型コンポジタ
  • ウィンドウは右方向に無限に連なるカラムで配置、新規ウィンドウ追加時も既存ウィンドウのリサイズなし
  • プロジェクトは個人アカウントからGitHub組織へ移行、権限管理やコントリビューションのしやすさ向上
  • awesome-niriリストや新たなアートワークリポジトリ(@Vortriz, @bluelinden, @HumpityDumpityDumberらが貢献)も組織に集約
  • niriリポジトリは20,000スターを突破

開発体制と関連プロジェクト

  • issue triage対応や質問対応で@Sempyosに謝意
  • アートワークリポジトリにはバッジや壁紙、@Duncan-Rose制作の3D作品も公開
  • awesome-niriリストで関連プロジェクトを紹介

主要な技術的変更

  • Rust最小バージョンは1.85に更新
  • niri.serviceはバイナリパスのハードコードを廃止(@Axlefublrによる修正)
  • dinitサービスファイルの再構成(@markK24)

Blur(ぼかし)機能の実装

  • 最も要望の多かった機能「Blur」がついにメインラインに統合
  • ext-background-effect Waylandプロトコルでウィンドウやlayer-shellがぼかしを要求可能
  • 既に多くのアプリ・ツールキットが対応(Material Shell, Noctalia, Vicinae, foot, kitty, Ghostty, Quickshell, winitなど)
  • niri configからも個別にぼかしを設定可能
    • 例:Alacrittyやfuzzel launcherの背後にblur適用
  • xray blurと通常blurの2種類を実装、デフォルトは高効率なxray blur
    • xray blurは壁紙を一度だけぼかして再利用するため、描画コストが低い
    • 通常blurはフレームごとに描画内容をぼかす方式
  • layer-ruleで特定レイヤーのみ通常blurを適用可能

Blur実装の技術的課題

  • 単なるアルゴリズム以上にウィンドウ背景効果全般の設計・効率化が大きな課題
  • xray/non-xrayでレンダリングアーキテクチャが大きく異なる
  • Smithayのレンダリング大規模リファクタリング(@Drakulixに感謝)
  • Overview機能との両立や、スクリーンキャスト時の情報漏洩防止にも対応
  • blur無しのxrayやノイズ・彩度効果も個別に設定可能

ポップアップメニューへの効果適用

  • popupsブロックでポップアップメニューにもblurや透明度を設定可能
    • 例:Loupeアプリのポップアップにblurとopacityを付与
  • Wayland pop-upを使わないElectron等には未対応、GTK 4では形状による制約あり

設定ファイルのoptional include

  • optional includeで存在しないファイルもエラーにならず読み込み可能
    • 例:NixOSでの不変設定やローカル上書き用途
  • optional=true指定時、ファイルが無いときはログに警告のみ
  • ~(チルダ)始まりのパス展開もサポート
  • @johnrichardrinehart, @HigherOrderLogic, @BennyDeeDevが実装に貢献

ポインタワープとスクロール

  • タイトルバーでのウィンドウ横ドラッグ時、ポインタが画面端から反対側にワープ
  • Blenderのような自然なスクロール操作を実現

Screencasting(画面共有)機能の強化

  • xdg-desktop-portal-gnome経由PipeWire推奨、wlr-screencopyも対応
  • ウィンドウキャプチャ時のカーソル描画に対応
    • PipeWireのメタデータカーソル方式をサポート、OBS等でのカーソル非表示切替に対応
    • ウィンドウキャプチャ時は対象ウィンドウ上のみカーソル描画
  • @abmantisによるPipeWireのメモリ破損バグ発見・修正と、その後のniri側実装
  • OBS等の消費側の実装状況により一部最適化は未対応
  • PipeWireの仕様と実装の差異、今後の高品質なサンプル実装の必要性

この内容はniriの最新リリースノート・開発ブログの要点を日本語で簡潔にまとめたものです。各機能の詳細や設定例は公式ドキュメント・Wikiも参照してください。

Hackerたちの意見

Niri、めっちゃいいよね。5ヶ月前に使い始めたんだけど、Windowsから移行したのは最近の中で一番良い決断だったと思ってる。Niriの作者には感謝しかない!俺のdotfilesには、コマンドラインツールやテーマ切り替えの設定をするインストールスクリプトが含まれてるけど、今はArchベースのディストロでもNiriを完全にサポートしてるよ。新しいデスクトップ環境を探してる人には、すぐに始められるからおすすめ。メインのデスクトップと旅行用のノートパソコンの両方で使ってる。
同じく。Niriをウルトラワイドの曲面モニターと組み合わせると特に良いと思う。
Omarchyは、こういう感じでワークスペースごとにスクロールモードの切り替えを導入したんだ。Win/Cmd + Lを押すと、タイル表示からスクロールに切り替わるし、また戻せる。今はこれをずっと使ってるよ。
Niriでスクロールベースのウィンドウ管理を知って、すぐにハマった。最近、OmniWMにフルオンのNiriワークスペースエミュレーションモードが追加されて、Sequoiaとも互換性があって嬉しい。これが俺のメインのウィンドウマネージャーになったよ。
これだね。Niriのアプローチを発見した時、本当に楽しんだし、マックでも似たようなものを探してた。今まで試した中で一番の実装だと思うし、確かにいくつかのクセはあるけど、少なくとも自分の場合は日常的に使える完全なものだと感じてる(タブ付きのカラムが好き)。メンテナーと貢献者に感謝!
Macを使ってるなら、OmniWMをチェックしてみて。Niriレイアウトがあって、Hyprlandに近いレイアウトもあるよ。MacOSでの作業がずっと快適になった。少し前に使い始めた時に投稿したけど、本当に良かった。超おすすめ!
ごめん、でもあれは人生で見た中で最悪のデモ動画だよ。あの動画を見たら、誰もそのソフトウェアを試したいと思わないと思う。もし見たら、ユーザーでもアンインストールしたくなるかもね。
タイル型WMのワークフローに慣れすぎて、いろんな専用のフルスクリーンワークスペースを素早く切り替えたり、純粋にキーボードでウィンドウを管理するのが当たり前になってる。各ワークスペースには通常、1つのアプリかtmuxを使ったターミナルがあって、たまに2つのアプリを並べて使ったりする。似たようなワークフローからNiriに切り替えた人の意見を聞きたいな。メンタルモデルはどう変わった?
KDEから移行したんだけど、ほぼ君が言ってた通りだよ。ワークスペース1はフルスクリーンターミナル(zellij)、ワークスペース2はブラウザ、ワークスペース3は2つのチャットアプリを開いてるだけだった。切り替えのバインディングも設定してた。最初はNiriが違ってて軽量だったから使い始めたけど、今はワークフローを少し調整した。ほとんどの時間、個々のウィンドウは画面サイズのままで、同じように整理してる:1は開発、2はブラウザ(たまにメールリーダー)、3はチャットアプリ。コマンドをいくつか実行したり、長時間実行するものを時々確認するために新しいターミナルウィンドウを開くことが多くなった。KDEの時はウィンドウをバックグラウンドにしてたけど、今は「1」で横に並べてる。「Alt-Tab」で切り替えるのが今思うともっさりしてるなぁ…Super-hjklでウィンドウを切り替えるのと比べると。もちろん人それぞれだけど、俺のワークフローは「軽く」なったと思う。「ウィンドウが重なってる」んじゃなくて「隣に並んでる」感じ…軽やかさを感じる。
モニターごとに4つの固定ワークスペースを設定して、そうやって使ってるよ。
僕の考えでは、特定のアプリに専念したワークスペースはタイル型ウィンドウマネージャーには意味がないと思う。フローティングWMではそのワークフローは問題ないけど、タイル型WMの真価はウィンドウを実際にタイルするところにある。僕にとっては、ブラウザ、エディタ、ターミナルが一度に見えて、super+hjklやsuper+上下左右で空間的にナビゲートできるのが理想のトリニティ。だから、プロジェクトごとに1つのワークスペースを持つのが、タイル型WMの実際のワークフローとしてはずっと理にかなってる。Niriは新しいウィンドウを右に開けるようにして、現在のワークスペースのレイアウトを崩さないから、これを大幅に改善してくれるんだ。例えば、PDFを開く必要があるときとかね。トリニティを保ちながら、新しいウィンドウに簡単に切り替えられるのがいいんだ。
しばらくタイル型のウィンドウマネージャーを使ってたよ。君と似たような設定で(awesomeからqtile、短い間xmonad使って、最終的にはi3にしてWaylandにswayに切り替えたけど、hyprlandも少し試したことがある)。いつもぶつかるのは、3つ以上のウィンドウを横に並べるのがうまくいかないってこと。縦に分割するとウィンドウが小さくなっちゃうことも多いしね。一方で、何かを読んだり作業したりしている横に新しいウィンドウを開きたくなることがよくあった。例えば、ターミナルをいくつか開いていて、ipythonからプロットしたい時とか。それがいつも結構ストレスになって、要するに新しいウィンドウを開く前にいくつかのウィンドウをスタックレイアウトにまとめなきゃいけなかったり、横に並べたいウィンドウを新しいワークスペースに移動させたりしてた。これって、ウィンドウ管理を考えなきゃいけなくて、実際の作業から気が散っちゃうんだよね。niriを使うと、ただ新しいウィンドウを開けばいいし、必要なところに置けるし、他のウィンドウも左と右に残ってるから、そこに「スクロール」するだけで済む。今はワークフローがちょっと乱雑になったけど、それが逆に良いことだと思ってる。タイル型ウィンドウマネージャーは整理整頓が必要だけど、niriだとそんなの気にしなくていい。時々ウィンドウがすぐに見つからないこともあるけど、オーバービューを使えばいいし、ウィンドウ検索のrofiもあるからね。最初はswayのタグみたいに名前付きのワークスペースをいくつか持ってたけど、習慣で切り替えてたから。今はもう使ってないよ。
ずっと(KDE、GNOME、niri)アクティビティやプロジェクトごとにワークスペースを使ってきた。Steamを開いてたワークスペースや、さっき見てたゲームのwikiがあるワークスペース、Emacsとドキュメントを開いてるブラウザのワークスペース、Godotといくつかのゲーム開発アプリを開いてるワークスペースがある。niriの良さは、「ウィンドウが多すぎてアプリを閉じなきゃ」って感じが全くないこと。簡単に区分けできるし、アプリごとのワークスペースの意味が全然わからなかった。例えば、仕事から遊びまで全部混ざったFirefoxのインスタンスを一つ開くのが嫌なんだ。
Niriに切り替える前はi3とawayを使ってた。基本的にタスクごとに1つのワークスペースを使ってて、特定のアプリ専用のワークスペースもある(例えばブラウザのワークスペース)。どのアプリも常にフルスクリーンだよ。niriのスクロールは、主に1つのタスクに関連する作業に使ってる。例えば、プロジェクトでエディタを使ってる時に、左にスクロールすればそのプロジェクトのkiloコードが開いて、右にスクロールすればターミナルや他の関連するものがある。だから、基本的にはswayのようなワークフローを使ってるけど、特定のタスクに密接に関連したものが同じワークスペースにあって、左や右にスクロールしてアクセスする感じ。すべてフルスクリーンか、時々は3/4の幅(フル高さ)だね。たまに、1つのカラムに2つのターミナルを縦に分割して使うこともある。
wl-onlyブランチのmangowmを使ってる(wlroots 0.20ベース)。リソースをかなり少なく使うし、レイアウトも多いし、問題も少ない。Niriの方が見た目は良さそうだけど、試してみる価値はあるよ。HDRが欲しいなら、待たないといけないけど。
どんな問題が少ないの?自分にとってniriはめちゃくちゃ安定してるよ。
GnomeのPaperWM拡張を使ってるんだけど(Niriがインスパイアされたと思う?)、確かに面白い働き方だよね。好きかどうかは微妙だけど、3つ以上のウィンドウを1つのワークスペースに開くとちょっと面倒に感じる。でも、ちゃんと試してみるつもりだし、Gnomeの拡張だから他のGnomeデスクトップ環境もすぐ使えるのがいいところだね。
しばらくNiriに切り替えたいと思ってたんだけど、アクセサリーの設定(上部バー、アイドルタイムアウト、通知など)を全部把握するのに何日もかかってた。別のコメントでも言ったけど、Waylandの「デスクトップシェル」があって、Gnomeとかから期待するほとんどの機能が簡単に使えることに気づいたんだ。設定ダイアログやアプリケーショントレイ、リソースモニタリング、上部バーなども含めてね。今はdank material shellを使ってるけど、デスクトップシェルとコンポジタを自由に組み合わせられるのが本当にクールだよ。
同じく、PaperWMがほとんど邪魔にならないGnome拡張だっていうのも好きだな。全体的にワークフローが改善されたし、使ってた他の拡張(デスクトップグリッドとか、どれか忘れたけど)を2つか3つ削除できたのも良かった。
誰かNNN(Niri-Nix-Noctalia)のドットを試したい人がいたら、僕のフレークを自由に使ってね。https://github.com/MostlyKIGuess/nix-flake-public
何年もウィンドウマネージャーを使ってたけど、WM自体とは関係ない設定(ダークモードの設定とか)をするのが面倒で、フル機能のデスクトップ環境に切り替えたんだ。Noctaliaを教えてくれてありがとう - まさに自分が必要としてたものだよ!
ロシアの天才が1億ドル相当のClaudeトークンよりもいいものを作れるらしいよ。全然マスサイコーシスじゃないから、みんなSPYを買い上げよう!
実際に天才だよ。リリースノートをチェックしてみて、すごく美しいから。
関連情報: スクロールウィンドウマネージャーの素晴らしい理由 - https://news.ycombinator.com/item?id=46820468 - 2026年1月(61コメント)Niri 25.11がalt-tabやその他の改善と共にリリース - https://news.ycombinator.com/item?id=46097051 - 2025年11月(1コメント)Niri – スクロール可能なタイル型Waylandコンポジタ - https://news.ycombinator.com/item?id=45461500 - 2025年10月(229コメント)未来はNiriだ - https://news.ycombinator.com/item?id=43342178 - 2025年3月(216コメント)Niri: スクロール可能なタイル型Waylandコンポジタ - https://news.ycombinator.com/item?id=37367687 - 2023年9月(37コメント)
i3wmからNiriに移行した人たちに、ぜひ納得させられたいな。i3wm(今はsway)ユーザーとしてNiriを試してみたけど、ちょっと気になる点があったんだ。 - (クロッピング)フォーカスを移動させながらスクロールすると、左に押し出したウィンドウの10%くらいがずっと表示され続けることがある。Niriを設定して、ウィンドウの一部が切り取られないようにしようとしたけど、うまくいかなかった。設定を見逃したのかもしれないけど。 - (スクラッチパッド)スクラッチパッドがない。拡張スクリプトを使ったワークアラウンドは見たけど、使うのが面倒に感じた(スクリプト自体ではなく、Niriにネイティブ機能があればよかったのに)。メールやDiscord、Obsidianのような「グローバル」アプリにスクラッチパッドをよく使うから、どのワークスペースにいても開けて、後で完全に消せるのが理想なんだ。 - (空間記憶)i3wmに慣れているから、異なるアプリを押し込んで一つの画面に収めるのが楽なんだ。i3wmではワークスペースを「完璧に把握」できる。Niriのスタイルだと、左や右のことを「忘れちゃう」感じがする。ズームアウトできるのはわかるけど、短期記憶に対して摩擦を感じる。これらの点を克服するための提案があれば、ぜひ教えてほしいな。近いうちに、もっと仕事環境でNiriを試してみるつもり(最初の試みはテレビに接続したPCで、メディア中心の使い方だったから)。
> 異なるアプリを押し込んで一つの画面に収める。i3wmではワークスペースを「完璧に把握」できる。これはどういう意味?
=== スクラッチパッド === 2つのNiriの機能のおかげで、スクラッチパッドが必要になるのを避けてきたんだ。 - alt+tabを素早くタップして、最後にフォーカスしたウィンドウに戻れる。 - IPCがとても扱いやすいから、一般的な方法で「起動またはフォーカス」ショートカットを作れる。 Discordや一度だけ開きたいアプリがあれば、「起動またはフォーカス」して、どこかで動いている状態になる。どこかというのは、自分の裁量でどのワークスペースにいるかをコントロールできるってこと。もしどこからでも再度起動したら、2つ目のインスタンスを立ち上げるのではなく、すぐにそのウィンドウに飛べるし、alt+tabで前の場所に戻れる。面白いのは、一度起動したら、既存のウィンドウに干渉しないから、何も再度開かれないんだ。「どこにいてもこのプログラムに素早くアクセスできる」ことが目的だから、すべてのワークスペースを追いかける必要はないんだ。起動またはフォーカスのモデルは、GUIアプリにもTUIにも適用できる。 === 空間記憶 === Niriのオーバービューは、全体を俯瞰できるんだ。ステータスバーは、どのワークスペースが使われているか(必要なら開いているアプリも)を表示できる。さらに、Walkerのような特定のランチャーには、ウィンドウを切り替えるためのショートカットがある。これにより、常に1つのグローバルホットキーで開いているウィンドウを把握できて、すぐにファジー検索で切り替えられるんだ。私のdotfilesはここにセットアップしてあるよ。https://github.com/nickjj/dotfiles