Niri 26.04: スクロール可能なタイル配置のWaylandコンポジタ
8時間前原文(github.com)
概要
- 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も参照してください。