Mozilla Start Script for LinuxPosted by: Andrew SmithPoster contact info: andrew at littlesvr ca Author: SuSE Team Originally published: http://www.novell.com/linux/suse/ Software: Linux All, Mozilla 1.7.8 Right I finally went out and found a mozilla script that works. Got it from a SuSE 9.3 installation. (/opt/mozilla/bin/mozilla.sh) I use slackware but I don't see why this shouldn't work on every distribution. The problem is that mozilla, when run the second time, will come up with the profile manager and when you click ok give you an error like this: Mozilla cannot use the profile "default" because it is in use. The mozilla guys really did a nice job with that browser but i don't know what came over them to make it do this. It does the same whether you installed it from distribution packages or the tarball form mozilla.org Create this the file /usr/local/bin/mozilla, make it executable and put the following script into it:#!/bin/sh
#
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
# Wolfgang Rosenauer <wolfgang.rosenauer@suse.com>
#
##
## Usage:
##
## $ mozilla
##
## This script is meant to run a mozilla program from the mozilla
## rpm installation.
##
## The script will setup all the environment voodoo needed to make
## mozilla work.
cmdname=`basename $0`
## don't leave any core files around
ulimit -c 0
##
## Variables
##
MOZ_DIST_BIN="/usr/local/mozilla"
MOZ_DIST_LIB="/usr/local/mozilla"
MOZ_APPNAME="mozilla"
MOZ_PROFILE=".mozilla"
MOZ_PROGRAM="$MOZ_DIST_LIB/$MOZ_APPNAME-bin"
MOZ_CLIENT_PROGRAM="$MOZ_DIST_LIB/mozilla-xremote-client"
# enigmail should honor env
export ENIGMAIL_PASS_ENV=http_proxy
# configure printers
if [ -z "$MOZILLA_POSTSCRIPT_PRINTER_LIST" ]; then
test -x /usr/bin/lpstat && \
/usr/bin/lpstat -h localhost >/dev/null 2>&1 && \
export MOZILLA_POSTSCRIPT_PRINTER_LIST="default $( \
lpstat -p | cut -d ' ' -f 2 | tr '\n' ' ' )"
fi
# MOZ_NEWURL can be
# overwrite for loading new URLs in active windows
# new-window for opening new windows (default)
# new-tab for opening URL in a new tab
if [ -z "$MOZ_NEWURL" ]; then
MOZ_NEWURL="new-window"
fi
if [ -z "$MOZ_DEBUG" ]; then
DEBUG=0
else
DEBUG=$MOZ_DEBUG
fi
[ $DEBUG -eq 0 ] && DEVNULL="2>/dev/null >/dev/null"
##
## Set MOZILLA_FIVE_HOME
##
MOZILLA_FIVE_HOME="$MOZ_DIST_LIB"
export MOZILLA_FIVE_HOME
##
## Set LD_LIBRARY_PATH
##
if [ "$LD_LIBRARY_PATH" ]
then
LD_LIBRARY_PATH=$MOZ_DIST_LIB/plugins:$MOZ_DIST_LIB:$LD_LIBRARY_PATH
else
LD_LIBRARY_PATH=$MOZ_DIST_LIB/plugins:$MOZ_DIST_LIB
fi
export LD_LIBRARY_PATH
## Make sure that we set the plugin path for backwards compatibility
## Set MOZ_PLUGIN_PATH to $HOME/.mozilla/plugins if not set
##
if [ -z "$MOZ_PLUGIN_PATH" ]; then
export MOZ_PLUGIN_PATH=$MOZILLA_FIVE_HOME/plugins
if [ "$HOME" ] ; then
export MOZ_PLUGIN_PATH=$HOME/$MOZ_PROFILE/plugins:$MOZ_PLUGIN_PATH
fi
fi
##
## Autodetect language
##
grep -q $HOME/$MOZ_PROFILE $HOME/$MOZ_PROFILE/appreg > /dev/null 2>/dev/null
SET_LANG=$?
if [ "$HOME" -a "$LANG" -a "$SET_LANG" != "0" -a -r "$MOZILLA_FIVE_HOME/chrome/locale.alias" ]; then
MOZ_LANG=`grep -E "^$LANG[[:space:]]" $MOZILLA_FIVE_HOME/chrome/locale.alias | tr -s "[:blank:]" | cut -f 2`
for i in "$@";do
[ "$i" = "-UILocale" ] && MOZ_LANG=""
done
if [ "$MOZ_LANG" -a -r "$MOZILLA_FIVE_HOME/chrome/$MOZ_LANG.jar" ]; then
MOZ_LANG="-UILocale $MOZ_LANG"
else
unset MOZ_LANG
fi
fi
function check_running() {
if [ "$MOZ_APPNAME" = "mozilla" ]; then
$MOZ_CLIENT_PROGRAM 'ping()' 2>/dev/null >/dev/null
RETURN_VAL=$?
if [ "$RETURN_VAL" -eq "2" ]; then
# not running
echo 0
return 0
elif [ "$RETURN_VAL" -eq "1" ]; then
# DISPLAY unusable
echo 2
return 2
else
# running
echo 1
return 1
fi
else
echo 0
return 0
fi
}
function open_mail() {
if [ "${ALREADY_RUNNING}" -eq "1" ]; then
exec $MOZ_CLIENT_PROGRAM 'xfeDoCommand(openInbox)'
else
exec $MOZ_PROGRAM "$@"
fi
}
function open_compose() {
if [ "${ALREADY_RUNNING}" -eq "1" ]; then
exec $MOZ_CLIENT_PROGRAM 'xfeDoCommand(composeMessage)'
else
exec $MOZ_PROGRAM "$@"
fi
}
# check to see if there's an already running instance or not
ALREADY_RUNNING=`check_running`
if [ "${ALREADY_RUNNING}" -eq "2" ]; then
echo "DISPLAY empty or unusable"
echo "DISPLAY=$DISPLAY"
exit 1
fi
# debugging output
if [ $DEBUG -ne 0 ]; then
echo "DEBUG:"
echo " MOZ_APPNAME=$MOZ_APPNAME"
echo " MOZ_PROFILE=$MOZ_PROFILE"
echo "MOZILLA_FIVE_HOME=$MOZILLA_FIVE_HOME"
echo " LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
echo " DISPLAY=$DISPLAY"
echo " FONTCONFIG_PATH=$FONTCONFIG_PATH"
echo "MOZILLA_POSTSCRIPT_PRINTER_LIST=$MOZILLA_POSTSCRIPT_PRINTER_LIST"
[ "${ALREADY_RUNNING}" -eq "1" ] && \
echo "using an already running Mozilla"
fi
# If there is no command line argument at all then try to open a new
# window in an already running instance.
if [ "${ALREADY_RUNNING}" -eq "1" ] && [ -z "$1" ]; then
exec $MOZ_CLIENT_PROGRAM "xfeDoCommand(openBrowser)"
fi
# if there's no command line argument and there's not a running
# instance then just fire up a new copy of the browser
if [ -z "$1" ]; then
exec $MOZ_PROGRAM
fi
unset RETURN_VAL
# If there's a command line argument but it doesn't begin with a -
# it's probably a url. Try to send it to a running instance.
USE_EXIST=0
opt="$1"
case "$opt" in
-mail)
open_mail ${1+"$@"}
;;
-compose)
open_compose ${1+"$@"}
;;
-*) ;;
*) USE_EXIST=1 ;;
esac
if [ "${USE_EXIST}" -eq "1" ] && [ "${ALREADY_RUNNING}" -eq "1" ]; then
# check to make sure that the command contains at least a :/ in it.
echo $opt | grep -e ':/' 2>/dev/null > /dev/null
RETURN_VAL=$?
if [ "$RETURN_VAL" -eq "1" ]; then
# if it doesn't begin with a '/' and it exists when the pwd is
# prepended to it then append the full path
echo $opt | grep -e '^/' 2>/dev/null > /dev/null
RETURN_VAL=$?
if [ "${RETURN_VAL}" -ne "0" ] && [ -e "`pwd`/$opt" ]; then
opt="`pwd`/$opt"
fi
fi
if [ "$MOZ_NEWURL" = "new-window" -o "$MOZ_NEWURL" = "new-tab" ]; then
$MOZ_CLIENT_PROGRAM "openurl($opt,$MOZ_NEWURL)" || \
exec $MOZ_PROGRAM $MOZ_LANG "$opt"
exit 0
else
$MOZ_CLIENT_PROGRAM "openurl($opt)" || \
exec $MOZ_PROGRAM $MOZ_LANG "$opt"
exit 0
fi
fi
if [ "${USE_EXIST}" -eq "1" ]; then
echo $opt | grep -e ':/' 2>/dev/null > /dev/null
RETURN_VAL=$?
if [ "$RETURN_VAL" -eq "1" ]; then
echo $opt | grep -e '^/' 2>/dev/null > /dev/null
RETURN_VAL=$?
if [ "${RETURN_VAL}" -ne "0" ] && [ -e "`pwd`/$opt" ]; then
opt="`pwd`/$opt"
fi
fi
exec $MOZ_PROGRAM $MOZ_LANG "$opt"
else
exec $MOZ_PROGRAM $MOZ_LANG ${1+"$@"}
fiNote that you might have to change one or two variables. I extracted an official mozilla tarball from mozilla.org into /usr/local/mozilla/ so both my MOZ_DIST_BIN and MOZ_DIST_LIB point there.Also note that if you already have a mozilla executable in your path you will have a problem. To solve it without deleting files execute /usr/local/bin/mozilla instead of mozilla.I tested this with opening browser and mail windows, opening urls and files from the command line so I'd say it works pretty well. Enjoy. |