As far as the profile thing is concerned, firefox won't let you load two separate instances of firefox with the same profile. To get around it, use this shell script to start firefox, instead of starting the executable directly:
Code:
#! /bin/sh
# find pid of running moz, if any, for current user
PID=`ps -ef | grep $USER | grep firefox-bin |\
grep -v "grep" | awk '{print $2}'`
# if moz is not running, start normally
if [ $PID="" ]; then
/path/to/firefox/executable $1;
# otherwise, open url in a new window
else
/path/to/firefox/executable -remote "openurl($1,new-tab)";
fi
This checks your process list to see if firefox is already running, and if it is then it opens a new tab in the already running window. You can make it open a new window instead by changing the "new-tab" part to "new-window", personally I like to keep everything in the one window though. You'll need to change your path to the firefox executable as well. In your firefox directory there is both a firefox and a firefox-bin executable, point the script to the plain firefox one. When you are configuring other apps to open a browser window, point them at this script rather than directly at your firefox executable.