Giter Club home page Giter Club logo

ncxmms2's Introduction

ncxmms2

Build Status

About

ncxmms2 is an ncurses xmms2 client. This project is inspired by ncmpcpp and aimed to have similiar look and feel.

Status

The project is still under development but already in pretty usable state. Currently supported features:

  • Base features:

    • Display playback status
    • Playback control
  • Screens:

  • Help

  • Active playlist

  • Local file system browser

  • Server side browser

  • Medialib browser

  • Playlists browser

  • Equalizer

Key bindings

Screens switching:

  • 1 - Help
  • 2 - Active playlist
  • 3 - Local file system browser
  • 4 - Server side browser
  • 5 - Medialib browser
  • 6 - Playlists browser
  • 7 - Equalizer

Playback control:

  • P - Toggle
  • s - Stop
  • > - Next
  • < - Prev
  • f - Seek forward
  • b - Seek backward

List view:

  • up arrow - Move cursor up
  • down arrow - Move cursor down
  • Page Up - Move cursor up by half page
  • Page Down - Move cursor down by half page
  • Home - Move cursor to the first item
  • End - Move cursor to the last item
  • insert - Toggle selection
  • * - Invert selection
  • + - Select items by regular expression
  • \ - Unselect items by regular expression
  • . - Jump to next selected item
  • , - Jump to previous selected item

Playlists browser:

  • n - Create new playlist
  • Delete - Remove playlist
  • r - Rename playlist
  • o - Go to currently active playlist

Playlist view:

  • c - Clear playlist
  • S - Shuffle playlist
  • o - Go to currently playing song
  • m - Move selected songs
  • Ctrl + O - Add file / directory
  • Ctrl + U - Add url
  • i - Show song info

File system browser:

  • space - Add file or directory to active playlist
  • enter - Play file in active playlist
  • left arrow - Go up
  • g - Change directory
  • R - Reload directory
  • i - Show song info
  • 
    

Medialib browser:

  • R - Refresh
  • space - Add artist / album / song to active playlist
  • enter - Play artist / album / song in active playlist
  • i - Show song info

Settings

For customization see ncxmms2.conf and ncxmms2.colors.

ncxmms2's People

Contributors

ccrtnsp avatar pkunavin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

ncxmms2's Issues

Build Fails with Boost >= 1.50.0

It appears that ncxmms2 does not build withBoost >= 1.50.0. I've tested this with 1.50.0, 1.52.0, and 1.53.0 on an Arch Linux ARM box; all fail at the same point with the same error:

-- The C compiler identification is GNU 4.7.2
-- The CXX compiler identification is GNU 4.7.2
-- Check for working C compiler: /usr/lib/colorgcc/bin/cc
-- Check for working C compiler: /usr/lib/colorgcc/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/lib/colorgcc/bin/c++
-- Check for working CXX compiler: /usr/lib/colorgcc/bin/c++ -- works
-- checking for module 'ncursesw'
--   found ncursesw, version 5.9.20110404
-- checking for module 'glib-2.0'
--   found glib-2.0, version 2.36.3
-- Boost version: 1.50.0
-- checking for module 'xmms2-client-cpp'
--   found xmms2-client-cpp, version 0.8;DrO_o;(git;commit:;Unknown)
-- checking for module 'xmms2-client-cpp-glib'
--   found xmms2-client-cpp-glib, version 0.8;DrO_o;(git;commit:;Unknown)
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/ncxmms2
Scanning dependencies of target libtermkey
[  2%] Building C object 3rdparty/libtermkey/CMakeFiles/libtermkey.dir/driver-csi.c.o
[  4%] Building C object 3rdparty/libtermkey/CMakeFiles/libtermkey.dir/driver-ti.c.o
[  6%] Building C object 3rdparty/libtermkey/CMakeFiles/libtermkey.dir/termkey.c.o
Linking C static library liblibtermkey.a
[  6%] Built target libtermkey
Scanning dependencies of target ncxmms2-lib
[  8%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/application.cpp.o
[ 10%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/object.cpp.o
[ 12%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/window.cpp.o
[ 14%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/stackedwindow.cpp.o
[ 16%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/timer.cpp.o
[ 18%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/painter.cpp.o
[ 20%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/keyevent.cpp.o
[ 22%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/label.cpp.o
[ 24%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/lineedit.cpp.o
[ 26%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/listmodel.cpp.o
[ 28%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/listview.cpp.o
[ 30%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/listmodelitemdelegate.cpp.o
[ 32%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/utf.cpp.o
[ 34%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/textview.cpp.o
[ 36%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/iniparser.cpp.o
[ 38%] Building CXX object src/lib/CMakeFiles/ncxmms2-lib.dir/palette.cpp.o
Linking CXX static library libncxmms2-lib.a
[ 38%] Built target ncxmms2-lib
Scanning dependencies of target ncxmms2
[ 40%] Building CXX object src/CMakeFiles/ncxmms2.dir/main.cpp.o
[ 42%] Building CXX object src/CMakeFiles/ncxmms2.dir/utils.cpp.o
[ 44%] Building CXX object src/CMakeFiles/ncxmms2.dir/xmmsutils.cpp.o
[ 46%] Building CXX object src/CMakeFiles/ncxmms2.dir/settings.cpp.o
[ 48%] Building CXX object src/CMakeFiles/ncxmms2.dir/commandlineoptions.cpp.o
[ 51%] Building CXX object src/CMakeFiles/ncxmms2.dir/song.cpp.o
[ 53%] Building CXX object src/CMakeFiles/ncxmms2.dir/songdisplayformatparser.cpp.o
In file included from /tmp/ncxmms2/src/songdisplayformatparser.h:24:0,
                 from /tmp/ncxmms2/src/songdisplayformatparser.cpp:22:
/tmp/ncxmms2/src/utils.h: In instantiation of ‘ncxmms2::Utils::FormatImpl::BoostFormatWrapper::BoostFormatWrapper(T&&) [with T = ncxmms2::SongDisplayFormatParser::ParsingError]’:
/tmp/ncxmms2/src/utils.h:80:106:   required from ‘std::string ncxmms2::Utils::format(T&&, Args&& ...) [with T = ncxmms2::SongDisplayFormatParser::ParsingError; Args = {}; std::string = std::basic_string<char>]’                                                                                           /tmp/ncxmms2/src/songdisplayformatparser.h:353:69:   required from ‘ncxmms2::SongDisplayFormatParser::ParsingError::ParsingError(Args&& ...) [with Args = {ncxmms2::SongDisplayFormatParser::ParsingError}]’                                                                                                 /tmp/ncxmms2/src/songdisplayformatparser.cpp:39:66:   required from here
/tmp/ncxmms2/src/utils.h:60:38: error: no matching function for call to ‘boost::basic_format<char>::basic_format(ncxmms2::SongDisplayFormatParser::ParsingError)’                          /tmp/ncxmms2/src/utils.h:60:38: note: candidates are:
In file included from /usr/include/boost/format.hpp:47:0,
                 from /tmp/ncxmms2/src/utils.h:22,                                        from /tmp/ncxmms2/src/songdisplayformatparser.h:24,
                 from /tmp/ncxmms2/src/songdisplayformatparser.cpp:22:
/usr/include/boost/format/format_implementation.hpp:46:5: note: boost::basic_format<Ch, Tr, Alloc>::basic_format(const string_type&, const std::locale&) [with Ch = char; Tr = std::char_traits<char>; Alloc = std::allocator<char>; boost::basic_format<Ch, Tr, Alloc>::string_type = std::basic_string<char>]
/usr/include/boost/format/format_implementation.hpp:46:5: note:   candidate expects 2 arguments, 1 provided
/usr/include/boost/format/format_implementation.hpp:38:5: note: boost::basic_format<Ch, Tr, Alloc>::basic_format(const Ch*, const std::locale&) [with Ch = char; Tr = std::char_traits<char>; Alloc = std::allocator<char>]         /usr/include/boost/format/format_implementation.hpp:38:5: note:   candidate expects 2 arguments, 1 provided
/usr/include/boost/format/format_implementation.hpp:68:5: note: boost::basic_format<Ch, Tr, Alloc>::basic_format(const boost::basic_format<Ch, Tr, Alloc>&) [with Ch = char; Tr = std::char_traits<char>; Alloc = std::allocator<char>; boost::basic_format<Ch, Tr, Alloc> = boost::basic_format<char>]
/usr/include/boost/format/format_implementation.hpp:68:5: note:   no known conversion for argument 1 from ‘ncxmms2::SongDisplayFormatParser::ParsingError’ to ‘const boost::basic_format<char>&’                                    /usr/include/boost/format/format_implementation.hpp:60:5: note: boost::basic_format<Ch, Tr, Alloc>::basic_format(const string_type&) [with Ch = char; Tr = std::char_traits<char>; Alloc = std::allocator<char>; boost::basic_format<Ch, Tr, Alloc>::string_type = std::basic_string<char>]                                                           /usr/include/boost/format/format_implementation.hpp:60:5: note:   no known conversion for argument 1 from ‘ncxmms2::SongDisplayFormatParser::ParsingError’ to ‘const string_type& {aka const std::basic_string<char>&}’             /usr/include/boost/format/format_implementation.hpp:28:5: note: boost::basic_format<Ch, Tr, Alloc>::basic_format(const Ch*) [with Ch = char; Tr = std::char_traits<char>; Alloc = std::allocator<char>]
/usr/include/boost/format/format_implementation.hpp:28:5: note:   no known conversion for argument 1 from ‘ncxmms2::SongDisplayFormatParser::ParsingError’ to ‘const char*’
make[2]: *** [src/CMakeFiles/ncxmms2.dir/songdisplayformatparser.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/ncxmms2.dir/all] Error 2
make: *** [all] Error 2

The above is from a build attempted with Boost 1.50.0, but later versions do not appear to produce substantially different errors (all error out at the same place, and all note that "candidate expects 2 arguments, 1 provided"). I'm assuming that the build should work with Boost 1.49.0 but am unable to test, as I cannot get that version of boost to build on my architecture (armv7h).

Not really a C++ kinda guy, but I'm willing to test out potential patches, etc.

Add support terminal's default fore- and background color

By default ncxmms2 uses black for its background color. This looks very ugly if one usually uses a brighter background color in the terminal.

Therefore it would be nice if support for the terminal's default fore- and background would be added. I think these should be configurable colors in ncxmms2.colors and maybe even be used in the default color scheme.

Until ncxmms2 gets a less offensive background color I have to use ncxmms2 -n. 😃

Can't build on openSUSE-12.3: package 'ncursesw' not found

There is output from cmake:

$ cmake ..
-- The C compiler identification is GNU 4.7.2
-- The CXX compiler identification is GNU 4.7.2
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Boost version: 1.49.0
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1") 
-- checking for module 'ncursesw'
--   package 'ncursesw' not found
CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake:279 (message):
  A required package was not found
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPkgConfig.cmake:333 (_pkg_check_modules_internal)
  src/lib/CMakeLists.txt:55 (pkg_check_modules)


-- checking for module 'glib-2.0'
--   found glib-2.0, version 2.34.3
-- Boost version: 1.49.0
-- checking for module 'xmms2-client-cpp'
--   found xmms2-client-cpp, version 0.8
-- checking for module 'xmms2-client-cpp-glib'
--   found xmms2-client-cpp-glib, version 0.8
-- checking for module 'ncursesw'
--   package 'ncursesw' not found
CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake:279 (message):
  A required package was not found
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPkgConfig.cmake:333 (_pkg_check_modules_internal)
  3rdparty/libtermkey/CMakeLists.txt:17 (pkg_check_modules)


-- Configuring incomplete, errors occurred!

Though package ncurses-devel was installed and it contains ncursesw headers:

$ rpm -ql ncurses-devel | grep ncursesw
/usr/bin/ncursesw5-config
/usr/bin/ncursesw6-config
/usr/include/ncurses6/ncursesw
/usr/include/ncurses6/ncursesw/curses.h
/usr/include/ncurses6/ncursesw/cursesapp.h
/usr/include/ncurses6/ncursesw/cursesf.h
/usr/include/ncurses6/ncursesw/cursesm.h
/usr/include/ncurses6/ncursesw/cursesp.h
/usr/include/ncurses6/ncursesw/cursesw.h
/usr/include/ncurses6/ncursesw/cursslk.h
/usr/include/ncurses6/ncursesw/eti.h
/usr/include/ncurses6/ncursesw/etip.h
/usr/include/ncurses6/ncursesw/form.h
/usr/include/ncurses6/ncursesw/menu.h
/usr/include/ncurses6/ncursesw/nc_tparm.h
/usr/include/ncurses6/ncursesw/ncurses.h
/usr/include/ncurses6/ncursesw/ncurses_dll.h
/usr/include/ncurses6/ncursesw/panel.h
/usr/include/ncurses6/ncursesw/term.h
/usr/include/ncurses6/ncursesw/term_entry.h
/usr/include/ncurses6/ncursesw/termcap.h
/usr/include/ncurses6/ncursesw/tic.h
/usr/include/ncurses6/ncursesw/unctrl.h
/usr/include/ncursesw
/usr/include/ncursesw/curses.h
/usr/include/ncursesw/cursesapp.h
/usr/include/ncursesw/cursesf.h
/usr/include/ncursesw/cursesm.h
/usr/include/ncursesw/cursesp.h
/usr/include/ncursesw/cursesw.h
/usr/include/ncursesw/cursslk.h
/usr/include/ncursesw/eti.h
/usr/include/ncursesw/etip.h
/usr/include/ncursesw/form.h
/usr/include/ncursesw/menu.h
/usr/include/ncursesw/nc_tparm.h
/usr/include/ncursesw/ncurses.h
/usr/include/ncursesw/ncurses_dll.h
/usr/include/ncursesw/panel.h
/usr/include/ncursesw/term.h
/usr/include/ncursesw/term_entry.h
/usr/include/ncursesw/termcap.h
/usr/include/ncursesw/tic.h
/usr/include/ncursesw/unctrl.h
/usr/lib64/libncursesw.a
/usr/lib64/libncursesw.so
/usr/lib64/ncurses6/libncursesw.a
/usr/lib64/ncurses6/libncursesw.so
/usr/share/man/man1/ncursesw5-config.1.gz
/usr/share/man/man1/ncursesw6-config.1.gz

What can be wrong?

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.