diff --git a/doc/contributions.txt b/doc/contributions.txt
index 4b36c44a5f7b5921e3a5ea110c2807ebd7fab119..cf10ecccfbbc46a1de4231072ddd11babfde302f 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -600,6 +600,7 @@ Tharax Ferraris
 Thickbrick Sleaford
 	VWR-7109
 	VWR-9287
+	VWR-13483
 	VWR-13947
 Thraxis Epsilon
 	SVC-371
diff --git a/indra/newview/linux_tools/register_secondlifeprotocol.sh b/indra/newview/linux_tools/register_secondlifeprotocol.sh
index c7b4d5546114c44ea2a4a035d1d45b5a040d60d2..16e73cb854f7aaad73c69500ed28af6460f371d6 100755
--- a/indra/newview/linux_tools/register_secondlifeprotocol.sh
+++ b/indra/newview/linux_tools/register_secondlifeprotocol.sh
@@ -22,13 +22,12 @@ else
 fi
 
 # Register handler for KDE-aware apps
-if [ -z "$KDEHOME" ]; then
-    KDEHOME=~/.kde
-fi
-LLKDEPROTDIR=${KDEHOME}/share/services
-if [ -d "$LLKDEPROTDIR" ]; then
-    LLKDEPROTFILE=${LLKDEPROTDIR}/secondlife.protocol
-    cat > ${LLKDEPROTFILE} <<EOF || echo Warning: Did not register secondlife:// handler with KDE: Could not write ${LLKDEPROTFILE}
+for LLKDECONFIG in kde-config kde4-config; do
+    if [ `which $LLKDECONFIG` ]; then
+        LLKDEPROTODIR=`$LLKDECONFIG --path services | cut -d ':' -f 1`
+        if [ -d "$LLKDEPROTODIR" ]; then
+            LLKDEPROTOFILE=${LLKDEPROTODIR}/secondlife.protocol
+            cat > ${LLKDEPROTOFILE} <<EOF || echo Warning: Did not register secondlife:// handler with KDE: Could not write ${LLKDEPROTOFILE} 
 [Protocol]
 exec=${HANDLER} '%u'
 protocol=secondlife
@@ -41,6 +40,9 @@ writing=false
 makedir=false
 deleting=false
 EOF
-else
-    echo Warning: Did not register secondlife:// handler with KDE: Directory $LLKDEPROTDIR does not exist.
-fi
+        else
+            echo Warning: Did not register secondlife:// handler with KDE: Directory $LLKDEPROTODIR does not exist.
+        fi
+    fi
+done
+