jeff-hughes / shellcaster

Terminal-based podcast manager built in Rust
GNU General Public License v3.0
199 stars 14 forks source link

Make Details pane scrollable and panes resizable and reorientable #35

Open Elcoid opened 3 years ago

Elcoid commented 3 years ago

First of all, thank you for making ShellCaster! It is very simple and intuitive, I like it. Here are three suggestions to improve it:

jeff-hughes commented 3 years ago

Thanks for the suggestions! I like the idea of the scrollable descriptions. I guess none of the podcasts that I subscribe to tend to have their transcripts directly in the description (I've seen some with links to show notes that have a transcript), so it's not something I had considered. But I like the idea! Especially for the one you're showing in the screenshot where if you're trying to learn German, the transcript might be helpful for following along. So I'll add it to my list.

As far as the resizable panes or switching vertical to horizontal....I'm not quite as keen on those, as I think they would end up creating a fair amount of complexity. The app has too many keybindings as it is! I'm not convinced that the episode names being cut off is a particularly big problem, as the full episode name appears in the details pane on the right already. I get that it's only showing the currently selected episode, but I think trying to build in resizable panes would create a lot of complexity without a great return on investment there. You called shellcaster "simple and intuitive", and that's the sweet spot where I'd like to keep it!

I will play around with the horizontal/vertical idea a bit more, see if I can get something useful working. I could see it being beneficial for people with monitors oriented vertically. The awkward thing might be that your "left" and "right" keybindings now really are moving the cursor up and down instead (from one pane to the next) in that layout, and maybe that just ends up being weird. But I'll at least play around with it and see if there's something useful there.

Thanks again for the suggestions!

enron-hubbard commented 1 year ago

For reorienting panels, this could be done in the config without having to set any new keybindings. Tut has a nice approach to it, setting variables for panel placement and proportional sizes using two panels (list and content):

list-placement=[top,bottom,left,right]
list-proportion=[x]
content-proportion=[x]

You could do the same kind of thing in the config. For example:

layout=horizontal
podcasts-placement=left
podcasts-proportion=1
episodes-placement=middle
episodes-proportion=1
details-placement=right
details-proportion=1

is the layout as it already is. Or you could do:

layout=vertical
podcasts-placement=top
podcasts-proportion=1
episodes-placement=bottom
episodes-proportion=1
details-placement=middle
details-proportion=3

to have a portrait view with the podcast list at the top, episodes at the bottom, and a big fat details pane right in the middle.

arza-zara commented 1 year ago

Scrollable details was implemented in https://github.com/jeff-hughes/shellcaster/commit/3bca0213e57fbe9827815a603a4eee5e0d7bc9ec.