ITADN

`which` popup renders without a border, unlike other popups

#4188Openrootatoskr 创建于 2026-07-29
featureneeds info
R
rootatoskrcommented
### `ya env` output ```Shell Yazi Yazi 26.5.6 (Arch Linux 2026-06-15) Backtrace: None Ya Version: 26.5.6 (77a6e8dc 2026-07-29) Debug : true Triple : x86_64-unknown-linux-gnu (linux-x86_64) Rustc : 1.97.1 (8bab26f4 2026-07-14) Config Init : /home/qvnt33/.config/yazi/init.lua (611 chars) Yazi : /home/qvnt33/.config/yazi/yazi.toml (3291 chars) Keymap : /home/qvnt33/.config/yazi/keymap.toml (10187 chars) Theme : /home/qvnt33/.config/yazi/theme.toml (2916 chars) VFS : /home/qvnt33/.config/yazi/vfs.toml (No such file or directory (os error 2)) Package : /home/qvnt33/.config/yazi/package.toml (1509 chars) Dark/light flavor: ArcSwapAny("") / ArcSwapAny("") Emulator TERM : Some("tmux-256color") TERM_PROGRAM : Some("tmux") TERM_PROGRAM_VERSION: Some("3.7b") Brand.from_env : Some(Ghostty) Emulator.detect : Emulator { kind: Left(Ghostty), version: "ghostty 1.3.1-arch2", light: false, csi_16t: (9, 21), force_16t: false } Adapter Adapter.matches : Kgp Dimension.available: Dimension { cols: 105, rows: 23, width: 945, height: 483 } Desktop XDG_SESSION_TYPE : Some("wayland") WAYLAND_DISPLAY : Some("wayland-1") DISPLAY : Some(":0") NIRI_SOCKET : None SWAYSOCK : Some("/run/user/1000/sway-ipc.1000.724.sock") HYPRLAND_INSTANCE_SIGNATURE: None WAYFIRE_SOCKET : None SSH shared.in_ssh_connection: false WSL WSL: false Variables SHELL : Some("/usr/bin/zsh") EDITOR : Some("nvim") VISUAL : Some("nvim") YAZI_FILE_ONE : None YAZI_CONFIG_HOME : None YAZI_ZOXIDE_OPTS : None SSH_AUTH_SOCK : None FZF_DEFAULT_OPTS : Some("--height=50% --preview-window=right:70%:wrap --layout=reverse --border=rounded --exact --cycle --info=inline --ignore-case --scrollbar=▐ --wrap --highlight-line --ansi --color=fg:#f8f8f2,bg:#282a36,hl:#bd93f9 --color=fg+:#f8f8f2,bg+:#44475a,hl+:#bd93f9 --color=info:#ffb86c,prompt:#50fa7b,pointer:#ff79c6 --color=marker:#ff79c6,spinner:#ffb86c,header:#6272a4 --bind=tab:down,shift-tab:up --bind=S:preview-down+preview-down+preview-down,D:preview-up+preview-up+preview-up --bind=§:accept,esc:abort") FZF_DEFAULT_COMMAND: Some("fd --hidden --follow --exclude .git") Text Opener default : Some(OpenerRuleArc(OpenerRule { id: Id(24), run: NonEmptyString("nvim %s"), block: true, orphan: false, desc: "NeoVim", for: All, spread: true })) block-create: Some(OpenerRuleArc(OpenerRule { id: Id(24), run: NonEmptyString("nvim %s"), block: true, orphan: false, desc: "NeoVim", for: All, spread: true })) block-rename: Some(OpenerRuleArc(OpenerRule { id: Id(24), run: NonEmptyString("nvim %s"), block: true, orphan: false, desc: "NeoVim", for: All, spread: true })) Multiplexers TMUX : true tmux version : tmux 3.7b tmux build flags : enable-sixel=Supported ZELLIJ_SESSION_NAME: None Zellij version : No such file or directory (os error 2) Dependencies file : 5.48 ueberzugpp : No such file or directory (os error 2) ffmpeg/ffprobe: 8.1.2 / 8.1.2 pdftoppm : 26.07.0 magick : 7.1.2-27 fzf : 0.74.1 fd/fdfind : 10.4.2 / No such file or directory (os error 2) rg : 15.2.0 chafa : No such file or directory (os error 2) zoxide : 0.10.0 7zz/7z : No such file or directory (os error 2) / 26.02 resvg : No such file or directory (os error 2) jq : 1.8.2 Clipboard wl-copy/paste: 2.3.0 / 2.3.0 xclip : No such file or directory (os error 2) xsel : No such file or directory (os error 2) Routine `file -bL --mime-type`: text/plain ``` ### Please describe the problem you're trying to solve ### Description The `which` popup (the keytip menu that appears after pressing a prefix key, e.g. `f`, `g`) is currently rendered as a simple filled block without a border. Every other popup in the app draws a box with a border: `Confirm`, `Message`, `Select`, `Define`, `Task`, `Run`, `Enter`. ### Note The `ya` package (Arch, pacman, 26.5.6-4) does not yet have an `env` subcommand, instead it is compiled with the `yazi/target/debug/ya env` command. ### Would you be willing to contribute this feature? - [x] Yes, I'll give it a shot ### Describe the solution you'd like ### Suggested Change - add a border field: `SyncCell<StyleFlat>` to the `Which` structure (`yazi-config/src/theme/theme.rs`), matching the template already used in `Confirm` / `Spot` / `Pick`; - render `Which` using `Block::bordered().border_type(BorderType::Rounded)`. --- I have working code for this and will open a **PR** request citing this issue. ### Additional context **Screenshot:** before/after <img width="1886" height="929" alt="Image" src="https://github.com/user-attachments/assets/96907295-068b-425b-acf1-fa5238b28079" /> ### Checklist - [x] I have searched the existing issues/discussions - [x] The [latest nightly build](https://yazi-rs.github.io/docs/installation/#binaries) doesn't already have this feature
1 条评论