Skip to content

Conversation

@Quinn-Elara
Copy link

Description

  • Updated SLURL handler script to prioritise letting any running viewer handle the SLURL before attempting to launch the defined default SLURL handler. Useful for if the user runs multiple different viewers on a single machine for convenience.
  • Updated installation scripts to utilise XDG provided tools to ensure compatibility with as many distros as possible.
  • Updated installation scripts to allow for multiple channels of the viewer to be installed simultaneously (e.g. Release and Beta)
  • Updated installation scripts to ask if user desires this viewer to be set as the default SLURL handler instead of implicitly assuming.
  • Updated desktop file to fix GPU selection on hybrid graphics setups.
  • Updated desktop file comment to utilise more common spelling of "online" (see https://www.britannica.com/dictionary/eb/qa/Online-or-on-line- )

Related Issues


Checklist

Please ensure the following before requesting review:

  • I have provided a clear title and detailed description for this pull request.
  • If useful, I have included media such as screenshots and video to show off my changes.
  • The PR is linked to a relevant issue with sufficient context.
  • I have tested the changes locally and verified they work as intended.
  • All new and existing tests pass.
  • Code follows the project's style guidelines.
  • Documentation has been updated if needed.
  • Any dependent changes have been merged and published in downstream modules
  • I have reviewed the contributing guidelines.

Additional Notes

These changes have been live in Alchemy's release viewers for some time now. This PR is to merge them upstream.

Suggest review from @RyeMutt .

@akleshchev akleshchev requested a review from Geenz November 12, 2025 20:10
@Geenz
Copy link
Collaborator

Geenz commented Nov 12, 2025

Thanks - I'll check this out when I'm in front of my Linux box again (currently on a work trip).

@github-actions
Copy link

github-actions bot commented Nov 13, 2025

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@Quinn-Elara
Copy link
Author

I have read the CLA Document and I hereby sign the CLA

@akleshchev
Copy link
Contributor

precommit is complaining about spaces in install.sh line 105
refresh_desktop_app_entry.sh line 61

Fixes precommit check
@github-actions
Copy link

This pull request is stale because it has been open 30 days with no activity. Remove stale label or comment or it will be closed in 7 days

@github-actions github-actions bot added the stale label Dec 24, 2025
@Quinn-Elara
Copy link
Author

This branch is not stale, it is awaiting review.

@akleshchev akleshchev removed the stale label Dec 25, 2025
@akleshchev
Copy link
Contributor

This branch is not stale, it is awaiting review.

Removed the label. But probably not going anywhere without Rye or at least Geenz.

@clairem-sl clairem-sl mentioned this pull request Jan 2, 2026
9 tasks
Copy link

@clairem-sl clairem-sl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've left some comments.

Comment on lines +6 to +7
build_data_file="build_data.json"
if [ -f "${build_data_file}" ]; then

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will fail if install.sh is not executed as ./install.sh.

Better to put this part after the detection of RUN_PATH, and embed $RUN_PATH in the build_data_file string.

Comment on lines 32 to +55
[Desktop Entry]\n\
Name=Second Life\n\
Version=1.4\n\
Name=${launcher_name}\n\
GenericName=Second Life Viewer\n\
Comment=Client for the On-line Virtual World, Second Life\n\
Comment=Client for the Online Virtual World, Second Life\n\
Path=${installation_prefix}\n\
Exec=${installation_prefix}/secondlife\n\
Icon=${installation_prefix}/secondlife_icon.png\n\
Icon=${desktopfilename}\n\
Terminal=false\n\
Type=Application\n\
Categories=Game;Simulation;\n\
StartupNotify=true\n\
StartupWMClass="com.secondlife.indra.viewer"\n\
X-Desktop-File-Install-Version=3.0"
StartupWMClass=\"com.secondlife.indra.viewer\"\n\
X-Desktop-File-Install-Version=3.0
PrefersNonDefaultGPU=true\n\
Actions=DefaultGPU;AssociateMIME;\n\
\n\
[Desktop Action DefaultGPU]\n\
Exec=env __GLX_VENDOR_LIBRARY_NAME=\"\" ${installation_prefix}/secondlife\n\
Name=Launch on default GPU\n\
\n\
[Desktop Action AssociateMIME]\n\
Exec=${installation_prefix}/etc/register_secondlifeprotocol.sh\n\
Name=Associate SLURLs"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does every line end with \n\ ? We can remove all of them. The quoting during printf should keep the line breaks.

mv "$1" "$backup_dir" || die "Failed to create backup of existing installation!"
}

set_slurl_handler()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not using function

Though it is not strictly necessary, the convention seems to be using the function keyword. In addition using function makes the function stand out more.

echo
prompt "Would you like to set Second Life as your default SLurl handler? [Y/N]: "
if [ $? -eq 0 ]; then
exit 0

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this be return 0 instead?

exit 0 ends the script completely, meaning there are steps in root_install() that will not be executed (involving "refresh_desktop_app_entry")

@@ -1,57 +1,66 @@
#!/bin/bash
#!/bin/env sh

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see no benefits running this script with sh instead of bash.

It is understandable for the actual handler to be executed by sh (which is likely much lighter -- unless it's a symlink to bash), but for this script that is invoked only during installation, better to just use bash, enabling us to use bash's powerful features.

# Check if xdg-mime is present, if so, use it to register new protocol.
if command -v xdg-mime >/dev/null 2>&1; then
urlhandler=$(xdg-mime query default x-scheme-handler/secondlife)
localappdir="${HOME}/.local/share/applications"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't we be using ${XDG_DATA_HOME}/applications instead?

Also, this causes breakage if installation was done using sudo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants