Firefox is, of course, one of the best browsers in the world, as well as my personal favorite. However, getting programs to your liking always takes a little bit of work. The resources below should expediate this process and shed some light on my personal configuration.

Note: When installing an extension from a site other than https://update.mozilla.org, it will be necessary to add the site to the "Allowed Sites" list by clicking on the button in the yellow bar that appears at the top of the browser window.

Setup

When installing Firefox using the installer, be sure to select the "Developer Tools" option if you want to be able to use extensions such as the DOM Inspector, the Web Developer extension, as well as other programming related extensions. Many people miss this and then get confused about how to enable such tools.

  • Update plugin symlinks in Linux from existing Mozilla installation

$> cd /usr/lib/mozilla-firefox/plugins && find /usr/lib/mozilla/plugins -type f -printf "%f\n" | xargs -i sudo ln -s /usr/lib/mozilla/plugins/{} {}

Extensions

These are some of my favorite extensions (aka plugins) for Firefox that I just cannot live without. I have made this page to serve as a reference for myself, but also to share with others the extensions that I find useful. I have split the list up into several categories based on user type. At times, I browse the web as an luser, requiring only the core functionality of the program. Even then I like my geek tools, which eliminate common annoyances that typical users wouldn’t even recognize or find useful. However, when I really get down to work, I play the role of ubergeek, requiring tools such as the javascript console, source view, and DOM structure. Finally, I list extensions which make firefox more than just a browser.

luser

geek

  • Mouse Gestures - Allows you to execute common commands (like forward/back) by performing mouse movements.

  • Tabbrowser Preferences - Enables enhanced control for tabbed browsing (tames links to work within the confines of tabs).

  • Popup Counter - Keeps tally of number of popups blocked.

  • Clear HTTP Auth - Clears HTTP authentication (duplicate feature exists in WebDeveloper extension)

  • Foxylicious - Integrates your del.icio.us bookmarks into the bookmarks menu.

  • Spellbound - Adds a spellchecking component to textareas and input boxes on web forms. (requires some setup effort)

  • Tab Dragging - Enables tabs to be reordered by dragging them (no visual indicator))

ubergeek

…​and beyond!

  • FoxyTunes - Control your media player from within firefox.

  • fireFTP - Completely integrated ftp client for firefox

Usability

Embrace mouse gestures!! I promise you, I am not just going on about some useless geek feature that I want you to try. Mouse gestures will practically change the way your browse (remember how much leg pulling had to be done to get tabs accepted?) It really isn’t hard at all. To take your first step, simply right click and shuffle your mouse to the left. As you can see, you just performed the most commonly used feature of the web browser, the back button. Everyone should be using mouse gestures. They are easy, ergonomic, and efficient. Use mouse gestures!!

There is one change I just cannot live without. I much prefer the Reload gesture to be GestureDown, GestureUp rather than the other way around. I find it much hard to do the push-pull motion. But perhaps it is just me!

Themes

Currently, my favorite theme for Firefox is PlastikFox!

Update: My theme interests have found a new home with Mostly Crystal!!

Update again: Lately I have just be using the default theme of Firefox, which integrates so nicely with Ubuntu’s beautiful desktop.

Chrome Modifications

There are many well documented UI changes that can be made by adding special definitions to the userChrome.css file in the profile directory of mozilla. The changes listed below are either additional modifications or a variant of the changes listed on the mozilla page.

Move Sidebar to Right

The suggestion on the mozilla page is to use the right-to-left directive on the hbox selector. However, this causes the cursor in the application to become bidirectional and has all the elements of a hack. After reporting a bug to bugzilla, I learned that there is a cleaner way to achieve this desired behavior by using a proprietary mozilla style, -moz-box-direction.

/* Place the sidebar on the right edge of the window  */
window > hbox
{
    -moz-box-direction: reverse;
}

Key Bindings and Mouse Configuration

Many browsers seemed to have picked up on VIM-style keybindings for scrolling up and down which, in my opinion, makes reading websites much more comfortable. The two keys of which I am speaking are k and j, respectively. These bindings can be added by creating the file userHTMLBindings.xml in the mozilla/firefox program directory ${mozilla}/res/builtin/ with the following contents:

<?xml version="1.0"?>

<!-- In order to work correctly, this file must be named -->
<!-- res/builtin/userHTMLBindings.xml in the mozilla tree. -->

<bindings id="htmlBindings"
   xmlns="http://www.mozilla.org/xbl"
   xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <binding id="browserUser">
    <handlers>
      <handler event="keypress" key="j" command="cmd_scrollLineDown"/>
      <handler event="keypress" key="k" command="cmd_scrollLineUp"/>
    </handlers>
  </binding>

</bindings>

In Gnome 2.8 (or just in Fedora, I don’t know for sure) the default for advancing the next or previous tab is Ctrl-Tab and Ctrl-Shift-Tab respectively. For users coming from KDE, this is a change since those key combinations typically toggle desktops. If you are not using Gnome and you would like to use these settings, an extension named SwiftTabs will give you this option. For now, I am sticking to the Gnome defaults.

If you use Firefox under Windows, this next part is automatic, but for the time being, getting all 7 buttons working requires some work under linux. Check out the follow tutorial for configuring the appropriate z-axis mapping.

Optimizations

For broadband users, Firefox can be made to render pages much faster by issuing http requests in parallel rather than one after the other. It is termed pipelining.

To edit these preferences you need to open the configuration page of Firefox by typing the following into the address bar: about:config

This will bring up a long list of Preferences. You can filter them by typing in the box labled "Filter": network.http.p

At this point, make the following 3 changes and one addition to the list:

  • find network.http.pipelining and toggle the value to true by selecting Toggle from the context menu

  • find network.http.proxy.pipelining and toggle the value to true by selecing Toggle from the context menu

  • find network.http.pipelining.maxrequest and change it’s value to 30

  • CTRL+Click in an empty area and select New > Integer from the context menu. Enter the name in a pop-up window: nglayout.initialpaint.delay and set it’s value to 500. (This value is the number of milliseconds firefox should wait before beginning to paint the page. You might want to experiment with it to find your preference.)

A also like to modify the typeaheadfind feature in ways that the preferences dialog does not permit. Below are the three changes I typically make (again, keys in the about:config dialog):

  • find accessibility.typeaheadfind and toggle the value to true by selecting Toggle from the context menu

  • find accessibility.typeaheadfind.autostart and toggle the value to false by selecting Toggle from the context menu

  • find accessibility.typeaheadfind.enabletimeout and toggle the value to false by selecting Toggle from the context menu

Tricks

When working with tabs often, tab management becomes somewhat of an issue, if you are not aware of all the possible ways to manipulate them in advanced ways. First off, you should defintion get the tabbrowser preferences extension listed above, which adds all sorts of scenarios to the tabbrowsing preferences. With that in place, the following tricks will really help you to keep your tabs under wrap.

  • double-clicking on the tab bar will create a new tab at the end of the set

  • hitting ALT+Enter in either the search box or the location bar will open the resulting page in a new tab

  • middle clicking a link will open that link in a new tab

  • CTRL+k and CTRL+l will select and highlight the search box and the location bar, respectively (a huge time saver)

  • control when close button appears on tabs - browser.tabs.closeButtons

Resources