start-pulseaudio-x11: fix KDE version check
authorRickie Schroeder <dqlajq3c66@b6zwi.anonbox.net>
Wed, 16 Oct 2019 19:33:19 +0000 (19:33 +0000)
committerTanu Kaskinen <tanuk@iki.fi>
Thu, 31 Oct 2019 13:42:41 +0000 (15:42 +0200)
Current check wasn't working in case when $DESKTOP_SESSION wasn't set
which happens when session is started without display manager like sddm.
Parsing "plasmashell -v" output should be more reliable and less hacky.

This also changes legacy backticks `...` to modern $(...) as recommended
by shellcheck:
https://github.com/koalaman/shellcheck/wiki/SC2006

Fixes: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/issues/751

src/daemon/start-pulseaudio-x11.in

index 1b5f429..1f12cfb 100755 (executable)
@@ -22,9 +22,11 @@ if [ x"$DISPLAY" != x ] ; then
     @PACTL_BINARY@ load-module module-x11-publish "display=$DISPLAY" > /dev/null
     @PACTL_BINARY@ load-module module-x11-cork-request "display=$DISPLAY" > /dev/null
 
+    # KDE plasma versions older than 5.17.0 use module-device-manager's routing API.
+    # Check for current plasma version and load module if it's necessary.
     if [ x"$KDE_FULL_SESSION" = x"true" ]; then
-        plasmaversion=`grep "X-KDE-PluginInfo-Version" $DESKTOP_SESSION.desktop | cut -d "=" -f2 | cut -d "." -f1,2 | tr -d "."`
-        if [ "$plasmaversion" -lt "517" ]; then
+        plasmaversion="$(plasmashell -v 2>/dev/null | sed -n 's/^plasmashell \([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\)/\1*1000000+\2*1000+\3/p' | head -1)"
+        if [ -n "$plasmaversion" ] && [ "$((plasmaversion))" -lt "5017000" ]; then
             @PACTL_BINARY@ load-module module-device-manager "do_routing=1" > /dev/null
         fi
     fi