====== Tutorial: Open Second Life SLURLs in Firestorm from Brave on Linux Mint ======
This tutorial shows you how to make ''secondlife:'' links (SLURLs) opened in the Brave browser launch your user-installed Firestorm Viewer on Linux Mint.
All steps are done in your home directory, no root access is required.
===== Prerequisites =====
Before you start, you should have:
Linux Mint with a graphical desktop
Brave browser installed
Firestorm Viewer installed in your home directory (user-local, not system-wide)
Basic ability to use a terminal
If you do not know where Firestorm is installed, you can find it later in this tutorial.
===== Step 1 – Find your Firestorm installation path =====
If you already know the exact path to your Firestorm executable (for example ''/home/USERNAME/Firestorm/firestorm''), you can skip to Step 2.
Otherwise, search for it in your home directory:
<code bash>
find ~ -maxdepth 4 -type f -name firestorm 2>/dev/null
</code>
Look for a path that ends with ''firestorm'', for example:
<code>
/home/USERNAME/Firestorm/firestorm
</code>
Note this path, you will need it in the next step.
===== Step 2 – Create the SLURL handler script =====
In this step, you create a small script that receives a SLURL and passes it to Firestorm.
Open a terminal and run:
<code bash>
mkdir -p ~/.local/bin
nano ~/.local/bin/firestorm-slurl
</code>
Insert the following content (adjust the path in the ''FIRESTORM'' line):
<code bash>
#!/bin/bash
Path to your Firestorm executable (adjust if needed)
FIRESTORM="$HOME/Firestorm/firestorm"
Pass the SLURL (first argument) to Firestorm
"$FIRESTORM" --slurl "$1"
</code>
If your Firestorm is in a different location, change the line:
<code>
FIRESTORM="$HOME/Firestorm/firestorm"
</code>
for example to:
<code>
FIRESTORM="$HOME/Programs/Firestorm/firestorm"
</code>
Save the file and exit the editor, then make the script executable:
<code bash>
chmod +x ~/.local/bin/firestorm-slurl
</code>
Quick test:
You can test the script directly:
<code bash>
~/.local/bin/firestorm-slurl "secondlife://Ahern/128/128/30"
</code>
If Firestorm starts or opens the location, the script works.
===== Step 3 – Create the desktop entry for the protocol handler =====
Now you tell the desktop environment that there is an application that can handle the ''secondlife:'' protocol.
Create the desktop entry:
<code>
mkdir -p ~/.local/share/applications
nano ~/.local/share/applications/firestorm-slurl.desktop
</code>
Insert the following content (replace ''USERNAME'' with your actual username):
<code ini>
[Desktop Entry]
Name=Firestorm SLURL Handler
Exec=/home/USERNAME/.local/bin/firestorm-slurl %u
Type=Application
Terminal=false
MimeType=x-scheme-handler/secondlife;
</code>
Example:
<code>
Exec=/home/miko/.local/bin/firestorm-slurl %u
</code>
Save the file and update the desktop database:
<code bash>
update-desktop-database ~/.local/share/applications/
</code>
===== Step 4 – Register the ''secondlife:'' protocol handler =====
Now you connect the ''secondlife:'' protocol with your new desktop entry using ''xdg-mime'':
<code bash>
xdg-mime default firestorm-slurl.desktop x-scheme-handler/secondlife
</code>
This tells the system:
“Whenever a ''secondlife:'' link is opened, use ''firestorm-slurl.desktop''.”
Optional check:
<code bash>
xdg-mime query default x-scheme-handler/secondlife
</code>
The output should be:
<code>
firestorm-slurl.desktop
</code>
===== Step 5 – Configure Brave to allow external protocol handlers =====
Now you configure Brave so it is allowed to hand off ''secondlife:'' links to the system handler.
Open Brave and in the address bar enter:
<code>
brave://settings/handlers
</code>
Make sure:
Allow sites to ask to become default handlers for protocols is enabled.
If you see ''secondlife'' listed under “Blocked” or similar, remove it from the blocked list.
The next time you click a ''secondlife:'' link in Brave, it should ask whether Brave may open such links with an external application. Choose Allow.
===== Step 6 – Test the complete setup =====
You can test the integration in two ways.
==== Test from the terminal ====
Run:
<code>
xdg-open "secondlife://Ahern/128/128/30"
</code>
Expected result:
Firestorm starts (or uses the running instance)
The SLURL opens inside Firestorm
If this works, your system-level handler is correctly configured.
==== Test from Brave ====
Create or open a page with a link like:
<code>
secondlife://Ahern/128/128/30
</code>
Click the link in Brave.
Expected behavior:
Brave may ask for permission to open this type of link → choose Allow
Firestorm opens and goes to the specified location
===== Troubleshooting =====
==== Firestorm does not start (file not found) ====
If you see an error like:
<code>
File or directory not found
</code>
then the path in your script is wrong.
Re-run the search:
<code>
find ~ -maxdepth 4 -type f -name firestorm 2>/dev/null
</code>
Update the line in ''~/.local/bin/firestorm-slurl'':
<code>
FIRESTORM="FULL/PATH/TO/firestorm"
</code>
Test again:
<code>
~/.local/bin/firestorm-slurl "secondlife://Ahern/128/128/30"
</code>
==== Brave opens a new tab or window instead of Firestorm ====
If Brave opens a new browser window or tab instead of Firestorm, check:
The desktop entry is correct and contains your real username.
The handler is registered:
<code bash>
xdg-mime query default x-scheme-handler/secondlife
</code>
It should output:
<code>
firestorm-slurl.desktop
</code>
Brave is allowed to use protocol handlers:
Open ''brave://settings/handlers''
Ensure protocol handlers are allowed
Remove any blocked ''secondlife'' entries
After adjusting, restart Brave and test again.