Compare commits
No commits in common. "0335443b2241e6e3db8d3ac09df9018d7a96414f" and "f4999a63a54d726a4c4e0bca45b740b310c9d941" have entirely different histories.
0335443b22
...
f4999a63a5
@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required (VERSION 3.0)
|
cmake_minimum_required (VERSION 3.0)
|
||||||
project (nncmpp VERSION 1.0.0 LANGUAGES C)
|
project (nncmpp VERSION 0.9.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,23 +68,20 @@ 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 text markup
|
# Generate documentation from program help
|
||||||
find_program (ASCIIDOCTOR_EXECUTABLE asciidoctor)
|
find_program (HELP2MAN_EXECUTABLE help2man)
|
||||||
if (NOT ASCIIDOCTOR_EXECUTABLE)
|
if (NOT HELP2MAN_EXECUTABLE)
|
||||||
message (FATAL_ERROR "asciidoctor not found")
|
message (FATAL_ERROR "help2man 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 ${ASCIIDOCTOR_EXECUTABLE} -b manpage
|
COMMAND ${HELP2MAN_EXECUTABLE} -N
|
||||||
-a release-version=${PROJECT_VERSION}
|
"${PROJECT_BINARY_DIR}/${page}" -o ${page_output}
|
||||||
"${PROJECT_SOURCE_DIR}/${page}.adoc"
|
DEPENDS ${page}
|
||||||
-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,25 +1,3 @@
|
|||||||
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,14 +22,9 @@ 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.
|
||||||
|
|
||||||
Documentation
|
Building and Running
|
||||||
-------------
|
--------------------
|
||||||
See the link:nncmpp.adoc[man page] for information about usage.
|
Build dependencies: CMake, pkg-config, help2man, liberty (included),
|
||||||
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
|
||||||
|
|
||||||
@ -48,6 +43,37 @@ 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
87
nncmpp.adoc
@ -1,87 +0,0 @@
|
|||||||
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,8 +741,6 @@ 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 },
|
||||||
@ -4030,7 +4028,7 @@ main (int argc, char *argv[])
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct opt_handler oh =
|
struct opt_handler oh =
|
||||||
opt_handler_make (argc, argv, opts, NULL, "Terminal-based MPD client.");
|
opt_handler_make (argc, argv, opts, NULL, "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