## 事象 `yazi.toml` が以下の設定であるとき ```toml [opener] preview = [ { run = 'qlmanage -p "$0"', desc = "Quick Look Preview"} ] gimp = [ { run = 'LANG=ja gimp -n "$0"', desc = "GIMP"} ] [open] prepend_rules = [ { mime = "image/*", use = "preview" }, { mime = "video/webm", use = "open" }, ] append_rules = [ { mime = "image/*", use = "gimp" }, ] ``` [[PNG]]ファイルに `open --interactive` を実行したら、v25.5.31では `prepend_rules` と `append_rules` の設定が前後にマージされていた。 ![[2026-01-07-06-05-19.avif]] しかし、v26.1.4では `prepend_rules` の設定で完全上書きされてしまう。 ![[2026-01-07-06-05-55.avif]] ### 環境 | 対象 | バージョン | | --------- | ---------- | | [[macOS]] | 15.7.2 | | [[Yazi]] | v26.1.4 | ## 原因 `prepend_rules` や `append_rules` は **`rules` の各条件における `use` の前後にopenerを追加するわけではない** から。 仕様としては - `prepend_rules` - 条件に一致したら、**`rules` の条件よりも優先して**採用する - `append_rules` - **`prepend_rules` や `rules` の条件を満たさなかった場合で**、この条件を満たす場合のみ採用する 以下のissueで不具合修正として対応されている。 <div class="link-card-v2"> <div class="link-card-v2-site"> <img class="link-card-v2-site-icon" src="https://github.githubassets.com/favicons/favicon.svg" /> <span class="link-card-v2-site-name">GitHub</span> </div> <div class="link-card-v2-title"> fix: user-prepended open rules do not override presets by sxyazi · Pull Request #3360 · sxyazi/yazi </div> <div class="link-card-v2-content"> Fixes #3357 (comment) </div> <img class="link-card-v2-image" src="https://avatars.githubusercontent.com/u/17523360?s=400&v=4" /> <a href="https://github.com/sxyazi/yazi/pull/3360/files"></a> </div> `find` にすべきところが `filter` になっていたので、条件を通過したものがすべて意図せずマージされてしまっただけらしい。 ## 解決方法 [[preset設定 (Yazi)|preset設定]]を参考にして以下のように書き換える。 ```toml [open] prepend_rules = [ { mime = "image/*", use = ["preview", "open", "reveal", "gimp"] }, { mime = "video/webm", use = "open" }, ] ``` > [!warning] > `rules` として設定すると、`rules` の条件がすべて上書きされてしまうのでやらないほうがいい。 ## 参考 - [yazi.toml | Yazi](https://yazi-rs.github.io/docs/configuration/yazi/#open)