sxyazi / yazi

💥 Blazing fast terminal file manager written in Rust, based on async I/O.
https://yazi-rs.github.io
MIT License
14.31k stars 330 forks source link

display files from network shares #1135

Closed greweln closed 2 months ago

greweln commented 3 months ago

What system are you running Yazi on?

Linux X11

What terminal are you running Yazi in?

st

Did you try the latest code to see if this problem got fixed?

Tried, but the problem still

yazi --debug output

```sh Yazi Version: 0.2.5 (46cd42f 2024-05-27) OS: linux-x86_64 (unix) Debug: false Ya Version: Ok(Output { status: ExitStatus(unix_wait_status(0)), stdout: "Ya 0.2.5 (46cd42f 2024-05-27)\n", stderr: "" }) Emulator Emulator.via_env: ("st-256color", "") Emulator.via_csi: Ok(Unknown([])) Emulator.detect: Unknown([]) Adaptor Adaptor.matches: X11 Desktop XDG_SESSION_TYPE: Some("tty") WAYLAND_DISPLAY: None DISPLAY: Some(":0") SSH shared.in_ssh_connection: false WSL /proc/sys/fs/binfmt_misc/WSLInterop: false Variables SHELL: Some("/bin/bash") EDITOR: Some("hx") ZELLIJ_SESSION_NAME: None YAZI_FILE_ONE: None YAZI_CONFIG_HOME: None file(1) Version: Ok(Output { status: ExitStatus(unix_wait_status(0)), stdout: "file-5.45\nmagic file from /etc/magic:/usr/share/misc/magic\n", stderr: "" }) Text Opener default: Some(Opener { run: "hx \"$1\"", block: true, orphan: false, desc: "hx", for_: None, spread: false }) block: Some(Opener { run: "hx \"$1\"", block: true, orphan: false, desc: "hx", for_: None, spread: false }) tmux TMUX: false Ueberzug++ Version: Ok(Output { status: ExitStatus(unix_wait_status(0)), stdout: "ueberzugpp 2.9.5\n", stderr: "" }) ```

Describe the bug

Previewing files from network share(smb) takes a long time. If I quit Yazi is telling me that there's <#> tasks running. After some time is displays a black window that covers all the preview part of layout which persists till I close the program.(see the screenshot) . screenshot I've been told to:

I've tried the version from crates.io and the latest from Github.

Expected Behavior

display image correctly.

To Reproduce

try to display any files from a smb share.

Configuration

Anything else?

I got these from the logs:

 2024-06-07T14:27:08.308425Z  WARN yazi_adaptor::adaptor: [Adaptor] Could not identify XDG_SESSION_TYPE
    at yazi-adaptor/src/adaptor.rs:98

  2024-06-07T14:29:22.289871Z ERROR yazi_scheduler::preload::prework: Preload task `image` returned 2
    at yazi-scheduler/src/preload/prework.rs:62
sxyazi commented 3 months ago

Can you paste your yazi.toml config here please?

greweln commented 3 months ago

sure, however FYI it does the same thing with the default config:

[manager]
ratio         = [ 1, 2, 4 ]
sort_by        = "alphabetical"
sort_sensitive = true
sort_reverse   = false
sort_dir_first = true
linemode       = "none"
show_hidden    = true
show_symlink   = true
# syntect_theme = "bat --theme base16"

[preview]
tab_size   = 2
max_width  = 1000
max_height = 1000
ueberzug_offset = [0.5, 0.5, -0.5, -0.5]
# cache_dir  = "/home/me/.local/share/yazi"

[opener]
edit = [
        { run = 'hx "$1"', block = true,  for = "unix" },
]
open = [
        { run = 'xdg-open "$@"', desc = "Open", for = "linux" },
        # { run = 'feh -Z "$@"', block = true, for = "unix" }
]
reveal = [
        { run = '''exiftool "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show EXIF", for = "unix" },
]
extract = [
        { run = 'unar "$1"', desc = "Extract here", for = "unix" },
]
play = [
        { run = 'mpv "$@"', orphan = true, for = "unix" },
        { run = '''mediainfo "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show media info", for = "unix" },
]
image = [
        { run = 'feh --scale-down --image-bg black "$@"', block = false, for = "unix" }
]
pdf = [
        { run = 'firefox "$@"', block = false, for = "unix" }
]

[open]
rules = [
        { name = "*/", use = [ "edit", "open", "reveal", "image" ] },

        { mime = "text/*",  use = [ "edit", "reveal" ] },
        { mime = "image/*", use = "image" },
        { mime = "video/*", use = [ "play", "reveal" ] },
        { mime = "audio/*", use = [ "play", "reveal" ] },
        { mime = "inode/x-empty", use = [ "edit", "reveal" ] },

        { mime = "application/json", use = [ "edit", "reveal" ] },
        { mime = "*/javascript",     use = [ "edit", "reveal" ] },

        { mime = "application/zip",             use = [ "extract", "reveal" ] },
        { mime = "application/gzip",            use = [ "extract", "reveal" ] },
        { mime = "application/x-tar",           use = [ "extract", "reveal" ] },
        { mime = "application/x-bzip",          use = [ "extract", "reveal" ] },
        { mime = "application/x-bzip2",         use = [ "extract", "reveal" ] },
        { mime = "application/x-7z-compressed", use = [ "extract", "reveal" ] },
        { mime = "application/x-rar",           use = [ "extract", "reveal" ] },
        { mime = "application/pdf",             use = [ "pdf", "reveal" ] },

        { mime = "*", use = [ "open", "reveal" ] },
]

[tasks]
micro_workers = 1
macro_workers = 1
bizarre_retry = 5

[plugin]
prepend_preloaders = [
        { mime = "image/heic", run = "heic" },
]

[log]
enabled = false

fetchers = []
sxyazi commented 3 months ago

You should place fetchers under [plugin] not [log]:

https://github.com/sxyazi/yazi/blob/189cb81db335650889be6f02406526fecf8e0fb1/yazi-config/preset/yazi.toml#L82-L87

Also check out https://github.com/DreamMaoMao/mime.yazi, it can speed up your SMB file mime-types loading.

I noticed that you are using the git version of 2024-05-27. Please update it to the latest (git pull) because fetchers have made some adjustments in the past few days before the release.

greweln commented 3 months ago
sxyazi commented 3 months ago

I fixed the config file and updated it to the latest git version, unfortunately the issue is still there.

Please paste your fixed config here so I can check if there are any other errors, and then paste the output of yazi -V.

What I've noticed, is that when I switch to dir with pics and start right way to scroll then the black window appears. If it is to wait till it "scans" all the files then it behaves correctly.

Can you make a GIF to show me what's happening? Also, press 'w' to open the task manager and see which tasks are blocking the queue execution?

I've tried: https://github.com/DreamMaoMao/mime.yazi , it does seems to make a difference in speed.

mime.yazi has also been updated recently to accommodate the upcoming Yazi v0.3. Please make sure your mime.yazi is up to date as well - you can run git pull to update it.

greweln commented 2 months ago

[preview] tab_size = 2 max_width = 1000 max_height = 1000 ueberzug_offset = [0.5, 0.5, -0.5, -0.5]

cache_dir = "/home/me/.local/share/yazi"

[opener] edit = [ { run = 'hx "$1"', block = true, for = "unix" }, ] open = [ { run = 'xdg-open "$@"', desc = "Open", for = "linux" },

{ run = 'feh -Z "$@"', block = true, for = "unix" }

] reveal = [ { run = '''exiftool "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show EXIF", for = "unix" }, ] extract = [ { run = 'unar "$1"', desc = "Extract here", for = "unix" }, ] play = [ { run = 'mpv "$@"', orphan = true, for = "unix" }, { run = '''mediainfo "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show media info", for = "unix" }, ] image = [ { run = 'feh --scale-down --image-bg black "$@"', block = false, for = "unix" } ] pdf = [ { run = 'firefox "$@"', block = false, for = "unix" } ]

[open] rules = [ { name = "*/", use = [ "edit", "open", "reveal", "image" ] },

    { mime = "text/*",  use = [ "edit", "reveal" ] },
    { mime = "image/*", use = "image" },
    { mime = "video/*", use = [ "play", "reveal" ] },
    { mime = "audio/*", use = [ "play", "reveal" ] },
    { mime = "inode/x-empty", use = [ "edit", "reveal" ] },

    { mime = "application/json", use = [ "edit", "reveal" ] },
    { mime = "*/javascript",     use = [ "edit", "reveal" ] },

    { mime = "application/zip",             use = [ "extract", "reveal" ] },
    { mime = "application/gzip",            use = [ "extract", "reveal" ] },
    { mime = "application/x-tar",           use = [ "extract", "reveal" ] },
    { mime = "application/x-bzip",          use = [ "extract", "reveal" ] },
    { mime = "application/x-bzip2",         use = [ "extract", "reveal" ] },
    { mime = "application/x-7z-compressed", use = [ "extract", "reveal" ] },
    { mime = "application/x-rar",           use = [ "extract", "reveal" ] },
    { mime = "application/pdf",             use = [ "pdf", "reveal" ] },

    { mime = "*", use = [ "open", "reveal" ] },

]

[tasks] micro_workers = 1 macro_workers = 1 bizarre_retry = 5

[plugin] prepend_preloaders = [ { mime = "image/heic", run = "heic" }, ]

fetchers = [

Mimetype

    { id = "mime", name = "*", cond = "!mime", run = "mime", prio = "high" },

]

[log] enabled = false



- If I press 'w' when the issue occurs most of the pop up window is covered by the existing 'black window' so I can't see much:

![screenshot](https://github.com/sxyazi/yazi/assets/78338967/f64cffec-d2fc-4fc8-899f-9cfaec880691)
sxyazi commented 2 months ago

You need to add preloaders = [] and remove your prepend_preloaders under [plugin] section to completely disable all preloaders in this SMB case. See docs at https://yazi-rs.github.io/docs/configuration/yazi#plugin

greweln commented 2 months ago

I did that, unfortunately doesn't help. However, it happens now with the local files as well.
I remove completely the .config/yazi dir and went with the default and the same issue. I'm describing the details hopefully helps: When I select the directory with images and right away I start to scroll through the images the black window appears and persists even if I change directories. At this point I have to close the program. If it is to wait a bit before scrolling, then the images are displayed correctly.

sxyazi commented 2 months ago

Does your st include a Sixel patch? If not, Yazi will fallback to using ueberzugpp for image previews. This could be an issue with ueberzugpp itself - have you updated ueberzugpp recently?

Please build Yazi in debug mode (cargo build without --release flag) and repeat the same steps then paste the contents of yazi --debug, ~/.local/state/yazi/yazi.log, and /tmp/ueberzugpp-$USER.log here.

greweln commented 2 months ago

Ya Version: 0.2.5

Emulator Emulator.via_env: ("st-256color", "") Emulator.via_csi: Ok(Unknown([])) Emulator.detect : Unknown([])

Adapter Adapter.matches: X11 Desktop XDG_SESSION_TYPE: Some("tty") WAYLAND_DISPLAY : None DISPLAY : Some(":0")

SSH shared.in_ssh_connection: false

WSL /proc/sys/fs/binfmt_misc/WSLInterop: false

Variables SHELL : Some("/bin/bash") EDITOR : Some("hx") ZELLIJ_SESSION_NAME: None YAZI_FILE_ONE : None YAZI_CONFIG_HOME : None

Text Opener default: Some(Opener { run: "${EDITOR:=vi} \"$@\"", block: true, orphan: false, desc: "$EDITOR", for: None, spread: true }) block : Some(Opener { run: "${EDITOR:=vi} \"$@\"", block: true, orphan: false, desc: "$EDITOR", for: None, spread: true })

tmux TMUX : false Version: No such file or directory (os error 2)

Dependencies file : 5.45 ueberzugpp : 2.9.6 ffmpegthumbnailer: No such file or directory (os error 2) magick : No such file or directory (os error 2) fzf : 0.44.1 fd : No such file or directory (os error 2) rg : 14.1.0 chafa : No such file or directory (os error 2) zoxide : No such file or directory (os error 2) unar : No such file or directory (os error 2) jq : 1.7.1


When reporting a bug, please also upload the yazi.log log file - only upload the most recent content by time. You can find it in the "/home/me/.local/state/yazi" directory.



-  yazi.log: 
[yazi.log](https://github.com/user-attachments/files/15855364/yazi.log)

- ueberzug:
[ueberzugpp-me.log](https://github.com/user-attachments/files/15855368/ueberzugpp-me.log)
sxyazi commented 2 months ago

Please record a GIF of what happens when executing https://yazi-rs.github.io/docs/image-preview/#debug-ueberzug with the command in your yazi.log:

{"action":"add","identifier":"yazi","x":96,"y":1,"max_width":400,"max_height":150,"path":"/home/me/Media/Pictures/Rust/20220211_095213.jpg"}
greweln commented 2 months ago

here it is: yazi1

sxyazi commented 2 months ago

The image (/home/me/Media/Pictures/Rust/20220211_095213.jpg) itself is black right?

If not, then it's a bug with Überzug++ as Yazi is sending the correct commands to Überzug++, but Überzug++ isn't rendering them properly.

You could also try downgrading Überzug++ to an older version, like Überzug++ 2.8.8, which has been proven to be relatively stable in other issues related to Überzug++.

greweln commented 2 months ago

That's the 'black window' that appears on top of the image. That's basically my issue. What I don't understand is why not happening all the time? I'll try to find a previous stable version of ueberzugpp and get back with updates.

sxyazi commented 2 months ago

What I don't understand is why not happening all the time?

It could be related to the hacky implementation of ueberzugpp - it has to consider compatibility with different desktop environments and terminals, but not all edge cases can be perfectly resolved. I've also received other reports about ueberzugpp occasionally malfunctioning.

So, I suggest not using ueberzugpp if possible - it's only provided as a last resort for users. The latest Yazi code already supports st with the Sixel patch, which is the method I recommend.

greweln commented 2 months ago

That patch completely mess up my Yazi. Images are displayed on top of each other and Yazi won't display the files on the second column. Well, it looks like the only option is Kitty which unfortunately doesn't support my font, so I'll drop it for now. Thanks a lot for taking the time to debug all this. Much appreciated.

sxyazi commented 2 months ago

You're welcome! Let's close the issue then

sxyazi commented 2 months ago

Hey @greweln, today I received a bug report very similar to your issue description and have fixed it in https://github.com/sxyazi/yazi/pull/1200. Please give it a try to see if it can resolve your issue as well!

greweln commented 2 months ago

hell yeah! thank you so much, all good now.

github-actions[bot] commented 1 month ago

I'm going to lock this issue because it has been closed for 30 days. ⏳ This helps our maintainers find and focus on the active issues. If you have found a problem that seems similar to this, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.