When I listen to music, I like simplicity. I have the music on my HDD, and while I have a Spotify account, I haven't used it for months. Most music I listen to I download from youtube via youtube-dl (check your repositories for download). It has a GUI, but I use it from command line via a pre-defined alias which takes care of things since the program itself first and foremost is for downloading videos.
ncmpcpp: playlist view
For music I use mpd for years now. Mpd stands for music player daemon, it shines when you want to reach a music library through a network, but it is very effective for local stuff too. It is not a music player though, so you need to install a player and configure it, according to a nice wiki.
There are many mpd clients, but my favorite at the moment is ncmpcpp. It's a terminal based player, which has many really good features.
The base view show you the current playlist. You can switch between views with numbers. The second view has a simple browser of the music library, where you can update it, or add some tracks to the playlist.
ncmpcpp: Detailed search function
Ncmpcpp has a full search function, where we can filter in our library based on artist, title, album, filename, etc. Very useful and fast too.
There is an artists view, where it shows you the library according to artists. However you may download some music or podcast where they didn't properly tagged the file, but luckily ncmpcpp has a proper tag editor! It's magic, without all the fancy GUI which just takes up resources.
If you are into visual stuff, you can have a visualizer via fifo.
For custom shortcuts, you have to create the ~/.ncmpcpp/bindings file. For a little bit of vim, here is mine:
# the t key isn't used and it's easier to press than /, so lets use it def_key "t" find def_key "t" find_item_forward def_key "+" show_clock def_key "=" volume_up def_key "j" scroll_down def_key "k" scroll_up def_key "ctrl-u" page_up #push_characters "kkkkkkkkkkkkkkk" def_key "ctrl-d" page_down #push_characters "jjjjjjjjjjjjjjj" def_key "h" previous_column def_key "l" next_column def_key "." show_lyrics def_key "n" next_found_item def_key "N" previous_found_item # not used but bound def_key "J" move_sort_order_down def_key "K" move_sort_order_up
Hardest thing is probably the configuration both for mpd and ncmpcpp, otherwise it's a solid solution for listening to music. I advise to chech the wikis and the r/unixporn subreddit for further customizations.