niriでもChromiumのピクチャーインピクチャーを使いたい

公開日: 2026年5月7日 5時10分 685文字 4分間

タイル型Waylandコンポジタ「niri」では、設計思想の影響でピクチャーインピクチャーが画面を大きく占有してしまう問題があります。しかし、`niri msg`コマンドでウィンドウ情報を確認し、適切なウインドウルールを設定することで、フローティング表示として正常に動作させることが可能です。

niri

私は普段Linuxではタイル型Waylandコンポジタであるniriを使用しています。

WaylandといえばX11に代わる新しいLinux向けディスプレイサーバーで、Linuxコミュニティ全体が段階的にX11を廃止してWaylandに向かう方向にあります。

しかし1つ問題があります。基本的にピクチャーインピクチャーが正常に動作しないのです。

原因は設計思想の違いらしく、ざっくり言うとX11と違ってWaylandではそれぞれのウインドウは自分以外のウインドウと関わりを持ちません。それ故にピクチャーインピクチャーをタイル型のウィンドウマネージャで使用するとこんな感じに残念な事に…

画面半分を占有するピクチャーインピクチャー
画面半分を占有するピクチャーインピクチャー

解決策

niriの初期のconfigで既にこんな感じの記述があると思います。

// Open the Firefox picture-in-picture player as floating by default.
window-rule {
    // This app-id regular expression will work for both:
    // - host Firefox (app-id is "firefox")
    // - Flatpak Firefox (app-id is "org.mozilla.firefox")
    match app-id=r#"firefox$"# title="^Picture-in-Picture$"
    open-floating true
}

つまり、このウインドウルールをそのまま自分の使っているブラウザ用に書き換えればいいわけです。

niriには情報を表示するためのniri msgコマンドがあります。これを使ってピクチャーインピクチャーを開いた状態でウインドウの情報を確認しましょう。

niri msg windows

こんな感じのログが出てきていると思います。ここに書いてあるTitle:App ID:をそのままウインドウルールの条件に使えば良いわけです。

window-rule {
    match app-id="" title=r#"^ピクチャー イン ピクチャー$"#
    open-floating true
}

これだけでとりあえず出てきた瞬間画面の半分を支配する事は無くなったはずです。便利にするためにここから更にもう少し設定を追加してみましょう。

window-rule {
    match app-id="" title=r#"^ピクチャー イン ピクチャー$"#
    open-floating true
    // デフォルトの位置とサイズを指定
    default-column-width { fixed 480; }
    default-window-height { fixed 270; }
    default-floating-position x=10 y=10 relative-to="bottom-right"
    // 他のルールでfocus-ringやopacityを設定している場合は無効化しておく
    open-focused false
    focus-ring { off; }
    opacity 1.0 
}

こんな感じになりました。試しにこの状態でピクチャーインピクチャーを使ってみます。

ちゃんと右下にフロート表示で描画されている
ちゃんと右下にフロート表示で描画されている

正常に動作していますね。

niriではこんな感じで手軽にウインドウルールを追加して自分の思い通りの動作をさせることができます。今Waylandへの移行を検討している方はniriを使ってみてはいかがでしょうか?

それでは、良きWaylandライフを!

参考にしたサイト