diff --git a/indra/newview/linux_tools/register_secondlifeprotocol.sh b/indra/newview/linux_tools/register_secondlifeprotocol.sh
index ea107ec0b1263c00e714e8801f0af66b305c9835..06dd1278174dd865d00c5774a45fed6aff3cb229 100755
--- a/indra/newview/linux_tools/register_secondlifeprotocol.sh
+++ b/indra/newview/linux_tools/register_secondlifeprotocol.sh
@@ -24,7 +24,7 @@ chmod +x "$desired_handler"
 if command -v xdg-mime query default x-scheme-handler/secondlife >/dev/null 2>&1; then
 	urlhandler=$(xdg-mime query default x-scheme-handler/secondlife)
 	localappdir="${HOME}/.local/share/applications"
-	newhandler="secondlifeprotocol_$(basename "$(dirname "${desired_handler}")").desktop"
+	newhandler="secondlifeprotocol_$(basename "${PWD%}").desktop"
 	handlerpath="${localappdir}/${newhandler}"
 	cat >"${handlerpath}" <<EOFnew || print "Warning: Did not register secondlife:// handler with xdg-mime: Could not write $newhandler"s
 [Desktop Entry]
@@ -49,7 +49,8 @@ EOFnew
 		#Clean up handlers from other viewers
 		if [ "${urlhandler}" != "${newhandler}" ]; then
 			print "Current SLURL Handler: ${urlhandler} - Setting ${newhandler} as the new default..."
-			mv "${localappdir}"/"${urlhandler}" "${localappdir}"/"${urlhandler}".bak
+			#mv "${localappdir}"/"${urlhandler}" "${localappdir}"/"${urlhandler}".bak #Old method, now replaced with XDG.
+			xdg-desktop-menu install --novendor "${localappdir}"/"$urlhandler"
 		else
 			print "SLURL Handler has not changed, leaving as-is."
 		fi