summaryrefslogtreecommitdiff
path: root/indra/newview/linux_tools
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/linux_tools')
-rw-r--r--indra/newview/linux_tools/client-readme-joystick.txt78
-rw-r--r--indra/newview/linux_tools/client-readme-voice.txt51
-rw-r--r--indra/newview/linux_tools/client-readme.txt111
-rwxr-xr-xindra/newview/linux_tools/handle_secondlifeprotocol.sh2
-rwxr-xr-xindra/newview/linux_tools/install.sh106
-rwxr-xr-xindra/newview/linux_tools/launch_url.sh76
-rwxr-xr-xindra/newview/linux_tools/refresh_desktop_app_entry.sh36
-rwxr-xr-xindra/newview/linux_tools/register_secondlifeprotocol.sh26
-rwxr-xr-xindra/newview/linux_tools/wrapper.sh56
9 files changed, 377 insertions, 165 deletions
diff --git a/indra/newview/linux_tools/client-readme-joystick.txt b/indra/newview/linux_tools/client-readme-joystick.txt
new file mode 100644
index 0000000000..4f89a73ccb
--- /dev/null
+++ b/indra/newview/linux_tools/client-readme-joystick.txt
@@ -0,0 +1,78 @@
+Second Life - Joystick & SpaceNavigator Support README
+-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+WHAT IS IT?
+-=-=-=-=-=-
+
+This feature allows the use of a joystick or other supported multi-axis
+device for controlling your avatar and camera.
+
+REQUIREMENTS
+-=-=-=-=-=-=
+
+* A joystick or other generic multi-axis input device supported by your chosen
+ version of Linux
+
+- OR -
+
+* A SpaceNavigator device (additional configuration may be required, see below)
+
+Success has been reported on the following systems so far:
+* Ubuntu 7.04 (Feisty) with a generic USB joystick
+* Ubuntu 7.04 (Feisty) with a USB 3DConnexion SpaceNavigator
+* Ubuntu 6.06 (Dapper) with a generic USB joystick
+* Ubuntu 6.06 (Dapper) with a USB 3DConnexion SpaceNavigator
+
+CONFIGURATION
+-=-=-=-=-=-=-
+
+SPACE NAVIGATOR: *Important* - do not install the Linux SpaceNavigator
+drivers from the disk included with the device - these are problematic.
+Some distributions of Linux (such as Ubuntu, Gentoo and Mandriva) will
+need some system configuration to make the SpaceNavigator usable by
+applications such as the Second Life Viewer, as follows:
+
+* Mandriva Linux Configuration:
+ You need to add two new files to your system. This only needs to be
+ done once. These files are available at the 'SpaceNavigator support with
+ udev and Linux input framework' section of
+ <http://www.aaue.dk/~janoc/index.php?n=Personal.Downloads>
+
+* Ubuntu or Gentoo Linux Configuration:
+ For a quick start, you can simply paste the following line into a terminal
+ before plugging in your SpaceNavigator - this only needs to be done once:
+ sudo bash -c 'echo KERNEL==\"event[0-9]*\", SYSFS{idVendor}==\"046d\", SYSFS{idProduct}==\"c626\", SYMLINK+=\"input/spacenavigator\", GROUP=\"plugdev\", MODE=\"664\" > /etc/udev/rules.d/91-spacenavigator-LL.rules ; echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><deviceinfo version=\"0.2\"><device><match key=\"info.product\" contains=\"3Dconnexion SpaceNavigator\"><merge key=\"input.x11_driver\" type=\"string\"></merge></match></device></deviceinfo>" > /etc/hal/fdi/policy/3Dconnexion_SpaceNavigator_LL.fdi'
+
+For more comprehensive Linux SpaceNavigator configuration information please
+see the section 'Installing SpaceNavigator without the official driver' here:
+<http://www.aaue.dk/~janoc/index.php?n=Personal.3DConnexionSpaceNavigatorSupport>
+
+JOYSTICKS: These should be automatically detected and configured on all
+modern distributions of Linux.
+
+ALL: Your joystick or SpaceNavigator should be plugged-in before you start the
+Second Life Viewer, so that it may be detected. If you have multiple input
+devices attached, only the first detected SpaceNavigator or joystick device
+will be available.
+
+Once your system recognises your joystick or SpaceNavigator correctly, you
+can go into the Second Life Viewer's Preferences dialog, click the 'Input &
+Camera' tab, and click the 'Joystick Setup' button. From here you may enable
+and disable joystick support and change some configuration settings such as
+sensitivity. SpaceNavigator users are recommended to click the
+'SpaceNavigator Defaults' button.
+
+KNOWN PROBLEMS
+-=-=-=-=-=-=-=
+
+* If your chosen version of Linux treats your joystick/SpaceNavigator as
+if it were a mouse when you plug it in (i.e. it is automatically used to control
+your desktop cursor), then the SL Viewer may detect this device *but* will be
+unable to use it properly.
+
+FURTHER PROBLEMS?
+-=-=-=-=-=-=-=-=-
+
+Please report further issues to the public Second Life issue-tracker
+at <http://jira.secondlife.com/> (please note, however, that this is not
+a support forum).
diff --git a/indra/newview/linux_tools/client-readme-voice.txt b/indra/newview/linux_tools/client-readme-voice.txt
index 7754a3a734..bfefdf3471 100644
--- a/indra/newview/linux_tools/client-readme-voice.txt
+++ b/indra/newview/linux_tools/client-readme-voice.txt
@@ -4,38 +4,31 @@ Second Life - Linux Voice Support README
WHAT IS IT?
-=-=-=-=-=-
-Linux Voice Support is a new feature in testing which allows users
-of the Linux Second Life client to participate in voice-chat with other
-residents and groups inside Second Life, with an appropriate
-headset/microphone.
-
-Linux Voice Support is currently EXPERIMENTAL and is known to still
-have some compatibility issues.
+Linux Voice Support is a feature in testing which allows users of the Linux
+Second Life client to participate in voice-chat with other residents and
+groups inside Second Life, with an appropriate headset/microphone.
REQUIREMENTS
-=-=-=-=-=-=
* A headset/microphone supported by your chosen version of Linux
-* The ALSA sound system (you probably already have this -
- i.e. the alsa-base and alsa-utils packages on Ubuntu)
+* At this time, the PulseAudio audio system is recommended; this software
+ is already part of most modern (2009+) Linux desktop systems. Alternatively,
+ the ALSA audio system may be used on systems installed from around
+ 2007 onwards (again this is likely already installed on your system).
-Success with Linux Voice support has been reported on the following
-systems:
-* Ubuntu 7.04 (Feisty) with USB Plantronics headset
-* Ubuntu 7.04 (Feisty) with Intel HDA audio chipset
-* Ubuntu 6.06 (Dapper) with Intel ICH5/CMI9761A+ audio chipset
-* Ubuntu 6.06 (Dapper) with SigmaTel STAC2997 audio chipset
-* Fedora Core 6 with (unknown) audio chipset
+TESTING YOUR SETTINGS
+-=-=-=-=-=-=-=-=-=-=-
-Problems with Linux Voice support have been reported on the following
-systems:
-* Ubuntu 6.06 (Dapper) with Creative EMU10K1 audio chipset
+* The Second Life region 'Voice Echo Canyon' is a great place for testing
+your hardware settings and quality - it will 'echo' your voice back to you
+when you speak.
KNOWN PROBLEMS
-=-=-=-=-=-=-=
-* The 'Input Level' meter in the Voice Chat Device Settings dialog
- does not respond to audio input.
+* Compatibility with old ALSA-based audio systems (such as Ubuntu Dapper
+ from 2006) is poor.
TROUBLESHOOTING
-=-=-=-=-=-=-=-
@@ -43,12 +36,11 @@ TROUBLESHOOTING
PROBLEM 1: I don't see a white dot over the head of my avatar or other
Voice-using avatars.
SOLUTION:
-a. Ensure that 'Enable voice chat' is enabled in the Voice Chat
- preferences window and that you are in a voice-enabled area (you
- will see a blue headphone icon in the SL menu-bar).
+a. Ensure that 'Enable voice' is enabled in the 'Sound' section of the
+ Preferences window, and that you are in a voice-enabled area.
b. If the above does not help, exit Second Life and ensure that any
remaining 'SLVoice' processes (as reported by 'ps', 'top' or similar)
- are killed.
+ are killed before restarting.
PROBLEM 2: I have a white dot over my head but I never see (or hear!) anyone
except myself listed in the Active Speakers dialog when I'm sure that other
@@ -67,12 +59,13 @@ c. Update to the latest version of ALSA manually. For a guide, see the
PROBLEM 3: I can hear other people, but they cannot hear me.
SOLUTION:
-a. Ensure that you have the 'Talk' button activated while you are trying to
- speak.
+a. Ensure that you have the 'Speak' button (at the bottom of the Second Life
+ window) activated while you are trying to speak.
b. Ensure that your microphone jack is inserted into the correct socket of your
sound card, where appropriate.
-c. Use your system mixer-setting program or the 'alsamixer' program to ensure
- that microphone input is set as the active input source and is not muted.
+c. Use your system mixer-setting program (such as the PulseAudio 'volume
+ control' applet or the ALSA 'alsamixer' program) to ensure that microphone
+ input is set as the active input source and is not muted.
d. Verify that audio input works in other applications, i.e. Audacity
PROBLEM 4: Other people just hear bursts of loud noise when I speak.
diff --git a/indra/newview/linux_tools/client-readme.txt b/indra/newview/linux_tools/client-readme.txt
index 87087be778..e01b9e4bc6 100644
--- a/indra/newview/linux_tools/client-readme.txt
+++ b/indra/newview/linux_tools/client-readme.txt
@@ -12,10 +12,10 @@ Life itself - please see <http://www.secondlife.com/whatis/>.
5. Troubleshooting
5.1. 'Error creating window.'
5.2. System hangs
- 5.3. 'Shiny' and client performance
+ 5.3. Blank window after minimizing it
5.4. Audio
5.5. 'Alt' key for camera controls doesn't work
- 5.6. In-world movie playback
+ 5.6. In-world streaming movie, music and Flash playback
6. Advanced Troubleshooting
6.1. Audio
6.2. OpenGL
@@ -53,11 +53,15 @@ Minimum requirements:
* Computer Memory: 512MB (recommended: 768MB or more)
* Linux Operating System: A reasonably modern 32-bit Linux environment
is required. If you are running a 64-bit Linux distribution then
- you will need its 32-bit compatibility environment installed.
+ you will need its 32-bit compatibility environment installed, but
+ this configuration is not currently supported.
+ * PulseAudio or ALSA Linux system sound software. A recent PulseAudio
+ is the recommended configuration; see README-linux-voice.txt for more
+ information.
* Video/Graphics Card:
o nVidia GeForce 2, GeForce 4mx, or better (recommend one of the
following: 6700, 6800, 7600, 7800, 7900, 8400, 8500, 8600,
- 8800, Go 7400, Go 7600, Go 7800, Go 7900)
+ 8800, Go 7400, Go 7600, Go 7800, Go 7900, +)
o OR ATI Radeon 8500, 9250, or better
(nVidia cards are recommended for the Linux client)
@@ -74,14 +78,15 @@ Life Linux client is very similar to that for Windows, as detailed at:
3. INSTALLING & RUNNING
-=-=-=-=-=-=-=-=-=-=-=-
-The Second Life Linux client entirely runs out of the directory you have
-unpacked it into - no installation step is required.
+The Second Life Linux client can entirely run from the directory you have
+unpacked it into - no installation step is required. If you wish to
+perform a separate installation step anyway, you may run './install.sh'
Run ./secondlife from the installation directory to start Second Life.
-For in-world MOVIE PLAYBACK, you will need GStreamer 0.10 installed on your
-system. This is optional - it is not required for general client
-functionality. If you have GStreamer 0.10 installed, the selection of
+For in-world MOVIE and MUSIC PLAYBACK, you will need (32-bit) GStreamer 0.10
+installed on your system. This is optional - it is not required for general
+client functionality. If you have GStreamer 0.10 installed, the selection of
in-world movies you can successfully play will depend on the GStreamer
plugins you have; if you cannot play a certain in-world movie then you are
probably missing the appropriate GStreamer plugin on your system - you may
@@ -95,26 +100,7 @@ you wish.
4. KNOWN ISSUES
-=-=-=-=-=-=-=-
-These are the most commonly-encountered known issues which are specific to
-the Beta release of the Linux client.
-
-* VISUAL EFFECTS AND PERFORMANCE - many Linux graphics drivers are not as
- robust as their counterparts for other operating systems, so some advanced
- Second Life graphical features have been DISABLED by default to aid
- stability. See PROBLEM 3 in the TROUBLESHOOTING section if you wish to
- turn these on to possibly enhance your experience.
-
-* MISC - The following features are not currently fully implemented on the
- Linux client and are therefore known not to work properly:
- * Full Unicode font rendering
-
-* UPLOAD / SAVE / COLOR-PICKER DIALOGS - These only appear when the client
- is in 'windowed' mode, not 'fullscreen' mode.
-
-* UPDATING - when the client detects that a new version of Second Life
- is available, it will ask you if you wish to download the new version.
- This option is not implemented; to upgrade, you should manually download a
- new version from the Second Life web site, <http://www.secondlife.com/>.
+* No significant known issues at this time.
5. TROUBLESHOOTING
@@ -122,10 +108,14 @@ the Beta release of the Linux client.
The client prints a lot of diagnostic information to the console it was
run from. Most of this is also replicated in ~/.secondlife/logs/SecondLife.log
-- this is helpful to read when troubleshooting, especially 'WARNING' lines.
+- this is helpful to read when troubleshooting, especially 'WARNING' and
+'ERROR' lines.
VOICE PROBLEMS? See the separate README-linux-voice.txt file for Voice
-troubleshooting information.
+ troubleshooting information.
+
+SPACENAVIGATOR OR JOYSTICK PROBLEMS? See the separate
+ README-linux-joystick.txt file for configuration information.
PROBLEM 1:- Second Life fails to start up, with a warning on the console like:
'Error creating window.' or
@@ -156,29 +146,21 @@ SOLUTION:- As a last resort, you can disable most of Second Life's advanced
graphics features by editing the 'secondlife' script and removing the '#'
from the line which reads '#export LL_GL_NOEXT=x'
-PROBLEM 3:- Performance or graphical quality are not as high as I expect.
-PROBLEM:- 'SHINY' doesn't work.
-PROBLEM:- I can't turn on Anisotropic Filtering, Ripple Water, or AGP.
-SOLUTION:- Some graphics performance features in Second Life are disabled
- by default for the Linux version due to stability issues with some common
- Linux graphic drivers. You can re-enable these features at the slight
- risk of decreasing system stability. To do so:
- * Edit the 'secondlife' script. Comment-out these lines by putting a '#'
- in front of them: 'export LL_GL_BASICEXT=x', 'export LL_GL_NOEXT=x',
- 'export LL_GL_BLACKLIST=abcdefghijklmno'.
- * Now start Second Life. Some advanced performance features will now be
- automatically used, and some new options in Preferences will now be
- available to you; there is no guarantee, however, that they will
- positively affect performance!
-SOLUTION:- If you are not running an official Second Life client obtained from
- secondlife.com, you should consider doing so as you may find its
- performance to be superior to third-party versions.
-
-PROBLEM 4:- Sound effects seem to 'lag' a fraction of a second behind
- actions.
-SOLUTION:- You may uncomment the 'LL_BAD_ESD' line in the 'secondlife' script
- to get more responsive audio. However, if you do this then you may
- encounter audio issues or a hang during login, so beware.
+PROBLEM 3:- After I minimize the Second Life window, it's just blank when
+ it comes back.
+SOLUTION:- Some Linux desktop 'Visual Effects' features are incompatible
+ with Second Life. One reported solution is to use your desktop
+ configuration program to disable such effects. For example, on Ubuntu 7.10,
+ use the desktop toolbar menu to select System -> Preferences -> Appearance,
+ then change 'Visual Effects' to 'None'.
+
+PROBLEM 4:- Music and sound effects are silent or very stuttery.
+SOLUTION:- The most common solution is to ensure that you have the 'esd'
+ program (part of the 'esound' package) installed and running before you
+ start Second Life. Users of Ubuntu (and some other) Linux systems can
+ simply run the following to install and configure 'esound':
+ sudo apt-get install esound
+ For others, simply running 'esd&' from a command-line should get it running.
PROBLEM 5:- Using the 'Alt' key to control the camera doesn't work or just
moves the Second Life window.
@@ -187,12 +169,15 @@ SOLUTION:- Some window managers eat the Alt key for their own purposes; you
example, the 'Windows' key!) which will allow the Alt key to function
properly with mouse actions in Second Life and other applications.
-PROBLEM 6:- In-world movie playback doesn't work for me.
+PROBLEM 6:- In-world movie, music, or Flash playback doesn't work for me.
SOLUTION:- You need to have a working installation of GStreamer 0.10; this
is usually an optional package for most versions of Linux. If you have
- installed GStreamer 0.10 and you can play some movies but not others then
- you need to install a wider selection of GStreamer plugins, either
- from your vendor or an appropriate third party.
+ installed GStreamer 0.10 and you can play some music/movies but not others
+ then you need to install a wider selection of GStreamer plugins, either
+ from your vendor (i.e. the 'Ugly' plugins) or an appropriate third party.
+ For Flash playback, you need to have Flash 10 installed for your normal
+ web browser (for example, Firefox). PulseAudio is required for Flash
+ volume control / muting to fully function inside Second Life.
6. ADVANCED TROUBLESHOOTING
@@ -201,11 +186,11 @@ SOLUTION:- You need to have a working installation of GStreamer 0.10; this
The 'secondlife' script which launches Second Life contains some
configuration options for advanced troubleshooters.
-* AUDIO - Edit the 'secondlife' script and you will see three audio
- options: LL_BAD_ESD, LL_BAD_OSS, LL_BAD_ALSA. Second Life tries to
- use ESD, OSS, then ALSA audio drivers in this order; you may uncomment
- the corresponding LL_BAD_* option to skip an audio driver which you
- believe may be causing you trouble.
+* AUDIO - Edit the 'secondlife' script and you will see these audio
+ options: LL_BAD_OPENAL_DRIVER, LL_BAD_FMOD_ESD, LL_BAD_FMOD_OSS, and
+ LL_BAD_FMOD_ALSA. Second Life tries to use OpenAL, ESD, OSS, then ALSA
+ audio drivers in this order; you may uncomment the corresponding LL_BAD_*
+ option to skip an audio driver which you believe may be causing you trouble.
* OPENGL - For advanced troubleshooters, the LL_GL_BLACKLIST option lets
you disable specific GL extensions, each of which is represented by a
diff --git a/indra/newview/linux_tools/handle_secondlifeprotocol.sh b/indra/newview/linux_tools/handle_secondlifeprotocol.sh
index 7ff86d1b93..203012132e 100755
--- a/indra/newview/linux_tools/handle_secondlifeprotocol.sh
+++ b/indra/newview/linux_tools/handle_secondlifeprotocol.sh
@@ -11,7 +11,7 @@ if [ -z "$URL" ]; then
fi
RUN_PATH=`dirname "$0" || echo .`
-cd "${RUN_PATH}"
+cd "${RUN_PATH}/.."
exec ./secondlife -url \'"${URL}"\'
diff --git a/indra/newview/linux_tools/install.sh b/indra/newview/linux_tools/install.sh
new file mode 100755
index 0000000000..c94510267a
--- /dev/null
+++ b/indra/newview/linux_tools/install.sh
@@ -0,0 +1,106 @@
+#!/bin/bash
+
+# Install the Second Life Viewer. This script can install the viewer both
+# system-wide and for an individual user.
+
+VT102_STYLE_NORMAL='\E[0m'
+VT102_COLOR_RED='\E[31m'
+
+SCRIPTSRC=`readlink -f "$0" || echo "$0"`
+RUN_PATH=`dirname "${SCRIPTSRC}" || echo .`
+tarball_path=${RUN_PATH}
+
+function prompt()
+{
+ local prompt=$1
+ local input
+
+ echo -n "$prompt"
+
+ while read input; do
+ case $input in
+ [Yy]* )
+ return 1
+ ;;
+ [Nn]* )
+ return 0
+ ;;
+ * )
+ echo "Please enter yes or no."
+ echo -n "$prompt"
+ esac
+ done
+}
+
+function die()
+{
+ warn $1
+ exit 1
+}
+
+function warn()
+{
+ echo -n -e $VT102_COLOR_RED
+ echo $1
+ echo -n -e $VT102_STYLE_NORMAL
+}
+
+function homedir_install()
+{
+ warn "You are not running as a privileged user, so you will only be able"
+ warn "to install the Second Life Viewer in your home directory. If you"
+ warn "would like to install the Second Life Viewer system-wide, please run"
+ warn "this script as the root user, or with the 'sudo' command."
+ echo
+
+ prompt "Proceed with the installation? [Y/N]: "
+ if [[ $? == 0 ]]; then
+ exit 0
+ fi
+
+ install_to_prefix "$HOME/.secondlife-install"
+ $HOME/.secondlife-install/etc/refresh_desktop_app_entry.sh
+}
+
+function root_install()
+{
+ local default_prefix="/opt/secondlife-install"
+
+ echo -n "Enter the desired installation directory [${default_prefix}]: ";
+ read
+ if [[ "$REPLY" = "" ]] ; then
+ local install_prefix=$default_prefix
+ else
+ local install_prefix=$REPLY
+ fi
+
+ install_to_prefix "$install_prefix"
+
+ mkdir -p /usr/local/share/applications
+ ${install_prefix}/etc/refresh_desktop_app_entry.sh
+}
+
+function install_to_prefix()
+{
+ test -e "$1" && backup_previous_installation "$1"
+ mkdir -p "$1" || die "Failed to create installation directory!"
+
+ echo " - Installing to $1"
+
+ cp -a "${tarball_path}"/* "$1/" || die "Failed to complete the installation!"
+}
+
+function backup_previous_installation()
+{
+ local backup_dir="$1".backup-$(date -I)
+ echo " - Backing up previous installation to $backup_dir"
+
+ mv "$1" "$backup_dir" || die "Failed to create backup of existing installation!"
+}
+
+
+if [ "$UID" == "0" ]; then
+ root_install
+else
+ homedir_install
+fi
diff --git a/indra/newview/linux_tools/launch_url.sh b/indra/newview/linux_tools/launch_url.sh
index d2c8919d46..404ea36f26 100755
--- a/indra/newview/linux_tools/launch_url.sh
+++ b/indra/newview/linux_tools/launch_url.sh
@@ -7,17 +7,15 @@
#
# On Unixoids we try, in order of decreasing priority:
# - $BROWSER if set (preferred)
-# - kfmclient openURL
+# - Default GNOME browser
+# - Default KDE browser
# - x-www-browser
-# - opera
-# - firefox
-# - mozilla
-# - netscape
+# - The first browser in $BROWSER_COMMANDS that is found.
URL="$1"
if [ -z "$URL" ]; then
- echo "Usage: $0 URL"
+ echo "Usage: $(basename "$0") URL"
exit
fi
@@ -47,46 +45,42 @@ if [ ! -z "$XBROWSER" ]; then
echo "$0: Trying some others..."
fi
-# else kfmclient
-# (embodies KDE concept of 'preferred browser')
-if which kfmclient >/dev/null; then
- kfmclient openURL "$URL" &
- exit
-fi
-
-# else x-www-browser
-# (Debianesque idea of a working X browser)
-if which x-www-browser >/dev/null; then
- x-www-browser "$URL" &
- exit
-fi
-
-# else opera
-# (if user has opera in their path, they probably went to the
-# trouble of installing it -> prefer it)
-if which opera >/dev/null; then
- opera "$URL" &
+# Launcher the default GNOME browser.
+if [ ! -z "$GNOME_DESKTOP_SESSION_ID" ] && which gnome-open >/dev/null; then
+ gnome-open "$URL" &
exit
fi
-# else firefox
-if which firefox >/dev/null; then
- firefox "$URL" &
+# Launch the default KDE browser.
+if [ ! -z "$KDE_FULL_SESSION" ] && which kfmclient >/dev/null; then
+ kfmclient openURL "$URL" &
exit
fi
-# else mozilla
-if which mozilla >/dev/null; then
- mozilla "$URL" &
- exit
-fi
-
-# else netscape
-if which netscape >/dev/null; then
- netscape "$URL" &
- exit
-fi
+# List of browser commands that will be tried in the order listed. x-www-browser
+# will be tried first, which is a debian alternative.
+BROWSER_COMMANDS=" \
+ x-www-browser \
+ firefox \
+ mozilla-firefox \
+ iceweasel \
+ iceape \
+ opera \
+ epiphany-browser \
+ epiphany-gecko \
+ epiphany-webkit \
+ epiphany \
+ mozilla \
+ seamonkey \
+ galeon \
+ dillo \
+ netscape"
+for browser_cmd in $BROWSER_COMMANDS; do
+ if which $browser_cmd >/dev/null; then
+ $browser_cmd "$URL" &
+ exit
+ fi
+done
echo '$0: Failed to find a known browser. Please consider setting the $BROWSER environment variable.'
-
-# end.
+exit 1
diff --git a/indra/newview/linux_tools/refresh_desktop_app_entry.sh b/indra/newview/linux_tools/refresh_desktop_app_entry.sh
new file mode 100755
index 0000000000..d2b2a732d5
--- /dev/null
+++ b/indra/newview/linux_tools/refresh_desktop_app_entry.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+SCRIPTSRC=`readlink -f "$0" || echo "$0"`
+RUN_PATH=`dirname "${SCRIPTSRC}" || echo .`
+
+install_prefix=${RUN_PATH}/..
+
+function install_desktop_entry()
+{
+ local installation_prefix="$1"
+ local desktop_entries_dir="$2"
+
+ local desktop_entry="\
+[Desktop Entry]\n\
+Name=Second Life\n\
+Comment=Client for the On-line Virtual World, Second Life\n\
+Exec=${installation_prefix}/secondlife\n\
+Icon=${installation_prefix}/secondlife_icon.png\n\
+Terminal=false\n\
+Type=Application\n\
+Categories=Application;Network;\n\
+StartupNotify=true\n\
+X-Desktop-File-Install-Version=3.0"
+
+ echo " - Installing menu entries in ${desktop_entries_dir}"
+ mkdir -vp "${desktop_entries_dir}"
+ echo -e $desktop_entry > "${desktop_entries_dir}/secondlife-viewer.desktop" || "Failed to install application menu!"
+}
+
+if [ "$UID" == "0" ]; then
+ # system-wide
+ install_desktop_entry "$install_prefix" /usr/local/share/applications
+else
+ # user-specific
+ install_desktop_entry "$install_prefix" "$HOME/.local/share/applications"
+fi
diff --git a/indra/newview/linux_tools/register_secondlifeprotocol.sh b/indra/newview/linux_tools/register_secondlifeprotocol.sh
index 4ab96f97d6..16e73cb854 100755
--- a/indra/newview/linux_tools/register_secondlifeprotocol.sh
+++ b/indra/newview/linux_tools/register_secondlifeprotocol.sh
@@ -7,10 +7,10 @@
HANDLER="$1"
RUN_PATH=`dirname "$0" || echo .`
-cd "${RUN_PATH}"
+cd "${RUN_PATH}/.."
if [ -z "$HANDLER" ]; then
- HANDLER=`pwd`/handle_secondlifeprotocol.sh
+ HANDLER=`pwd`/etc/handle_secondlifeprotocol.sh
fi
# Register handler for GNOME-aware apps
@@ -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
+
diff --git a/indra/newview/linux_tools/wrapper.sh b/indra/newview/linux_tools/wrapper.sh
index 070d45a5bb..d2df968544 100755
--- a/indra/newview/linux_tools/wrapper.sh
+++ b/indra/newview/linux_tools/wrapper.sh
@@ -4,21 +4,23 @@
## These options are for self-assisted troubleshooting during this beta
## testing phase; you should not usually need to touch them.
-## - Avoids using the ESD audio driver.
-#export LL_BAD_ESD=x
-
-## - Avoids using the OSS audio driver.
-#export LL_BAD_OSS=x
-
-## - Avoids using the ALSA audio driver.
-#export LL_BAD_ALSA=x
+## - Avoids using any OpenAL audio driver.
+#export LL_BAD_OPENAL_DRIVER=x
+## - Avoids using any FMOD audio driver.
+#export LL_BAD_FMOD_DRIVER=x
+
+## - Avoids using the FMOD ESD audio driver.
+#export LL_BAD_FMOD_ESD=x
+## - Avoids using the FMOD OSS audio driver.
+#export LL_BAD_FMOD_OSS=x
+## - Avoids using the FMOD ALSA audio driver.
+#export LL_BAD_FMOD_ALSA=x
## - Avoids the optional OpenGL extensions which have proven most problematic
## on some hardware. Disabling this option may cause BETTER PERFORMANCE but
## may also cause CRASHES and hangs on some unstable combinations of drivers
## and hardware.
-## NOTE: This is 'off' for WindLight to help testing. Hopefully it's not
-## really needed any more anyway.
+## NOTE: This is now disabled by default.
#export LL_GL_BASICEXT=x
## - Avoids *all* optional OpenGL extensions. This is the safest and least-
@@ -34,6 +36,14 @@
## LL_GL_BLACKLIST which solves your problems.
#export LL_GL_BLACKLIST=abcdefghijklmno
+## - Some ATI/Radeon users report random X server crashes when the mouse
+## cursor changes shape. If you suspect that you are a victim of this
+## driver bug, try enabling this option and report whether it helps:
+#export LL_ATI_MOUSE_CURSOR_BUG=x
+
+if [ "`uname -m`" = "x86_64" ]; then
+ echo '64-bit Linux detected.'
+fi
## Everything below this line is just for advanced troubleshooters.
##-------------------------------------------------------------------
@@ -44,7 +54,7 @@
## in the bin directory will be stripped: you should replace it with
## an unstripped binary before you run.
#export LL_WRAPPER='gdb --args'
-#export LL_WRAPPER='valgrind --smc-check=all --log-file=secondlife.vg --leak-check=full --suppressions=/usr/lib/valgrind/glibc-2.5.supp --suppressions=secondlife-i686.supp'
+#export LL_WRAPPER='valgrind --smc-check=all --error-limit=no --log-file=secondlife.vg --leak-check=full --suppressions=/usr/lib/valgrind/glibc-2.5.supp --suppressions=secondlife-i686.supp'
## - Avoids an often-buggy X feature that doesn't really benefit us anyway.
export SDL_VIDEO_X11_DGAMOUSE=0
@@ -57,6 +67,12 @@ if [ "$GTK_IM_MODULE" = "scim" ]; then
export GTK_IM_MODULE=xim
fi
+## - Automatically work around the ATI mouse cursor crash bug:
+## (this workaround is disabled as most fglrx users do not see the bug)
+#if lsmod | grep fglrx &>/dev/null ; then
+# export LL_ATI_MOUSE_CURSOR_BUG=x
+#fi
+
## Nothing worth editing below this line.
##-------------------------------------------------------------------
@@ -67,12 +83,14 @@ echo "Running from ${RUN_PATH}"
cd "${RUN_PATH}"
# Re-register the secondlife:// protocol handler every launch, for now.
-./register_secondlifeprotocol.sh
+./etc/register_secondlifeprotocol.sh
+
+# Re-register the application with the desktop system every launch, for now.
+./etc/refresh_desktop_app_entry.sh
+
## Before we mess with LD_LIBRARY_PATH, save the old one to restore for
## subprocesses that care.
-if [ "${LD_LIBRARY_PATH+isset}" = "isset" ]; then
- export SAVED_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}"
-fi
+export SAVED_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}"
if [ -n "$LL_TCMALLOC" ]; then
tcmalloc_libs='/usr/lib/libtcmalloc.so.0 /usr/lib/libstacktrace.so.0 /lib/libpthread.so.0'
@@ -92,9 +110,9 @@ if [ -n "$LL_TCMALLOC" ]; then
fi
fi
-export SL_ENV='LD_LIBRARY_PATH="`pwd`"/lib:"`pwd`"/app_settings/mozilla-runtime-linux-i686:"${LD_LIBRARY_PATH}"'
+export SL_ENV='LD_LIBRARY_PATH="`pwd`"/lib:"${LD_LIBRARY_PATH}"'
export SL_CMD='$LL_WRAPPER bin/do-not-directly-run-secondlife-bin'
-export SL_OPT="`cat gridargs.dat` $@"
+export SL_OPT="`cat etc/gridargs.dat` $@"
# Run the program
eval ${SL_ENV} ${SL_CMD} ${SL_OPT} || LL_RUN_ERR=runerr
@@ -104,8 +122,8 @@ if [ -n "$LL_RUN_ERR" ]; then
LL_RUN_ERR_MSG=""
if [ "$LL_RUN_ERR" = "runerr" ]; then
# generic error running the binary
- echo '*** Unclean shutdown. ***'
- if [ "`arch`" = "x86_64" ]; then
+ echo '*** Bad shutdown. ***'
+ if [ "`uname -m`" = "x86_64" ]; then
echo
cat << EOFMARKER
You are running the Second Life Viewer on a x86_64 platform. The