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+"$@"} fi Note 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. |