ITADN

Allow interacting with background tasks / sending inputs to interactive TUI processes

#4020ClosedMohamed-Fathy-Salah 创建于 2026-06-05
waiting on opfeature
### `ya env` output ```Shell Yazi Version: 26.5.6 (8e80798 2026-06-01) Debug : false Triple : x86_64-unknown-linux-gnu (linux-x86_64) Rustc : 1.96.0 (ac68faa2 2026-05-25) Backtrace: None Ya Version: 26.5.6 (8e80798 2026-06-01) Debug : false Triple : x86_64-unknown-linux-gnu (linux-x86_64) Rustc : 1.96.0 (ac68faa2 2026-05-25) Config Init : /home/mofasa/.config/yazi/init.lua (524 chars) Yazi : /home/mofasa/.config/yazi/yazi.toml (2406 chars) Keymap : /home/mofasa/.config/yazi/keymap.toml (8421 chars) Theme : /home/mofasa/.config/yazi/theme.toml (27 chars) VFS : /home/mofasa/.config/yazi/vfs.toml (No such file or directory (os error 2)) Package : /home/mofasa/.config/yazi/package.toml (740 chars) Dark/light flavor: ArcSwapAny("kanagawa") / ArcSwapAny("") Emulator TERM : Some("st-256color") TERM_PROGRAM : None TERM_PROGRAM_VERSION: None Brand.from_env : None Emulator.detect : Emulator { kind: Right(Unknown { kgp: false, sixel: true }), version: "", light: false, csi_16t: (12, 26), force_16t: false } Adapter Adapter.matches : Sixel Dimension.available: Dimension { cols: 159, rows: 40, width: 1908, height: 1040 } Desktop XDG_SESSION_TYPE : None WAYLAND_DISPLAY : None DISPLAY : Some(":0") NIRI_SOCKET : None SWAYSOCK : None 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 : None FZF_DEFAULT_COMMAND: None Text Opener default : Some(OpenerRule { id: Id(24), run: NonEmptyString("${EDITOR:-vi} %s"), block: true, orphan: false, desc: "$EDITOR", for: Unix, spread: false }) block-create: Some(OpenerRule { id: Id(24), run: NonEmptyString("${EDITOR:-vi} %s"), block: true, orphan: false, desc: "$EDITOR", for: Unix, spread: false }) block-rename: Some(OpenerRule { id: Id(24), run: NonEmptyString("${EDITOR:-vi} %s"), block: true, orphan: false, desc: "$EDITOR", for: Unix, spread: false }) Multiplexers TMUX : false tmux version : tmux 3.5a tmux build flags : enable-sixel=Unknown ZELLIJ_SESSION_NAME: None Zellij version : No such file or directory (os error 2) Dependencies file : 5.46 ueberzugpp : No such file or directory (os error 2) ffmpeg/ffprobe: 6.1.4 / 6.1.4 pdftoppm : 25.11.0 magick : 7.1.2-19 fzf : 0.67.0 fd/fdfind : 10.4.2 / No such file or directory (os error 2) rg : 15.1.0 chafa : 1.18.0 zoxide : No such file or directory (os error 2) 7zz/7z : 26.00 / 26.00 resvg : 0.46.0 jq : 1.8.1 Clipboard wl-copy/paste: 2.3.0 / 2.3.0 xclip : 0.13 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 Currently, Yazi does an excellent job separating blocking foreground tasks (`block = true`) and asynchronous background tasks (`block = false`). However, when running continuous, semi-interactive terminal processes—such as development servers (e.g., `expo start`, `vite`, `nodemon`) or Docker monitoring tools—we run into a limitation. If run with `block = true`, Yazi is completely suspended, preventing the user from browsing files while the server logs run. If run in the background, Yazi absorbs the stdin/stdout control stream, rendering the process entirely non-interactive. For example, there is currently no way to send a raw keystroke (like pressing `r` to reload an Expo/Vite dev server) to a running background task within Yazi. I would like a way to seamlessly view and interact with running background processes without completely dropping Yazi's core file-browsing state. ### Would you be willing to contribute this feature? - [x] Yes, I'll give it a shot ### Describe the solution you'd like **Interactive Task Inspection:** Expanding the Task Manager (`w`) so that when hitting `Enter` on an active task, it opens a pass-through TTY overlay (similar to a floating window or toggleable pane) that temporarily binds the terminal's `stdin` directly to that specific background process. ### Additional context _No response_ ### 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
关闭于 2026-06-14 5 条评论