boysetsfrog / vimpc Goto Github PK
View Code? Open in Web Editor NEWOfficial 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
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
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?
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.
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).
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.
i can map it of course but this one seems rather standard in vim?
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!
I tried to to do <count>h
expecting the current music to be backward to start by giving a huge value like say 500 when the music when is not that long, I notice that the keyboard freezes s expected for example pause won't happen etc. Can anyone help me with this issue? I really like the idea of vimpc.
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!
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.
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.
Trying to use :addall
results in the error "E2: MPD Error" incorrect arguments".
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 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 '
Doing PCRE compilation on &
Doing PCRE compilation on "
Doing PCRE compilation on
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?
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.
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!
I want to be able to map <C-h>
to tabprevious
but I don't appear to be able to with version 0.90.1.
It would be nice if :write
/:save
omitting an argument would save/write the last playlist you loaded/edited.
Does this seem feasible?
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
==> ./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
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...
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.
I can't connect to MPD using vimpc. Mpc and ncmpcpp can connect without any problem.
Some info:
E2: MPD Error: Connection closed by the server
debug-console (screenshot, because i can't find logs):
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
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
map ; :
doesn't work.esc
to instantly exit command modehi current blackfg greenbg
Thanks again for an absolutely amazing product.
It seems vimpc does not escape the "$" character for tags. Instead those are completely stripped out.
$wingin' Utter$
becomes ingin' Utter-
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:
$XDG_CONFIG_HOME
(defaults to ~/.config
, if not set)$XDG_DATA_HOME
(defaults to ~/.local/share
, if not set)$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.
I've tested this on the Library, Browse, and Playlist tabs:
Use /
to bring up the search prompt. Type Enter
to cancel out. The selected song will move down one.
If you do the same with ?
for reverse search, the selected song moves up one.
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.
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.
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.
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).
Reminder.
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?
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.
:write / :save playlistname
it's single shot action. After that is there a way to do a :write! playlistname to overwrite current playlist?
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!
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.
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?
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.
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.
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.
there is a cursor marker displayed which makes the progress bar less pretty.
again, Terminal.app only, not xterm
(nitpicking, i know)
i :set mouse but clicking the tabs does nothing. is this expected to work on os x Terminal.app?
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.
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 😉
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?
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 ?
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?
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?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.