https://github.com/chris124567/smpd
command line music player daemon client designed for ease of use
https://github.com/chris124567/smpd
c mpd mpd-client
Last synced: about 1 year ago
JSON representation
command line music player daemon client designed for ease of use
- Host: GitHub
- URL: https://github.com/chris124567/smpd
- Owner: chris124567
- Created: 2020-02-25T22:21:29.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-07-08T03:38:35.000Z (almost 5 years ago)
- Last Synced: 2025-02-05T16:48:11.345Z (over 1 year ago)
- Topics: c, mpd, mpd-client
- Language: C
- Homepage:
- Size: 33.2 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# smpd
The first actually usable command line MPD client. Featuring tab completion and convenient searching.
# Requirements:
* mpd (tested with 0.21.5)
* libmpdclient (tested with 2.16)
* c compiler
* c standard library
# Install:
`$ ./build.sh`
`# ./install.sh`
# Sample Usage of Most Used Features:
Case 1:
`smpd -x Ettor[TAB]`
`smpd -x Ettore\ Stratta`
Would erase the current queue and then play all songs by artist Ettore Strata.
Case 2:
`smpd -a Lovin[TAB]`
`smpd -a Loving\ You Erik[TAB]`
`smpd -a Loving\ You Erik\ Satie`
Would add all songs titled "Loving You", along with all songs by "Erik Satie" to the current queue.
Note: The tab completion works based on files in your library. The above examples are hypothetical and assume that you have those artists and songs in your library.
# Miscellaneous:
* Written in C99
* Compiles with maximum security features (see variable SEC in build.sh) and optimizations (CFLAGS and GCC_OPT)
* Compiles with no warnings or errors using `-Wall -Wextra -Wshadow -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes` on gcc-8.3.0
* Tested all options with valgrind-3.14.0 to make sure there's no memory leaks, including testing w/ errors (hope I got everything, but C inevitably introduces bugs)
* Formatted with clang-format (see .clang-format for configuration)
* Implemented error handling for every libmpdclient call
* I use all of the functionality except the search/adding songs via my keyboard shortcut manager, xbindkeys. An excerpt of my configuration can be seen in the `xbindkeys_excerpt` file.
# Known Issues:
- Tab completion when files have quotes in the name
# Options (any of the following can be combined and chained)
```-0 Tab completion generator, internal
-a Add search results(s) to queue (tab completed), takes a query
-c Clear the queue
-C Display the currently playing song
-d Delete a given position from the queue, takes a position integer
-h Print this help message
-l Loop the current song a given amount of times, takes an integer argument
-L Print all of the currently queued songs
-m Print the current songs metadata
-n Skip relatively around in the song queue, takes an integer
-p Seek to an exact position in the current song (in seconds), takes an integer argument
-P Seek relatively in the current song (in seconds), takes an integer argument
-r Toggle repeat mode
-s Search library, takes query(s)
-x Clear the queue, then search the library for a given query. Takesquery(s)
Note: -x and -a have identical behavior, except -x deletes the current queue before adding the results```