Skip to content

Conversation

@sxyazi
Copy link
Owner

@sxyazi sxyazi commented Mar 24, 2025

An implementation of the feature request: #2509

Closes #2509


This PR adds a new optional for field to key bindings to specify the platform the key binding applies to.

For example:

{ on = [ "g", "d" ], run = "cd ~/dev",  desc = "Go dev",    for = "unix" },
{ on = [ "g", "d" ], run = 'cd C:\dev', desc = 'Go C:\dev', for = "windows" },

The available values ​​of for are the same as https://yazi-rs.github.io/docs/configuration/yazi#opener

@sxyazi sxyazi merged commit e138364 into main Mar 24, 2025
6 checks passed
@sxyazi sxyazi deleted the pr-48de145c branch March 24, 2025 11:09
GrzegorzKozub added a commit to GrzegorzKozub/yazi that referenced this pull request Mar 25, 2025
Lemi0002 pushed a commit to Lemi0002/yazi that referenced this pull request Apr 10, 2025
@jmlucjav
Copy link

does this apply to the prepend_keymap too? I am trying to use it there (a plugin I have is not available in macos, so want I need to prepend the keys only for linux...) and it does not seem to work...

tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request May 10, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [sxyazi/yazi](https://github.com/sxyazi/yazi) | minor | `v25.3.2` -> `v25.4.8` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>sxyazi/yazi (sxyazi/yazi)</summary>

### [`v25.4.8`](https://github.com/sxyazi/yazi/releases/tag/v25.4.8)

[Compare Source](sxyazi/yazi@v25.3.2...v25.4.8)

#### Breaking Changes

-   Supported wraparound navigation and enabled it by default. sxyazi/yazi#2485
-   Replaced `tasks_show` and `close_input` with `tasks:show` and `input:close`. sxyazi/yazi#2530
-   `frag`, `name`, `stem`, `ext`, and `parent` on [`Url`](https://yazi-rs.github.io/docs/plugins/types#shared.url), `name` on [`tab::Tab`](https://yazi-rs.github.io/docs/plugins/types#app-data.tab-tab), and `is_hovered` on [`fs::File`](https://yazi-rs.github.io/docs/plugins/types#app-data.fs-file) are now properties. sxyazi/yazi#2572
-   Swapped the default key bindings for `z` (zoxide) and `Z` (fzf). sxyazi/yazi#2546
-   Used the new `@sync peek` annotation instead of the previewer's `sync = true`. sxyazi/yazi#2487

#### Deprecated

-   `ui.Padding` and `ui.Rect:padding()` are deprecated. sxyazi/yazi#2574

#### Packaging

-   SVG preview backend switched from ImageMagick to [`resvg`](https://github.com/linebender/resvg) and implemented as a new `svg` previewer. sxyazi/yazi#2533, sxyazi/yazi#2581

#### Custom Search Engine Lua API

With sxyazi/yazi#2452, you can create custom search engines via the Lua API, meaning that plugins can serve as the source for search view file lists.

A new plugin [vcs-files.yazi](https://github.com/yazi-rs/plugins/tree/main/vcs-files.yazi) is available to display the list of files changed in Git within Yazi:

https://github.com/user-attachments/assets/ca6f7d55-002b-4933-b8e8-41f335b96a2b

#### Platform-Specific Key Binding

sxyazi/yazi#2526 adds a new *optional* `for` field to key bindings to specify the platform the key binding applies to.

For example:

```sh
{ on = [ 'g', 'd' ], run = 'cd ~/dev',  desc = 'Go dev',    for = 'unix' },
{ on = [ 'g', 'd' ], run = 'cd C:\dev', desc = 'Go C:\dev', for = 'windows' },
```

#### Performance Improvements

This version brings several performance enhancements:

-   Configuration parser has been rewritten to double the startup speed. sxyazi/yazi#2508
-   AVIF, HEIF, and JPEG XL previews have seen significant performance improvements. sxyazi/yazi#2533, thanks [@&#8203;ze0987](https://github.com/ze0987)
-   Compiled and cached the Lua bytecode to enhance the overall performance of the plugin system. sxyazi/yazi#2490

#### Enhance `fzf` Integration

Now, you can select multiple files in `fzf`, and the selected files will also be selected in Yazi.

Also, you can now view, navigate, and deselect the file selection list from Yazi within `fzf`.

https://github.com/user-attachments/assets/f7b175a3-fa73-4128-8239-f90e45f13ab3

See sxyazi/yazi#2546 for more details.

#### Use Yazi File Manager Directly in Helix, Without Zellij or tmux

sxyazi/yazi#2461 adapted Yazi to support Helix's `:insert-output`, which means you can now run Yazi directly within Helix – it even supports image and video previews!

https://github.com/user-attachments/assets/9dbf7aca-fc4e-4f9e-b554-70cadedf0484

#### New `prev` and `next` Arguments to `arrow` for Wraparound Navigation

Circular navigation is one of the long-requested features, and is now supported via the new `arrow prev` and `arrow next` commands in sxyazi/yazi#2485.

#### New `follow` Command to Follow Files Pointed to by Symlinks

sxyazi/yazi#2543 adds support for following files pointed to by symlinks.

A new key binding, `g` => `f` (follow hovered symlink), has been added to use this feature.

#### Allow Initializing Input When Opening It with Commands Like `rename`, `create`, `find`, `filter`, etc.

With sxyazi/yazi#2578, you can now customize the input box opened by commands such as `create`, `rename`, `cd`, `filter`, `find`, `search`, and `shell`. For example:

```sh
{ on = "r", run = [ "rename", "input:escape" ] }
```

This will open the rename input box and exit insert mode, meaning that the default state will be normal mode.

#### What's Changed

-   feat: new `<C-A>` and `<C-E>` keybindings to select entire line for the input component by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2439
-   fix: reserve a hack for Zellij to force an image adapter by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2441
-   feat: new `rt.term` exports terminal emulator information by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2442
-   fix: always show the size in the status bar even in empty directories by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2449
-   feat: allow `tab_swap` to cycle tabs by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2456
-   feat: support using Yazi in Helix directly without Zellij or tmux by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2461
-   refactor: prefer `WriteConsoleW` for Windows console output by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2464
-   ci: add label only if not removed manually by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2470
-   fix: force ANSI for keyboard progressive enhancement on Windows by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2474
-   feat: new `fs.expand_url` API by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2476
-   feat!: file navigation wraparound with new `arrow prev` and `arrow next` commands by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2485
-   feat!: new `@sync peek` annotation for sync previewers by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2487
-   perf: lazy compile and cache lua plugins as binary bytecode by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2490
-   feat: new `base` field for the `Url` userdata by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2492
-   feat: allow repositioning the cursor in the `rename` DDS event by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2521
-   feat: new `symlink_target` to style the target of symbolic links by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2522
-   feat: platform-specific key binding by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2526
-   feat: show error message when directory fails to load by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2527
-   feat: allow bulk renaming to include trailing content in addition to the required new names by [@&#8203;MikuGeek](https://github.com/MikuGeek) in sxyazi/yazi#2494
-   refactor!: remove unnecessary `tasks_show` and `close_input` commands by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2530
-   perf!: faster image preview with optimized `magick` arguments by [@&#8203;ze0987](https://github.com/ze0987) in sxyazi/yazi#2533
-   feat!: support `arrow prev` and `arrow next` for more components by [@&#8203;XOR-op](https://github.com/XOR-op) in sxyazi/yazi#2540
-   feat: clear terminal before displaying EXIF data by [@&#8203;Integral-Tech](https://github.com/Integral-Tech) in sxyazi/yazi#2541
-   feat: new `follow` command to follow files pointed to by symlinks by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2543
-   fix: always check whether the cursor exceeds the upper bound to guard against unexpected values by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2551
-   feat!: enhance `fzf` integration by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2553
-   feat: support Warp terminal image preview by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2571
-   feat: allow initializing input when opening it with commands like `rename`, `create`, `find`, `filter`, etc. by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2578
-   fix: ignore XQuartz `$DISPLAY` variable by [@&#8203;sxyazi](https://github.com/sxyazi) in sxyazi/yazi#2586
-   fix: don't fail on videos with embedded images by [@&#8203;ze0987](https://github.com/ze0987) in sxyazi/yazi#2590

#### New Contributors

-   [@&#8203;MikuGeek](https://github.com/MikuGeek) made their first contribution in sxyazi/yazi#2494
-   [@&#8203;ze0987](https://github.com/ze0987) made their first contribution in sxyazi/yazi#2533

**Full Changelog**: sxyazi/yazi@v25.3.2...v25.4.8

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4xMS4yIiwidXBkYXRlZEluVmVyIjoiNDAuMTEuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
@github-actions github-actions bot locked as resolved and limited conversation to collaborators May 14, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add a way to set shortcuts for a specific platform

3 participants