Giter Site home page Giter Site logo

boysetsfrog / vimpc Goto Github PK

View Code? Open in Web Editor NEW
264.0 264.0 34.0 4.85 MB

Official repository for vimpc a vi/vim inspired client for the Music Player Daemon (mpd). Pull requests are welcome.

License: GNU General Public License v3.0

Shell 0.50% Makefile 0.71% C++ 91.17% C 0.13% M4 7.49%

vimpc's People

Contributors

0xtobit avatar boysetsfrog avatar cjgriscom avatar connermcd avatar dennisschagt avatar germainz avatar jamesfolberth avatar lhanson avatar mox-mox avatar psub avatar steils avatar trofi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vimpc's Issues

Feature Request/Idea

I was trying to add an album to my playlist lately, that had many songs from different artists and this got me wondering, is there any way to have the music in the library tab grouped by album instead of artist?

My idea would be to maybe have a second library window (that might be closed by default) that will be sorted this way. By that, the "tabs" paradigm is kept, but another way to access the music library is provided.

Would something like this have a chance of being merged as a pull request?

more flexible format strings

Currently there are %a, %b, etc for use in the song format. In addition to this would be strings in the form %tag name% where tag name is same as the id3 tag or vorbiscomment or whatever metadata is used.

On a similar note, is there a format string for the date tag?

The idea is from foobar2000, a very impressive music player that is sadly windows only.

Odd scrolling behavior when scrolling up

Just another observation... I've noticed that the mouse support for scrolling down works well but scrolling up does not. I'm using OSX 10.6.8 (Snow Leopard) with iTerm2 Build 1.0.0.20120724. When I scroll up it is jumpy and far slower than when scrolling down (which is smooth as expected).

error adding symbols: DSO missing from command line

When trying to build vimpc (018118a) on Arch Linux (latest), I get the following error while running make:

g++       -pthread -g -O2 -D__STRICT_ANSI__  -L/opt/local/lib -o vimpc src/vimpc-algorithm.o src/vimpc-buffers.o src/vimpc-clientstate.o src/vimpc-colours.o src/vimpc-errorcodes.o src/vimpc-events.o src/vimpc-mpdclient.o src/vimpc-output.o src/vimpc-player.o src/vimpc-regex.o src/vimpc-screen.o src/vimpc-settings.o src/vimpc-song.o src/vimpc-vimpc.o src/buffer/vimpc-browse.o src/buffer/vimpc-library.o src/buffer/vimpc-directory.o src/mode/vimpc-command.o src/mode/vimpc-inputmode.o src/mode/vimpc-normal.o src/mode/vimpc-search.o src/window/vimpc-browsewindow.o src/window/vimpc-console.o src/window/vimpc-debug.o src/window/vimpc-directorywindow.o src/window/vimpc-error.o src/window/vimpc-help.o src/window/vimpc-infowindow.o src/window/vimpc-librarywindow.o src/window/vimpc-listwindow.o src/window/vimpc-modewindow.o src/window/vimpc-outputwindow.o src/window/vimpc-pagerwindow.o src/window/vimpc-playlistwindow.o src/window/vimpc-scrollwindow.o src/window/vimpc-selectwindow.o src/window/vimpc-songwindow.o src/window/vimpc-window.o src/window/vimpc-windowselector.o src/vimpc-main.o src/vimpc-lyricsloader.o src/vimpc-lyricsfetcher.o src/window/vimpc-lyricswindow.o  -ltag -lpcre -lmpdclient -lcurl  -lncursesw
/usr/bin/ld: src/vimpc-screen.o: undefined reference to symbol 'wtimeout'
/usr/lib/libtinfo.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [Makefile:745: vimpc] Error 1

Running the command outside of make provides the same error, however adding the -ltinfo flag makes the file compile fine. I got the idea from here.

From here, I don't know wether the problem is that vimpc forgot to declare a dependency or that autoconf forgot to add the correct flag, or Arch has done something (i've tested on two different Arch systems though, so it probably isn't just my system. It worked before though, not sure when it stopped working). I'm posting the issue there though, hoping to have some guidance.

Character alignment?

I love the new custom format options! I do feel like it's lacking some alignment though. It would be great if you could specify a character to align on so that this:

  [    6] José González - Veneer - Deadweight on Velveteen                                    [ 3:27]
  [    7] Erroll Garner - Solitaire - Talk of the Town                                        [ 6:03]
  [    8] Sufjan Stevens - The Avalanche - The Pick-Up                                        [ 3:24]
  [    9] Coldplay - Parachutes - Everything's Not Lost / Life Is for Living                  [ 7:14]
  [   10] Laura Veirs - Troubled by the Fire - Song My Friends Taught Me                      [ 4:32]

would look like this:

  [    6] José González  - Veneer               - Deadweight on Velveteen                     [ 3:27]
  [    7] Erroll Garner  - Solitaire            - Talk of the Town                            [ 6:03]
  [    8] Sufjan Stevens - The Avalanche        - The Pick-Up                                 [ 3:24]
  [    9] Coldplay       - Parachutes           - Everything's Not Lost / Life Is for Living  [ 7:14]
  [   10] Laura Veirs    - Troubled by the Fire - Song My Friends Taught Me                   [ 4:32]

if I set my alignment string to / - / (notice the spaces so The Pick-Up doesn't get aligned).
Would be a great enhancement!

Mapping to partially typed commands

Due to the awesome new load feature I went ahead and mapped a few keys to make loading playlists more useful and I noticed this error. If you map to a :command (and don't end it with Ctrl-M) then once you trigger the map and start typing the letters are put in the wrong spot. For example, if you have

map gl :load 

and then you execute gl and type the word "chill", you end up with

:chillload 

instead of

:load chill

Also, it would be nice if you could use Ctrl-A and Ctrl-E to jump to the beginning/end of the line and Ctrl-U to erase the line like in vim. It would also be nice if you could map the spacebar (so you could map spacebar to play/pause). I know that's three things in one, but I figured I'd save real estate. No hurry or priority on this stuff -- just providing some feedback! Thanks!

AlbumArtist support

i would like to replace ncmpcpp by vimpc, but lacking AlbumArtist support is holding me back.

i try to use musicbrainz tags where possible, including for classical tracks, and sorting by artist alone does not really cut it. basically half of the library ends up in 'various artists'.

it would be great to have the option to replace 'Artist' by 'AlbumArtist' for all sorting and display purposes; or more generally to customize the library sort keys.

Adding content from directory view doesn't refresh playlist

Something happened since the 0.09.1 release (not tagged here but available on Sourceforge as of 2014-03-02). When adding music from the directory view using "a", the master branch code does not update the current selection to a green color, and does not show the songs in the playlist view. However, running "mpc" in another terminal I can see all the expected songs were added.

I don't like to use the library view because sometimes I'll have an album that has multiple artists, or sometimes I've got a "favorite" artist that I'd like to listen to in chronological order, and the directory names are prefixed by the release year. This naming scheme automatically adds them in the right order in the directory tab.

:addall prints error

Trying to use :addall results in the error "E2: MPD Error" incorrect arguments".

Unable to use vimpc with just 20k songs

MPD says "Output buffer is full" in logs. I had to raise max_output_buffer_size to 11264 for it to work. I only have 20k songs, and mpd db file is 10.3M. Increasing the buffer size is a bad workaround, and I have much more songs to import into MPD.

The MPD command that causes the problem is: listallinfo

Why don't you use the 'listall' command instead, and progressively get info?

MPD's maintainer said he doesn't support the 'listallinfo' command. He also says:

I recommend not using clients that employ the "listallinfo" command because they break so easily, and may be very expensive if you're on a mobile connection. imagine every "reconnect" downloads a hundred megabytes...

Lyrics fetching doesn't work

Lyrics fetching doesn't seem to work to work no matter which song I try using the latest master.

Example:

Attempting to find lyrics
Doing PCRE compilation on %artist%
Replacing %artist% in http://lyrics.wikia.com/api.php?action=lyrics&fmt=xml&func=getSong&artist=%artist%&song=%title% with Blind%20Guardian
Doing PCRE compilation on %title%
Replacing %title% in http://lyrics.wikia.com/api.php?action=lyrics&fmt=xml&func=getSong&artist=Blind%20Guardian&song=%title% with The%20Curse%20Of%20Feanor
Doing PCRE compilation on <url>(.*?)</url>
Captured http://lyrics.wikia.com/Blind_Guardian:The_Curse_Of_Feanor
Replacing <url>(.*?)</url> in <?xml version="1.0" encoding="UTF-8"?>
Doing PCRE compilation on &#039;
Doing PCRE compilation on &amp;
Doing PCRE compilation on &quot;
Doing PCRE compilation on &nbsp;
Doing PCRE compilation on ^s+
Doing PCRE compilation on s+$
Doing PCRE compilation on <div class='lyricbox'><script>.*?</script>(.*?)<!--
Doing PCRE compilation on <A HREF="(.*?)">here</A>
Captured http://www.azlyrics.com/lyrics/blindguardian/thecurseoffanor.html
Replacing <A HREF="(.*?)">here</A> in <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
Doing PCRE compilation on %artist%
Doing PCRE compilation on %title%
Doing PCRE compilation on <!-- start of lyrics -->(.*?)<!-- end of lyrics -->
Doing PCRE compilation on <A HREF="(.*?)">here</A>
Captured http://www.metrolyrics.com/the-curse-of-feanor-lyrics-blind-guardian.html
Replacing <A HREF="(.*?)">here</A> in <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
Doing PCRE compilation on <A HREF="(.*?)">here</A>
Captured http://www.metrolyrics.com/the-curse-of-feanor-lyrics-blind-guardian.html
Replacing <A HREF="(.*?)">here</A> in <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
Doing PCRE compilation on <A HREF="(.*?)">here</A>
Captured http://www.metrolyrics.com/the-curse-of-feanor-lyrics-blind-guardian.html
Replacing <A HREF="(.*?)">here</A> in <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
Doing PCRE compilation on %artist%
Doing PCRE compilation on %title%
Doing PCRE compilation on <div id="lyrics-body">(.*?)</div>
Doing PCRE compilation on <A HREF="(.*?)">here</A>
Captured https://www.justsomelyrics.com/574628/blind-guardian-the-curse-of-f%C3%ABanor-lyrics.html
Replacing <A HREF="(.*?)">here</A> in <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
Doing PCRE compilation on %artist%
Doing PCRE compilation on %title%
Doing PCRE compilation on <div class="core-left">(.*?)</div>
Doing PCRE compilation on <A HREF="(.*?)">here</A>
Captured http://www.metrolyrics.com/the-curse-of-feanor-lyrics-blind-guardian.html
Replacing <A HREF="(.*?)">here</A> in <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
Event triggered: LyricsLoaded

vimpc then just reports No lyrics were found.

Can others reproduce this?

playlist editing with cut/paste

a feature request:

we already get v for visual mode. but it seems to be not possible to cut and paste? cutting with 'd' works but i cannot paste. 'p' is already play, and 'P' does not work either.

adding paste capability would be handy to rearrange the list. personally i would gladly lose the 'p' binding for play and only have if i can use 'p' for paste.

also, should exit from visual mode by analogy to vim.

finally, moving songs around with , is nice but should work on visual selections as well, that would be also very useful.

Use bang (!) to force save playlist

If I :edit a playlist and then add some songs to it, I'd like to be able to :write it or :save it, but it gives an error that the playlist already exists. It would be nice to have a :save[!] and/or :write[!] option to override the existing playlist so you can add the songs. Hope you're well!

build trouble on os x 10.8, Xcode 5.0.1

i tried to build commit 501d815

with

./autogen.sh
 ./configure --prefix=$HOME --program-prefix=my --enable-taglib=no

this configures but make fails with

g++ -DHAVE_CONFIG_H -I. -I./src   -I/usr/local/include -I/opt/local/include -DHELP_DIRECTORY='"/Users/nbecker/share/doc/vimpc"'  -I/usr/local/Cellar/pcre/8.33/include     -D_THREAD_SAFE -pthread -g -O2 -D__STRICT_ANSI__ -std=c++11 -MT src/vimpc-buffers.o -MD -MP -MF src/.deps/vimpc-buffers.Tpo -c -o src/vimpc-buffers.o `test -f 'src/buffers.cpp' || echo './'`src/buffers.cpp
In file included from src/buffers.cpp:21:
In file included from ./src/buffers.hpp:24:
./src/buffer/buffer.hpp:66:20: error: no type named 'function' in namespace
      'std'
      typedef std::function<void (T)>         CallbackFunction;
              ~~~~~^
./src/buffer/buffer.hpp:66:28: error: expected member name or ';' after
      declaration specifiers
      typedef std::function<void (T)>         CallbackFunction;
      ~~~~~~~~~~~~~~~~~~~~~^
./src/buffer/buffer.hpp:67:27: error: use of undeclared identifier
      'CallbackFunction'
      typedef std::vector<CallbackFunction>   CallbackList;
                          ^
./src/buffer/buffer.hpp:154:60: error: no type named 'function' in namespace
      'std'
      void ForEach(uint32_t position, uint32_t count, std::function<voi...
                                                      ~~~~~^
./src/buffer/buffer.hpp:154:68: error: expected ')'
      void ForEach(uint32_t position, uint32_t count, std::function<void (T)> ...
                                                                   ^
./src/buffer/buffer.hpp:154:19: note: to match this '('
      void ForEach(uint32_t position, uint32_t count, std::function<voi...
                  ^
./src/buffer/buffer.hpp:208:51: error: unknown type name 'CallbackFunction'
      void AddCallback(BufferCallbackEvent event, CallbackFunction callback)
                                                  ^
./src/buffer/buffer.hpp:163:15: error: use of undeclared identifier 'callback'
            (*callback)(*it);
              ^
./src/buffer/buffer.hpp:238:65: error: use of undeclared identifier 'Get'
      std::string PrintString(uint32_t position) const { return Get(position); }
                                                                ^
./src/buffer/buffer.hpp:239:60: error: use of undeclared identifier 'Get'
      std::string String(uint32_t position) const { return Get(position); }
                                                           ^
In file included from src/buffers.cpp:22:
In file included from ./src/vimpc.hpp:26:
./src/clientstate.hpp:24:10: fatal error: 'thread' file not found
#include <thread>
         ^
10 errors generated.
make: *** [src/vimpc-buffers.o] Error 1

brew build fails on osx 10.5

==> ./configure --disable-debug --prefix=/usr/local/Cellar/vimpc/0.04
==> make install
/usr/bin/g++-4.2 -DHAVE_CONFIG_H -I. -I./src   -I/usr/local/include -DHELP_DIRECTORY='"/usr/local/Cellar/vimpc/0.04/share/doc/vimpc"' -I/usr/local/Cellar/pcre/8.20/include     -O3 -w -pipe -march=prescott -c -o src/vimpc-algorithm.o `test -f 'src/algorithm.cpp' || echo './'`src/algorithm.cpp
/usr/bin/g++-4.2 -DHAVE_CONFIG_H -I. -I./src   -I/usr/local/include -DHELP_DIRECTORY='"/usr/local/Cellar/vimpc/0.04/share/doc/vimpc"' -I/usr/local/Cellar/pcre/8.20/include     -O3 -w -pipe -march=prescott -c -o src/vimpc-buffers.o `test -f 'src/buffers.cpp' || echo './'`src/buffers.cpp
/usr/bin/g++-4.2 -DHAVE_CONFIG_H -I. -I./src   -I/usr/local/include -DHELP_DIRECTORY='"/usr/local/Cellar/vimpc/0.04/share/doc/vimpc"' -I/usr/local/Cellar/pcre/8.20/include     -O3 -w -pipe -march=prescott -c -o src/vimpc-main.o `test -f 'src/main.cpp' || echo './'`src/main.cpp
/usr/bin/g++-4.2 -DHAVE_CONFIG_H -I. -I./src   -I/usr/local/include -DHELP_DIRECTORY='"/usr/local/Cellar/vimpc/0.04/share/doc/vimpc"' -I/usr/local/Cellar/pcre/8.20/include     -O3 -w -pipe -march=prescott -c -o src/vimpc-mpdclient.o `test -f 'src/mpdclient.cpp' || echo './'`src/mpdclient.cpp
/usr/bin/g++-4.2 -DHAVE_CONFIG_H -I. -I./src   -I/usr/local/include -DHELP_DIRECTORY='"/usr/local/Cellar/vimpc/0.04/share/doc/vimpc"' -I/usr/local/Cellar/pcre/8.20/include     -O3 -w -pipe -march=prescott -c -o src/vimpc-output.o `test -f 'src/output.cpp' || echo './'`src/output.cpp
src/settings.hpp: In member function ‘bool Main::Settings::Get(std::string) const’:
src/settings.hpp:117: error: ‘const class std::map<std::string, Main::Setting<bool>*, std::less<std::string>, std::allocator<std::pair<const std::string, Main::Setting<bool>*> > >’ has no member named ‘at’
/usr/bin/g++-4.2 -DHAVE_CONFIG_H -I. -I./src   -I/usr/local/include -DHELP_DIRECTORY='"/usr/local/Cellar/vimpc/0.04/share/doc/vimpc"' -I/usr/local/Cellar/pcre/8.20/include     -O3 -w -pipe -march=prescott -c -o src/vimpc-player.o `test -f 'src/player.cpp' || echo './'`src/player.cpp
make: *** [src/vimpc-mpdclient.o] Error 1
make: *** Waiting for unfinished jobs....
src/settings.hpp: In member function ‘bool Main::Settings::Get(std::string) const’:
src/settings.hpp:117: error: ‘const class std::map<std::string, Main::Setting<bool>*, std::less<std::string>, std::allocator<std::pair<const std::string, Main::Setting<bool>*> > >’ has no member named ‘at’
make: *** [src/vimpc-player.o] Error 1
==> Exit Status: 2
http://github.com/mxcl/homebrew/blob/master/Library/Formula/vimpc.rb#L22
==> Environment
HOMEBREW_VERSION: 0.8.1
HEAD: 8a10e6f1a045922f56d4eb4efb390587e72c1232
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CELLAR: /usr/local/Cellar
Hardware: dual-core 32-bit core
OS X: 10.5.8
Kernel Architecture: i386
Ruby: 1.8.6-369
/usr/bin/ruby => /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
Xcode: 3.1.0
GCC-4.0: build 5465
GCC-4.2: build 5465
LLVM: N/A
Clang: N/A
MacPorts or Fink? false
X11 installed? true
==> Build Flags
CC: /usr/bin/gcc-4.2 => /usr/bin/gcc-4.0
CXX: /usr/bin/g++-4.2 => /usr/bin/g++-4.0
LD: /usr/bin/gcc-4.2 => /usr/bin/gcc-4.0
CFLAGS: -O3 -w -pipe -march=prescott
CXXFLAGS: -O3 -w -pipe -march=prescott
MAKEFLAGS: -j2

track info tab

this is a feature request for a track info window which displays all tags and maybe bit rate for the focused song

even better would be a full tag editor taking advantage of vim (maybe calling out to vim?), but that seems even more work...

Autocomplete on playlists

Let me just restate that the only reason I raise "issues" is because I'm hooked on vimpc. It has simplified my life so much.

vimpc >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> SongBird >>>>>>>>>>>>>> iTunes.

So thank you thank you for all the work you've done and even more thank yous for listening to many of my ideas and suggestions. That being said, a minor but nice improvement would be autocompletion on playlists. I often have a lot of playlists saved and I have either named them descriptive but length names or I forgot exactly what I named them. Being able to do

:load <Tab>

would be really useful, even if it only worked after typing a character or two.

Can't connect to MPD 0.18

I can't connect to MPD using vimpc. Mpc and ncmpcpp can connect without any problem.

Some info:

  • up to date Arch Linux 64-bit
  • mpd 0.18.5-1
  • libmpdclient 2.9-1
  • vimpc rev:478d15b896
  • MPD_PORT=6600
  • MPD_HOST=localhost
  • Error Message: E2: MPD Error: Connection closed by the server

just after launch:
2013-12-07-162442_1920x1200_scrot

debug-console (screenshot, because i can't find logs):
2013-12-07-161216_1920x1200_scrot
I just launched vimpc, opened debug-console and ran connect localhost 6600

Error message from mpd.log:
Dec 07 16:46 : buffered_socket: error on client 18: Output buffer is full

`map ; :` and esc to exit command mode

First of all let me thank you for an absolutely wonderful mpd client.
It's been forever since I've started using mpd and I've haven't found a single client I'm completely happy with until vimpc. Which is almost perfect.
I only wish I could help out, unfortunately I'd have to learn cpp for that so perhaps later.

Right now I have a few feature requests

  • the mapping map ; : doesn't work.
  • pressing esc to instantly exit command mode
  • make it possible to set both fg and bg, eg: hi current blackfg greenbg

Thanks again for an absolutely amazing product.

Support the XDG Base Directory specification

Instead of writing dotfiles to the home directory, configuration, cache files and data files (if any) should be written in locations according to the XDG Base Directory specification. This is to prevent clutter in the home directory.

The gist of it is:

  • Place config files inside a directory under $XDG_CONFIG_HOME (defaults to ~/.config, if not set)
  • Place data files inside a directory under $XDG_DATA_HOME (defaults to ~/.local/share, if not set)
  • Place cache files inside a directory under $XDG_CACHE_HOME (defaults to ~/.cache, if not set)

So, for instance, the configuration file could be placed in $XDG_CONFIG_HOME/vimpc/vimpcrc. There are some additional things for applications that need system-wide configuration files and such, but I don't think this applies to vimpc.

scripting capability

Are there any plans to add scripting capabilities? For example via embed python or similar?

A rough example of what I mean being something like a rudimentary lyrics fetcher

alias lyrics python GetLyrics()

python << EOF
def GetLyrics():
    import vimpc, lyrics
    song = vimpc.get_playing()
    tab = vimpc.open_new_tab()
    tab.name = 'Lyrics - ' + song.name
    tab.data = lyrics.fetch(song.name)
EOF

...or something like that. Would be a pretty hefty addition though, so your call of course.

No package 'libcurl' found after issuing ./configure

Trying to run on Ubuntu 16.04, after installing the dependencies:

$ ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking for svnversion... no
checking for git... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for the pthreads library -lpthreads... no
checking whether pthreads work without any flags... no
checking whether pthreads work with -Kthread... no
checking whether pthreads work with -kthread... no
checking for the pthreads library -llthread... no
checking whether pthreads work with -pthread... yes
checking for joinable pthread attribute... PTHREAD_CREATE_JOINABLE
checking if more special flags are required for pthreads... no
checking for PTHREAD_PRIO_INHERIT... yes
checking whether g++ supports C++11 features by default... no
checking whether g++ supports C++11 features with -std=c++11... yes
checking whether to enable boost automatically... no
checking whether compiler supports lambda functions... yes
checking for working ncursesw... yes
checking ncursesw/curses.h usability... yes
checking ncursesw/curses.h presence... yes
checking for ncursesw/curses.h... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for pcre... yes
checking pcre.h usability... yes
checking pcre.h presence... yes
checking for pcre.h... yes
checking for curl... no
configure: error: Package requirements (libcurl) were not met:

No package 'libcurl' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables curl_CFLAGS
and curl_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Please let me know which package to install to resolve this error.

Add songs to a given playlist

Currently the only way to add songs to a playlist which isn't loaded is the command toplaylist. But this command creates a new playlist. Would it be possible to add a command allowing the user to append some songs to an existing playlist?

I'm not sure to be clear enough, since my english can be a little messy...

Actually, I use playlists as a rating system from 1 to 5 stars, and I would like to be able, when I'm listening to a music, to add this one to one of the previous playlist without having to load the latter, and save it. I didn't find yet a way to do it.

Default marks should be a-z or a-z&A-Z

I think it would be convenient to have the default marks available with the small letters, so I don't have to press shift every time I want to jump to a letter.

We could either keep the old big marks or switch to just the lowercase variants (I don't really see any benefit in having the uppercase variants).

can't build on linux mint debian edition (jessie)

first, i installed the dependencies listed on github; this wasn't quite enough, i also had to install automake and some libcurl debug package for ./configure to run successfully. i then use

./autogen.sh
./configure --prefix=$HOME --disable-boost --disable-lyrics

however, make fails with this message

src/lyricsfetcher.cpp:23:46: fatal error: boost/algorithm/string/replace.hpp: No such file or directory    
 #include <boost/algorithm/string/replace.hpp>
compilation terminated.
Makefile:882: recipe for target 'src/vimpc-lyricsfetcher.o' failed

which looks like the options are not working?

Songs over HTTP not parsed for metadata

Is vimpc supposed to parse m3u tags?

Here's what I have when loading a playlist

image

edit: I use extended m3u tags, in ncmpcpp they're parsed without any problem.

disc numbers

the library browser has problems displaying multi-disc releases properly. i.e. the artist/albumartist and the album are the same but there are multiple discs in the release indicated by a disc tag in the metadata. what happens now is that the discs get pooled and one gets a sub-list of the form

1 - [track1 on disc 1]
1 - [track1 on disc 2]
...
2 - [track2 on disc 1]
2 - [track2 on disc 2]
...

instead of properly grouping by disc. (ncmpcpp does it right for example)

it seems this tag is not supported at all in vimpc? it's not displayed in the track info window.

Remembering search position in directory view

Would it be possible to remember the position in the directory mode?
Ex.
The list looks like:

A
B
C

The user navigates to 'B' and enters the directory. Then, after pressing left the user is back to the root list but instead of being on the top of the list, the highlight is maintained on the 'B' entry?

Thank you for the great program!

Default sort option does not behave well with track numbers in "browse" window

Hi,

First thanks for this great program, I love it.

I have the following in my rc file: (note that the formats are identical)

set songformat {%a - %b - %n.%t}|{%f}$E$R $H[$H%l$H]$H
set libraryformat {%a - %b - %n.%t}|{%f}$E$R $H[$H%l$H]$H

Then what happens is that in my "browse" window, tracks that are numbered 1, 2, ..., 9, 10, 11, appear like so:

Artist - Album - 1.First track
Artist - Album - 10.Tenth track
Artist - Album - 11.Eleventh track
Artist - Album - 2.Second track
.
.
.
Artist - Album - 9.Ninth track

However if I set

set sort library

Then the tracks appear in the right order:

Artist - Album - 1.First track
Artist - Album - 2.Second track
.
.
.
Artist - Album - 9.Ninth track
Artist - Album - 10.Tenth track
Artist - Album - 11.Eleventh track

I thought the default is that sort is set to "format", which is exactly the same as with the libraryformat in my rc. So, wouldn't it be the expected behaviour that the default should result the tracks to show as in the second case?

Thanks.

Formatting albums in library

As I understand it, we can currently change the formatting of track strings in the library. Unfortunately, I can't find an option to change formatting of album strings.

I'd really like to be able to display the album's year first, sorting by it. For example:

Album Artist
  2014 - Album Title
    <Tracks>

An option to toggle the year would suffice, but it seems to me that implementing album (and maybe artist) string formatting would be considerably more powerful.

Any chance of either?

Cuesheets/embedded cuesheets for FLAC files

Hi,

I have some albums as whole FLAC files with embedded cuesheets. GMPC or ncmcpp for example, display single tracks just fine. Vimpc, however, shows only the filename for each number track of an album. E.g.:

Album - Title.flac
Album - Title.flac
...

Can we get proper cuesheet/flac support please?
Many thanks in advance!

[Edit] If you need an example, I'd happily create a small file (<1.0MB) for you to try out.

Tag for version 0.90.1

On Sourceforge is a version 0.90.1 of vimpc available. It would be nice if you could tag that version as well on Github.

vimpc instantly crashing when mpd playing online radio

When mpd playing online radio stream (added with mpc), vimpc instantly crash, saying

 terminate called after throwing an instance of 'std::logic_error'
 what (): basic_string::_S_construct null not valid
 [1] 22475 abort (core dumped) vimpc

I am using stable archlinux and vimpc-git.
This behavior was not present, when I was using vimpc 0.08.1-1 .
I can provide some additional info, if you guide me.

mouse on os x

i :set mouse but clicking the tabs does nothing. is this expected to work on os x Terminal.app?

directory view: Put the previous page location in a stack

My music collection is stored in multiple nested directories. For example:

mp3s/artist/album/*.mp3
mp3s/classical/composer/album/*.mp3
mp3s/singles/artist/*.mp3

When I'm navigating into the directory view of the top-level "mp3s" folder, I make my selection to go to the sub directories. When I go back, it goes back to the top of the previous page, except within the mp3s folder.

Sounds like there should be a stack (LIFO) implementation to track previous pages.

Also, for a long time I thought it didn't even work in the top level folder because I was conditioned to use the ".." to go back to the parent directory, and that goes to the top of the parent directory list. I'll understand if you want to keep it this way but it confused me to see that commit comment "Remember top level directory when browsing directory mode" and it never worked for me because I was selecting "..".

I can take a stab at a patch myself but it's been so long since I worked with C++ code I'm not sure how well I can do it.

MPD Error on every connect (fixed by :reconnect)

Almost every time I start vimpc, the status bar says "E2: MPD Error: error". A workaround is running :reconnect (which I have bound to CTRL+R by now).

It would be nice to not need to do that 😉

segfault

After building vimpc fresh from git, I get a segfault when running it:

10940: vimpc - segfault at c ip b7815d17 sp bf9dbc2c error 4 in libmpdclient.so.2.0.1[b780a000+e000]

How can I provide more details?

[Feature Request] Library listing

When I am in the library tab, everything is listed by Artist. When I expand an artist, I can see a list of albums. This list is alphabetical and I really like to see my albums by year instead of by name.

Is there something like that in the configuration or is it something that should/could be implemented ?

Random Modifier

Thought of this while contemplating #3

It would be nice to have a modifier the selects a random set, ie:

in browse view 15za would add 15 random tracks to the playlist, and in library view some degree of contextual awareness, ie 3za with a given artist under the cursor would add 3 random tracks by that artist.

z is just a random character I chose that I don't believe is in use, but I'm open to suggestion. Any objections to implementing this?

scrolling of long song formats

it would be nice to be able to see the full formatted song name in the statusline, by auto-scrolling sideways. now it seems the only way to see long names is using a format that skips stuff in the middle, or using 'e' to get detailed song info, yes?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.