musikcube icon indicating copy to clipboard operation
musikcube copied to clipboard

playerctl ( mpris ) does not work with musikcube on systemd-free distribution

Open jvc84 opened this issue 3 months ago • 1 comments

I tried to use playerctl to control musikcube playback, but on Artix musikcube didn't provide any mpris interface. Muiskcube mpris plugin supports libelogind instead of libsystemd but you need to replace it manually.

Installation of musikcube with mpris support on systemd-free distribution (originals of changed files will be saved as <filename>.<extention>.bak):

  1. Install musikcube from source:

    git clone https://github.com/clangen/musikcube.git --recursive 
    cd musikcube
    
  2. Replace libsystemd requirement with libelogind:

    sed -i.bak 's/libsystemd/libelogind/g' src/plugins/mpris/CMakeLists.txt
    

    optional:

    sed -i.bak 's/libsystemd-dev/libelogind/g' script/install-deps.sh
    
  3. Build according to this instruction: Install dependencies.

    cmake -G "Unix Makefiles" .
    make
    

    Troubleshooting:

    3.1 itemListMap

    Solution: replace itemListMap with itemMap in src/plugins/taglib_plugin/TaglibMetadataReader.cpp:

     sed -i.bak 's/itemListMap/itemMap/g' src/plugins/taglib_plugin/TaglibMetadataReader.cpp
     make
    

    3.2 <ncursesw/curses.h> / <ncursesw/panel.h>

    Solution: According to the instruction "you should invoke CMake with the -DNO_NCURSESW flag as follows: cmake -DNO_NCURSESW . instead of the more standard cmake . ", but it gives error:

     CMake Error: Parse error in command line argument: NO_NCURSESW
     Should be: VAR:type=value
    

    so you should remove ncursesw/ from #include:

     sed -i.bak 's/ncursesw\///g' src/musikcube/cursespp/cursespp/curses_config.h 
     make   
    

After make completed:

sudo make install      
  1. After installation libmpris.so may not appear in /usr/local/share/musikcube/plugins or /usr/share/musikcube/plugins. In this case:
    sudo cp bin/plugins/libmpris.so /usr/local/share/musikcube/plugins 
    sudo cp bin/plugins/libmpris.so /usr/share/musikcube/plugins 
    reboot 
    

You can check if mpris plugin is running in musikcube: settings>configure plugins - it should contain string:

[x] MPRIS interface (libmpris.so)  ...

That's it. I hope this helps someone. Also share improvements of my instruction if you faced any other issues.

jvc84 avatar Mar 10 '24 09:03 jvc84

It works, but you need to compile musikcube with specfic cmake flags. For openrc and other elogind related: -DUSE_ELOGIND=true .

Some times ago I wrote ebuild for gentoo and it was adapted with another patch to make it link against ncurses better, thanks to some smart guys. You can see some useful stuff there . For example, if you need mpris, it depends on your service-system : if systemd , then don't add anything, because it's default, if elogind, add the mentioned flag, if basu (*BSD OSs), then another flag.

You can see the gentoo's ebuild here, for example: https://gpo.zugaina.org/AJAX/Ebuild/54112928/View

Gerodote avatar Apr 25 '24 11:04 Gerodote