Skip to content
Snippets Groups Projects

Fix Linux SLURL protocol handling

Merged Ghost User requested to merge xenhat/slurl-handler into main
2 files
+ 20
28
Compare changes
  • Side-by-side
  • Inline
Files
2
  • Removes some URL wrapping to fix handover upon viewer startup
    
    Fix dumb pasting error & remove depreciated strings from desktop entry
    
    Remove URL escape & patch out irrelevant echo
    
    Swap out use of backticks for parenthesis  in handle_secondlifeprotocol.sh
    
    Swap out use of backticks for parenthesis in register_secondlifeprotocol.sh
    
    Remove backtick originating from pasting error (oops!) in handle_secondlifeprotocol.sh
    
    Unjanktified viewer detection - No longer depends on binary names and instead looks at the presence of standard protocols within DBus in handle_secondlifeprotocol.sh
    
    Ugh, backticks again.
    
    Clean up in aisle register_secondlifeprotocol.sh
    
    Useful value substitution in handle_secondlifeprotocol.sh
#!/bin/bash
# Send a URL of the form secondlife://... to Second Life.
# Send a URL of the form secondlife://... to any running viewer, if not, launch Alchemy viewer.
#
URL="$1"
sl_url="$*"
if [ -z "$URL" ]; then
echo Usage: $0 secondlife://...
exit
echo "Got SLURL: ${sl_url}"
if [ -z "${sl_url}" ]; then
echo "Usage: $0 secondlife:// ..."
exit
fi
RUN_PATH=`dirname "$0" || echo .`
cd "${RUN_PATH}/.."
exec ./alchemy -url \'"${URL}"\'
run_path=$(dirname "$0" || echo .)
#Poll DBus to get a list of registered services, then look through the list for the Second Life API Service - if present, this means a viewer is running, if not, then no viewer is running and a new instance should be launched
service_name="com.secondlife.ViewerAppAPIService" #Name of Second Life DBus service. This should be the same across all viewers.
if dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.ListNames | grep -q "${service_name}"; then
echo "Second Life running, sending to DBus...";
exec dbus-send --type=method_call --dest="${service_name}" /com/secondlife/ViewerAppAPI com.secondlife.ViewerAppAPI.GoSLURL string:"${sl_url}"
else
echo "Second Life not running, launching new instance...";
cd "${run_path}"/.. || exit
#Go to .sh location (/etc), then up a directory to the viewer location
exec ./alchemy -url "${sl_url}"
fi
Loading