Rigellute / spotify-tui

Spotify for the terminal written in Rust 🚀
MIT License
17.62k stars 526 forks source link

Cover Artwork #419

Open niklaskorz opened 4 years ago

niklaskorz commented 4 years ago

In certain terminal emulators, for example Kitty, graphics can be displayed. It might be worth discovering this as an option to display the cover art in the spotify-tui interface. I'd be willing to implement this myself as a pull request if there's interest.

Rigellute commented 4 years ago

It would be awesome to get the album art rendered in the terminal. I've actually looked into this before but couldn't figure it out. There is an open question in tui for this exact issue https://github.com/fdehau/tui-rs/issues/143

But please do have a crack at it!

niklaskorz commented 4 years ago

The ranger source code is a pretty good hint and shows that there's no single "correct" solution to this: https://github.com/ranger/ranger/blob/master/ranger/ext/img_display.py

I think it makes sense to wrap the most commonly used solutions in a general tui-rs widget and let the user opt-in to any of the provided solutions.

As an experiment, I have taken ranger's implementation as an inspiration and implemented a basic ueberzug image widget in tui-rs:

image
niklaskorz commented 4 years ago

To be clear, except for Kitty and iTerm2, this would rely on calling external programs that draw on top of the actual terminal. From what I have seen, only Kitty and iTerm2 support real drawing of graphics directly in the terminal.

ghost commented 4 years ago

Screenshot_20200520_221911

Covers could be generated as ANSi and rendered in any terminal emulator.

jerbaroo commented 4 years ago

Covers could be generated as ANSi and rendered in any terminal emulator.

Would this solution only work for displaying artwork in full screen or over large portions of the screen? It wouldn't be suitable for displaying the artwork of the current song in the bottom corner of the spotify-tui?

ghost commented 4 years ago

Would this solution only work for displaying artwork in full screen or over large portions of the screen?

I'm not sure of the design details just floating the concept that all terminal emulators can have covers if ANSi is used.

eoli3n commented 4 years ago

Any news about this ?

atanunq commented 4 years ago

This thread inspired me to create viuer but for now it only has support for Kitty and questionable cross-platform capabilities. If support for iTerm is added I believe it would be a good candidate for the work here.

Edit: iTerm support is finished.

apprehensions commented 3 years ago

anything new? i've been looking forward to switching to spotify-tui but this has been holding me back.

Icelk commented 2 years ago

I've made a fork which adds support for this using the kitty graphics protocol. The code is very hacky, but it works without any major bugs.

https://github.com/Icelk/spotify-tui