Clementine and djmount

May 10, 2018 (modified March 11, 2021)

I have an UPNP-server running on a pine64, serving content from a very under-powered synology NAS (small 2012er model). While accessing the content from android-phones and tablets worked reasonably well most of the time, finding a satisfying client for my desktop (nowadays Manjaro Linux w/ i3-gaps) was a surprisingly hard challenge.

Fast-forward to djmount and clementine.

I loved amarok back in the days I used KDE. KDE lost me with their complicated, too often broken solutions a long time ago, amarok was also developed to an unusable state, losing the cool features for broken stuff I didn’t need. But well, this is free, open, libre software – I got what I paid for. After a long time with interim solutions I discovered an unmaintained but still working tool called djmount. It provides access – via fuse – to the content served by any UPNP-server reachable under a single mount point.

Clementine is a fork of amarok, made by people equally unsatisfied with amaroks new direction as myself – but with more time and/or energy :-).

I now have clementine running, the library pointed at the djmounted Music ’Folder’. I have clementine set up to re-scan the library at start – resulting in an empty library the times I forgot to start djmount first. djmount itself needs the laptop to be connected to the network.

Are we online and is the Music mounted?

#!/bin/bash

nm-online -t 30
if [ $? == 0 ]; then
    if ! (ps aux | grep djmount | grep -v grep) ; then
        djmount ${HOME}/Music
    fi
    clementine
    exit 0
fi
exit 1

nm-online makes sure we are connected; if no djmount process is found, it is started; clementine will check, if it’s already running.

Desktop integration

[Desktop Entry]
Name=Clementine w/ DJMount
Comment=Clementine Music Player with a djmounted library
Exec=/bin/sh -c "exec \$HOME/bin/clementine.sh"
Icon=clementine
Terminal=false
Type=Application
Categories=Multimedia;

clementines look

clementine_small.png

Figure 1: Clementine music player