Moc
Music On Console is a lightweight music player which consists of 2 parts, a server (Moc) and a player/interface (Mocp). This is similar to mpd, but unlike mpd, Moc comes with an interface. Its server does not support remote access.
Contents
Installation
Install the moc package. The latest development version is available as moc-svnAUR.
Configuration
The package includes a sample configuration file at /usr/share/doc/moc/config.example
. To configure moc, copy this file to ~/.moc/config
and edit it.
Themes are stored in /usr/share/moc/themes
which are easy to understand and make, see example_theme for instructions.
For instructions about customizing the keybindings, read /usr/share/doc/moc/keymap.example
.
If you want to use Moc with OSS v4.1, see OSS#MOC.
Usage
Start moc:
$ mocp
This will start the server and interface. Some useful shortcuts (case sensitive):
Start playing a track | Enter
|
Pause track | Space or p
|
Play next track | n
|
Play previous track | b
|
Switch from playlist browsing to filesystem browsing (and vice versa) |
Tab
|
Add one track to the playlist | a
|
Remove track from playlist | d
|
Add a folder recursively to playlist | Shift+a
|
Clear playlist | Shift+c
|
Increase volume 5% | . (dot)
|
Decrease volume 5% | , (comma)
|
Increase volume 1% | >
|
Decrease volume 1% | <
|
Change volume to 10% | meta+1
|
Change volume to 20% | meta+2
|
Quit player | q
|
Last.fm scrobbling
mocp-scrobbler
mocp-scrobblerAUR is a Last.fm/Libre.fm scrobbler for MOC with support for now-playing notifications, daemonization and cache. It only depends on Python 3.
Copy the example file to your user config directory:
mkdir ~/.mocpscrob/ cp /usr/share/doc/mocp-scrobbler/config.example ~/.mocpscrob/config
Edit ~/.mocpscrob/config
to add your login and password. The password variable will be replaced with password_md5
on the first run. Its value will be the original value hashed using MD5 algorithm. If you want to change password, just add again password with you new password, and password_md5
will be replaced.
To scrobble tracks, start mocp-scrobbler as daemon before mocp. You can also use an alias:
alias mocp='/usr/bin/mocp-scrobbler.py -d; mocp'
In January of 2016 last.fm updated their password requirements, with all new and updated passwords requiring the inclusion of one of the following characters !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~, or a space". This is known to cause an authentication error with mocpscrob configurations which specify passwords not conforming to these new specifications. Changing one's password and updating the ~/.mocpscrob/config password accordingly resolves this issue.
If you want to use Libre.fm instead of Last.fm it is important to change hostname
from post.audioscrobbler.com
to turtle.libre.fm
.
Front-ends
- dmenu_mocp — Dmenu frontend to MOC
- https://github.com/mutantturkey/mocicon || dmenu_mocpAUR[broken link: archived in aur-mirror]
- mocicon — GTK panel applet to control MOC
- moc-tray — Quick and easy access to mocp basic functions
- eXo — Qt frontend to MOC, supports scrobbling
- https://bitbucket.org/blaze/exo/ || not packaged? search in AUR
systemd service file
/etc/systemd/system/moc@.service
[Unit] Description=MOC server ConditionPathExists=/usr/bin/mocp After=network.target sound.target [Service] RemainAfterExit=yes User=%I ExecStart=/usr/bin/mocp -S ExecStop=/usr/bin/mocp -x WorkingDirectory=/home/%I/ [Install] WantedBy=multi-user.target
Enable this service for the respective user.
Troubleshooting
MOC fails to start
If MOC fails to start, it is most probably because of something wrong in ~/.moc/
. You can try to fix it, or simply delete the whole folder.
Strange characters
If you see strange-like characters displayed in moc instead of the normal lines (vertical lines to separate space, etc.), you may have a font set incompatible to MOC. Either change the respective font, or edit .moc/config
to use ASCII for drawing lines:
ASCIILines = no
FATAL_ERROR: Layout1 is malformed
If MOC crashes with this error, try adding either line to .moc/config
:
Layout1 = directory(0,0,50%,100%): playlist(50%,0,100%,100%)
or
Layout1 = directory(0,0,50%,100%): playlist(50%,0,FILL,100%)
See original report and Debian bugs.