Safari + GreaseKit + Auto BBC Self for Gmail. Oh, and Fluid Too
Tue Jun 17th 2008, 3:35pm
I keep trying Firefox, but ultimately I keep coming back to Safari. Safari is faster, less system resource intensive, and looks and feels better on the Mac. Firefox 3 has come a very, very long way since version 2 (kudos to you guys for continually trying), but still, it's just not as nice of a browser as Safari.

Unfortunately, running Safari means living in the minority and running into those occasional issues. People don't test their sites with Safari. Safari is less forgiving, so crappy html/javascript/css that works in IE or Firefox sometimes doesn't work in Safari.

And finally, we miss out on the single biggest thing Firefox has going for it: the wealth of community-driven addons and extensions. While there are a few I miss, the basics are there, and they're really all you need. Here are a few: Unfortunately, Gmail Auto BCC (a handy GreaseMonkey script to always bcc yourself on GMail, since Gmail currently doesn't offer this feature) does not work in GreaseKit. It uses a persistence API that GreaseKit had to remove for security reasons a while ago (hopefully it will come back soon).

So in its place, I present a slimmer, cleaner "Gmail Auto Self BCC" GreaseMonkey/Kit script (that works in Safari, of course) that simply populates your From address into the bcc field whenever you hit Send in GMail. The source is below, or you can download it here. Compare this source code to the original, from which I borrowed some ideas.

On a related note, I recently gave Firefox another try for a couple weeks. What finally got me to switch back to Safari/Webkit was Fluid. Fluid allows you to create standalone apps out of any web page. Now I can have standalone, dockable apps for Gmail (work and home), Calendar, Reader, and not have any of my testing and development work in Safari or Firefox hang or crash or otherwise mess them up. It's awesome.
// ==UserScript==
// @name          Gmail Auto Self BCC
// @namespace
// @description   Automatically copy your From address into the bcc field (done upon
hitting Send) so all mail you originate shows up in your Inbox.  For GMail v2.
// @include       http*://*
// ==/UserScript==

window.addEventListener("load", loader, false);

function loader() {
   var api = typeof unsafeWindow != "undefined" && unsafeWindow.gmonkey ||
             (frames.js ? frames.js.gmonkey : null);
   if (api) api.load("1.0", init);

function init(gmail) {

   function findElement(root, name) {
      var elts = root.getElementsByName(name);
      return elts ? elts[0] : null;

   function handleClicks(event) {
      var elt =;
      if (elt.innerText == 'Send') {
         var fromElt = findElement(elt.ownerDocument, 'from');
         if (fromElt) {
            var bccElt = findElement(elt.ownerDocument, 'bcc');
            if (bccElt) {
               var re = new RegExp(fromElt.value);
               if (!bccElt.value.match(re)) {
                  bccElt.value = bccElt.value ? bccElt.value + ', ' + fromElt.value :
   function viewChanged() {
      var view = gmail.getActiveViewType();
      if (view == 'co' || view == 'cv') {
         var root = gmail.getNavPaneElement().ownerDocument;
         root.addEventListener('click', handleClicks, true);


Visitor comments
On Sun Aug 24th 2008, 8:57am, rainbow posted:
Hi,i tried ur script.
But it needs to click [add bcc] before i send mail.if i forget to click [add bcc],the mail wont bcc myself.

On Fri Feb 6th 2009, 8:41am, raleigh posted:
How are you running two GMail apps using two different logins? I thought that Fluid apps shared cookie info...

On Fri Feb 6th 2009, 9:22am, Steve Kehlet posted:
raleigh, no idea, it just seems to work. I have work email, home email, and google reader, each with a different google login.