Allow interacting with background tasks / sending inputs to interactive TUI processes
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 条评论