hrkfdn / ncspot

Cross-platform ncurses Spotify client written in Rust, inspired by ncmpc and the likes.
BSD 2-Clause "Simplified" License
5.02k stars 209 forks source link

Cover drawing under Wayland #638

Closed brolyxxx closed 2 years ago

brolyxxx commented 2 years ago

Hi, as you're probably aware, the Cover feature is currently broken when running in Wayland as Ueberzug only works in X. When trying to select the Cover screen pressing F8, ncspot writes the following error to the log:

[ncspot::ui::cover] [ERROR] Failed to run Ueberzug: Broken pipe (os error 32)

In ranger, it's actually possible to show images in the terminal emulator under Wayland using Kitty (and setting the correct preview_method in the ranger conf file).

Do you think that using Kitty to draw the cover art is something that could also be achieved with ncspot?

Thanks for the brilliant work!

hrkfdn commented 2 years ago

Hey! To be honest I don't use the ueberzug/cover drawing feature at all. I have added it because it was sent in by a kind contributor, but I merged it as "unsupported" back then, because it's a bit of a hack since terminals do not really support image drawing. I think I'll either remove the ueberzug feature or move to a crate that would abstract this nicely for the different platforms/terminals, but in general I'm not a fan of using these workarounds to display images on the terminal. It will also have to integrate with ncurses/cursive, which may be another hurdle. Sorry, I know this answer may be rather disappointing.

chaseadam commented 2 years ago

Looks like there are "non-workaround"(?) solutions such as Kitty image protocol.

In regards to ranger, it supports Kitty's protocoll for image drawing directly https://github.com/ranger/ranger/commit/41fa04be14857f83d32ea7b55b48292bc8f2393b

Alacritty is considering implementing the same protocol per some comments in https://github.com/alacritty/alacritty/issues/910

brolyxxx commented 2 years ago

Hi,

Thanks for the reply. I understand your point and also it probably makes sense to focus on the core features of ncspot.

I actually figured out you can use the Mpris metadata properties to show the cover art using your favourite method, for example I'm running something like this in another terminal window:

kitty +kitten icat "$(playerctl metadata mpris:artUrl)"

I use kitty but I think anyone can pick their favourite viewer.

I think you can close the issue, cheers.