概要
- 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も参照してください。