ryanflannery / vitunes Goto Github PK
View Code? Open in Web Editor NEWA curses media indexer and player for vi users
Home Page: http://www.vitunes.org
License: Other
A curses media indexer and player for vi users
Home Page: http://www.vitunes.org
License: Other
As the subject says, for some reason the configure
script seems to be missing from the tarball linked from the big green button on the project homepage. When I cloned down from GitHub the script was present and it built just fine, but it was definitely not in the other archive.
I have not checked to see if the tarball is otherwise up-to-date.
Most of the vitunes modules (file.h+file.c) export all functions in the .c file. The naming conventions keep the namespace clean, but I'd like to audit the code and eliminate as many global functions as possible.
With the newer keybinding+command handling design, this is now much more feasible (they were getting called willy-nilly before).
Many *nix users find the name of the e-command "rmfile" an abortion of the *nix way.
In retrospect, they are right... I really should have just named it "rm".
Create an alias for "rmfile" named "rm" to rectify it and maintain backwards compatibility.
First off, thanks for vitunes! I'm still using it daily and it's great. I notice the configure
script is still missing from the tarball on the website even though there has been development since I submitted that bug report in 2015, but I guess it's not the end of the world when I can download the source from github.
However, the build didn't work at all out of the box this time. I'm not sure if the issue is my configuration in my clean install or the code, but there were two issues which to my recollection didn't happen last time I installed:
src/compat/compat.c
, there are several #includes behind #ifdefs that contain compat/whateverfile.c
, but the compat/
shouldn't be there, as this file is already in the compat/
directory. I assume the structure was changed around a little bit and this was overlooked because those conditional branches were never hit on the development systems.src/Makefile
, the vitunes
target is incorrect. It reads $(CC) -o $@ $(LDFLAGS) $(LIBS) $(OBJS) $(ODEPS)
, but it needs to be $(CC) -o $@ $(LDFLAGS) $(OBJS) $(ODEPS) $(LIBS)
(with $(LIBS)
at the end). If you try to link ncurses
before the objects that use ncurses are specified, the compiler doesn't see any ncurses functions that actually need to be accessible, so it doesn't link in the code and the build fails (see here). I'm using the standard gcc in Linux Mint 18.3:$ cc --version
cc (Ubuntu 5.4.0-6ubuntu1~16.04.6) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Once I made these edits, the build completed normally and vitunes runs fine.
In case you need it to figure out the conditions under which these issues occurred, here's my config.mk
:
# This file was generated by the 'configure.sh' script on 2018-02-17 at 19:57:03.
# Its contents should probably not be modified directly (if they should,
# please contact the vitunes developers and let them know why).
#
# Generated on: 2018-02-17 at 19:57:03
# Run on OS: Linux Emily 4.10.0-38-generic #42~16.04.1-Ubuntu SMP Tue Oct 10 16:32:20 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
# Install Locations
PREFIX?=/usr
BINDIR?=/usr/bin
MANDIR?=/usr/man/man1
# TagLib - These MUST be filled in for vitunes to compile!
# taglib-config found. Using to determine CFLAGS and LDFLAGS
TAGLIB_CFLAGS=`taglib-config --cflags`
TAGLIB_LIBS=`taglib-config --libs` -ltag_c
# gstreamer - Fill these in only if you want gstreamer support
# configure.sh output ending
I've thought quite a bit about this, and it's easy enough to add. It's simply not high on my priority list.
When viewing information about a given file (via the 'm' keybinding), the window is painted statically and doesn't scroll. In small windows this has the obvious problem of missing content.
Update should include support for comment with:
Note: Yes, I've already completed this but I wanted to see how issues are handled here.
I've compiled TagLib from source on my Debian Squeeze Linux 3.8 amd64. I can see the files /usr/include/taglib. However, I can't go through configure.sh cleanly. It fails to detect taglib. When looking into the script I tried running 'pkg-config --exists taglib' to diagnose the issue. It doesn't return anything. I guess I could move on with using '-C /usr/include/taglib' when running make but it yields make: No rule to make target `install'. Stop.. If I understand correctly, I need a makefile to be generated from configure.sh but I can't as it fails as described above. Where did I make a mistake?
(I also tried adding tag_c.hh directly into the vitunes source folder and editing the headers, then however I get a lot ecmd_tag.c:(.text+0x482): undefined reference to `taglib_set_strings_unicode' etc. Which leads me to believe that this approach won't get me very far.)
Thank you
I'm using them more frequently and vim, and miss them in vitunes. Should be a relatively easy add.
It would be nice to have a command to get information on the currently playing track outside of the running instance of vitunes.
When no *.playlist file is found in the playlist directory, vitunes fails with
vitunes: failed to glob playlists directory: Connection refused
stemming from retrieve_playlist_filenames(...)
in playlists.c
, lines 355-356. An immediate exit seems not to be necessary, as there appears to be no side-effect in case retrieve_playlist_filenames(...)
returns a zero filecount.
No patch or pull-request added, as I'm not 100% sure what the most elegant fix would be (except for a direct return with fcount = 0
).
The Makefile.linux doesn't work on linux, there is no real support for subfolders.
Here is a diff of my changes to the file in order to build vitunes: http://pastie.org/1690554
Probably a bit hacky and you should reconsider the tree of the buildsystem, that is why I supply just a diff and no pull request. ;)
Many media files have their meta-info encoded in UTF-8. Now that OpenBSD has rudimentary UTF-8 support in base, add this to vitunes.
I used
This results in a crash and terminal corruption in rxvt-unicode.
I never get the actual interface just a line and a half of solid grey.
Edit: Happens in xterm as well.
Edit: I looked at an strace and noticed it looking for mplayer and didn't see any crash. I have mplayer2 so I made a soft link to mplayer and its now working.
Edit: If I pipe away the grey output I actually see a message about mplayer.
Since OpenBSD supports 256 colors in base now, add support for this.
I get numerous errors (looks like a problem with ncurses?) when attempting to build on Ubuntu 12.10 (64-bit) with the linux branch of vitunes.
cc -o vitunes -lm -lncursesw -lutil `taglib-config --libs` -ltag_c commands.o compat.o e_commands.o keybindings.o medialib.o meta_info.o mplayer.o paint.o player.o player_utils.o playlist.o socket.o str2argv.o uinterface.o vitunes.o
commands.o: In function `cmd_color':
commands.c:(.text+0x1186): undefined reference to `init_pair'
commands.o: In function `cmd_set':
commands.c:(.text+0x12bf): undefined reference to `stdscr'
commands.c:(.text+0x12cb): undefined reference to `stdscr'
commands.o: In function `user_getstr':
commands.c:(.text+0x1e53): undefined reference to `werase'
commands.c:(.text+0x1e7d): undefined reference to `mvwprintw'
commands.c:(.text+0x1e87): undefined reference to `curs_set'
commands.c:(.text+0x1ea9): undefined reference to `wmove'
commands.c:(.text+0x1eb8): undefined reference to `wrefresh'
commands.c:(.text+0x1f1b): undefined reference to `curs_set'
commands.c:(.text+0x1f2f): undefined reference to `curs_set'
commands.c:(.text+0x1f58): undefined reference to `wmove'
commands.c:(.text+0x1f67): undefined reference to `wrefresh'
commands.c:(.text+0x1fe5): undefined reference to `beep'
commands.c:(.text+0x2016): undefined reference to `wmove'
commands.c:(.text+0x202f): undefined reference to `waddch'
commands.c:(.text+0x205b): undefined reference to `wmove'
....
Note that I get the same compilation errors with the master branch.
Here is a listing of curses packages I have installed (with a grep of curses):
$ dpkg -l | grep curses
ii canto 0.7.10-4 amd64 flexible ncurses Atom/RSS newsreader for the console
ii lib32ncurses5 5.9-10ubuntu1 amd64 shared libraries for terminal handling (32-bit)
rc lib32ncursesw5 5.9-4 amd64 shared libraries for terminal handling (wide character support) (32-bit)
ii libncurses5:amd64 5.9-10ubuntu1 amd64 shared libraries for terminal handling
ii libncurses5:i386 5.9-10ubuntu1 i386 shared libraries for terminal handling
ii libncurses5-dev 5.9-10ubuntu1 amd64 developer's libraries for ncurses
ii libncursesw5:amd64 5.9-10ubuntu1 amd64 shared libraries for terminal handling (wide character support)
ii libncursesw5-dev 5.9-10ubuntu1 amd64 developer's libraries for ncursesw
ii moc 1:2.5.0~alpha4+svn20120224-1ubuntu1 amd64 ncurses based console audio player
ii mtr-tiny 0.82-3ubuntu1 amd64 Full screen ncurses traceroute tool
ii ncurses-base 5.9-10ubuntu1 all basic terminal type definitions
ii ncurses-bin 5.9-10ubuntu1 amd64 terminal-related programs and man pages
ii ncurses-term 5.9-10ubuntu1 all additional terminal type definitions
ii ninvaders 0.1.1-3 amd64 A space invaders-like game using ncurses
ii python-urwid 1.0.1-2 amd64 curses-based UI/widget library for Python
ii ranger 1.5.4-1 all File manager with an ncurses frontend written in Python
ii rtorrent 0.9.2-1 amd64 ncurses BitTorrent client based on LibTorrent from rakshasa
ii vifm 0.4-1ubuntu3 amd64 a ncurses based file manager with vi like keybindings
ii weechat-curses 0.3.8-1 amd64 Fast, light and extensible chat client - console client
Is there a specific dependency I need to install that would clear this up? Any help would be appreciated.
:map is easy.
:command will take a while.
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.