Compare commits
4 Commits
f4999a63a5
...
0335443b22
Author | SHA1 | Date | |
---|---|---|---|
0335443b22 | |||
70ff29e3d5 | |||
ba122b7672 | |||
456fab5b11 |
@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required (VERSION 3.0)
|
cmake_minimum_required (VERSION 3.0)
|
||||||
project (nncmpp VERSION 0.9.0 LANGUAGES C)
|
project (nncmpp VERSION 1.0.0 LANGUAGES C)
|
||||||
|
|
||||||
# Moar warnings
|
# Moar warnings
|
||||||
if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUCC)
|
if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUCC)
|
||||||
@ -68,20 +68,23 @@ add_threads (${PROJECT_NAME})
|
|||||||
include (GNUInstallDirs)
|
include (GNUInstallDirs)
|
||||||
install (TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install (TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
install (FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
install (FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||||
|
install (DIRECTORY contrib DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME})
|
||||||
|
|
||||||
# Generate documentation from program help
|
# Generate documentation from text markup
|
||||||
find_program (HELP2MAN_EXECUTABLE help2man)
|
find_program (ASCIIDOCTOR_EXECUTABLE asciidoctor)
|
||||||
if (NOT HELP2MAN_EXECUTABLE)
|
if (NOT ASCIIDOCTOR_EXECUTABLE)
|
||||||
message (FATAL_ERROR "help2man not found")
|
message (FATAL_ERROR "asciidoctor not found")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
foreach (page ${PROJECT_NAME})
|
foreach (page ${PROJECT_NAME})
|
||||||
set (page_output "${PROJECT_BINARY_DIR}/${page}.1")
|
set (page_output "${PROJECT_BINARY_DIR}/${page}.1")
|
||||||
list (APPEND project_MAN_PAGES "${page_output}")
|
list (APPEND project_MAN_PAGES "${page_output}")
|
||||||
add_custom_command (OUTPUT ${page_output}
|
add_custom_command (OUTPUT ${page_output}
|
||||||
COMMAND ${HELP2MAN_EXECUTABLE} -N
|
COMMAND ${ASCIIDOCTOR_EXECUTABLE} -b manpage
|
||||||
"${PROJECT_BINARY_DIR}/${page}" -o ${page_output}
|
-a release-version=${PROJECT_VERSION}
|
||||||
DEPENDS ${page}
|
"${PROJECT_SOURCE_DIR}/${page}.adoc"
|
||||||
|
-o "${page_output}"
|
||||||
|
DEPENDS ${page}.adoc
|
||||||
COMMENT "Generating man page for ${page}" VERBATIM)
|
COMMENT "Generating man page for ${page}" VERBATIM)
|
||||||
endforeach ()
|
endforeach ()
|
||||||
|
|
||||||
|
22
NEWS
22
NEWS
@ -1,3 +1,25 @@
|
|||||||
|
1.0.0 (2020-11-05)
|
||||||
|
|
||||||
|
* Coming with a real manual page instead of a help2man-generated stub
|
||||||
|
|
||||||
|
* Added a mode to poll MPD for the elapsed time, enabled by default,
|
||||||
|
fixing two cases of improper tracking
|
||||||
|
|
||||||
|
* Started showing song duration in the library
|
||||||
|
|
||||||
|
* Added C-PgUp/PgDown and C-Left/Right bindings to iterate tabs
|
||||||
|
|
||||||
|
* Added VIM-like C-y and C-e bindings for scrolling
|
||||||
|
|
||||||
|
* Added Windows Explorer-like M-Up binding to go up a directory
|
||||||
|
|
||||||
|
* Worked around a cURL bug crashing the application
|
||||||
|
|
||||||
|
* Fixed handling of direct SHOUTcast streams
|
||||||
|
|
||||||
|
* Miscellaneous little fixes
|
||||||
|
|
||||||
|
|
||||||
0.9.0 (2018-11-02)
|
0.9.0 (2018-11-02)
|
||||||
|
|
||||||
* Initial release
|
* Initial release
|
||||||
|
42
README.adoc
42
README.adoc
@ -22,9 +22,14 @@ Packages
|
|||||||
Regular releases are sporadic. git master should be stable enough. You can get
|
Regular releases are sporadic. git master should be stable enough. You can get
|
||||||
a package with the latest development version from Archlinux's AUR.
|
a package with the latest development version from Archlinux's AUR.
|
||||||
|
|
||||||
Building and Running
|
Documentation
|
||||||
--------------------
|
-------------
|
||||||
Build dependencies: CMake, pkg-config, help2man, liberty (included),
|
See the link:nncmpp.adoc[man page] for information about usage.
|
||||||
|
The rest of this README will concern itself with externalities.
|
||||||
|
|
||||||
|
Building
|
||||||
|
--------
|
||||||
|
Build dependencies: CMake, pkg-config, asciidoctor, liberty (included),
|
||||||
termo (included) +
|
termo (included) +
|
||||||
Runtime dependencies: ncursesw, libunistring, cURL
|
Runtime dependencies: ncursesw, libunistring, cURL
|
||||||
|
|
||||||
@ -43,37 +48,6 @@ Or you can try telling CMake to make a package for you. For Debian it is:
|
|||||||
$ cpack -G DEB
|
$ cpack -G DEB
|
||||||
# dpkg -i nncmpp-*.deb
|
# dpkg -i nncmpp-*.deb
|
||||||
|
|
||||||
Having the program installed, create a configuration file and run it.
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
-------------
|
|
||||||
Create _~/.config/nncmpp/nncmpp.conf_ with contents like the following:
|
|
||||||
|
|
||||||
....
|
|
||||||
settings = {
|
|
||||||
address = "localhost:6600"
|
|
||||||
password = "<your password>"
|
|
||||||
root = "~/Music"
|
|
||||||
}
|
|
||||||
colors = {
|
|
||||||
normal = ""
|
|
||||||
highlight = "bold"
|
|
||||||
elapsed = "reverse"
|
|
||||||
remains = "ul"
|
|
||||||
tab_bar = "reverse"
|
|
||||||
tab_active = "ul"
|
|
||||||
even = ""
|
|
||||||
odd = ""
|
|
||||||
selection = "reverse"
|
|
||||||
multiselect = "-1 6"
|
|
||||||
scrollbar = ""
|
|
||||||
}
|
|
||||||
streams = {
|
|
||||||
"dnbradio.com" = "http://www.dnbradio.com/hi.m3u"
|
|
||||||
"BassDrive.com" = "http://bassdrive.com/v2/streams/BassDrive.pls"
|
|
||||||
}
|
|
||||||
....
|
|
||||||
|
|
||||||
Terminal caveats
|
Terminal caveats
|
||||||
----------------
|
----------------
|
||||||
This application aspires to be as close to a GUI as possible. It expects you
|
This application aspires to be as close to a GUI as possible. It expects you
|
||||||
|
87
nncmpp.adoc
Normal file
87
nncmpp.adoc
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
nncmpp(1)
|
||||||
|
=========
|
||||||
|
:doctype: manpage
|
||||||
|
:manmanual: nncmpp Manual
|
||||||
|
:mansource: nncmpp {release-version}
|
||||||
|
|
||||||
|
Name
|
||||||
|
----
|
||||||
|
nncmpp - terminal-based MPD client
|
||||||
|
|
||||||
|
Synopsis
|
||||||
|
--------
|
||||||
|
*nncmpp* [_OPTION_]...
|
||||||
|
|
||||||
|
Description
|
||||||
|
-----------
|
||||||
|
*nncmpp* is a terminal-based GUI-like MPD client. On start up it will welcome
|
||||||
|
you with an overview of all key bindings and the actions they're assigned to.
|
||||||
|
Individual tabs can be switched to either using the mouse or by pressing *M-1*
|
||||||
|
through *M-9*, corresponding to the order they appear in.
|
||||||
|
|
||||||
|
Options
|
||||||
|
-------
|
||||||
|
*-d*, *--debug*::
|
||||||
|
Adds a "Debug" tab showing all MPD communication and other information
|
||||||
|
that help debug various issues.
|
||||||
|
|
||||||
|
*-h*, *--help*::
|
||||||
|
Display a help message and exit.
|
||||||
|
|
||||||
|
*-V*, *--version*::
|
||||||
|
Output version information and exit.
|
||||||
|
|
||||||
|
Configuration
|
||||||
|
-------------
|
||||||
|
Unless you run MPD on a remote machine, on an unusual port, or protected by
|
||||||
|
a password, the client doesn't need a configuration file to work. It is,
|
||||||
|
however, likely that you'll want to customize the looks or add some streams.
|
||||||
|
You can start off with the following snippet:
|
||||||
|
|
||||||
|
....
|
||||||
|
settings = {
|
||||||
|
address = "localhost:6600"
|
||||||
|
password = "<your password>"
|
||||||
|
root = "~/Music"
|
||||||
|
}
|
||||||
|
colors = {
|
||||||
|
normal = ""
|
||||||
|
highlight = "bold"
|
||||||
|
elapsed = "reverse"
|
||||||
|
remains = "ul"
|
||||||
|
tab_bar = "reverse"
|
||||||
|
tab_active = "ul"
|
||||||
|
even = ""
|
||||||
|
odd = ""
|
||||||
|
selection = "reverse"
|
||||||
|
multiselect = "-1 6"
|
||||||
|
scrollbar = ""
|
||||||
|
}
|
||||||
|
streams = {
|
||||||
|
"dnbradio.com" = "http://www.dnbradio.com/hi.m3u"
|
||||||
|
"BassDrive.com" = "http://bassdrive.com/v2/streams/BassDrive.pls"
|
||||||
|
}
|
||||||
|
....
|
||||||
|
|
||||||
|
Terminal attributes are accepted in a format similar to that of *git-config*(1),
|
||||||
|
only named colours aren't supported. The distribution contains example colour
|
||||||
|
schemes in the _contrib_ directory.
|
||||||
|
|
||||||
|
// TODO: it seems like liberty should contain an includable snippet about
|
||||||
|
// the format, which could form a part of nncmpp.conf(5).
|
||||||
|
|
||||||
|
Files
|
||||||
|
-----
|
||||||
|
*nncmpp* follows the XDG Base Directory Specification.
|
||||||
|
|
||||||
|
_~/.config/nncmpp/nncmpp.conf_::
|
||||||
|
The configuration file.
|
||||||
|
|
||||||
|
Reporting bugs
|
||||||
|
--------------
|
||||||
|
Use https://git.janouch.name/p/nncmpp to report bugs, request features,
|
||||||
|
or submit pull requests.
|
||||||
|
|
||||||
|
See also
|
||||||
|
--------
|
||||||
|
*mpd*(1)
|
4
nncmpp.c
4
nncmpp.c
@ -741,6 +741,8 @@ static struct config_schema g_config_settings[] =
|
|||||||
{ .name = "password",
|
{ .name = "password",
|
||||||
.comment = "Password to use for MPD authentication",
|
.comment = "Password to use for MPD authentication",
|
||||||
.type = CONFIG_ITEM_STRING },
|
.type = CONFIG_ITEM_STRING },
|
||||||
|
|
||||||
|
// NOTE: this is unused--in theory we could allow manual metadata adjustment
|
||||||
{ .name = "root",
|
{ .name = "root",
|
||||||
.comment = "Where all the files MPD is playing are located",
|
.comment = "Where all the files MPD is playing are located",
|
||||||
.type = CONFIG_ITEM_STRING },
|
.type = CONFIG_ITEM_STRING },
|
||||||
@ -4028,7 +4030,7 @@ main (int argc, char *argv[])
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct opt_handler oh =
|
struct opt_handler oh =
|
||||||
opt_handler_make (argc, argv, opts, NULL, "MPD client.");
|
opt_handler_make (argc, argv, opts, NULL, "Terminal-based MPD client.");
|
||||||
|
|
||||||
int c;
|
int c;
|
||||||
while ((c = opt_handler_get (&oh)) != -1)
|
while ((c = opt_handler_get (&oh)) != -1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user