Cover image for Firefox Hacks

Book description

Firefox Hacks is ideal for power users who want to take full advantage of Firefox from Mozilla, the next-generation web browser that is rapidly subverting Internet Explorer's once-dominant audience. It's also the first book that specifically dedicates itself to this technology. Firefox is winning such widespread approval for a number of reasons, including the fact that it lets users browse faster and more efficiently. Perhaps its most appealing strength, though, is its increased security something that is covered in great detail in Firefox Hacks. Clearly the web browser of the future, Firefox includes most of the features that browser users are familiar with, along with several new features, such as a bookmarks toolbar and tabbed pages that allow users to quickly switch among several web sites. Firefox Hacks offers all the valuable tips and tools you need to maximize the effectiveness of this hot web application. It's all covered, including how to customize its deployment, appearance, features, and functionality. You'll even learn how to install, use, and alter extensions and plug-ins. Aimed at clever people who may or may not be capable of basic programming tasks, this convenient resource describes 100 techniques for 100 strategies that effectively exploit Firefox. Or, put another way, readers of every stripe will find all the user-friendly tips, tools, and tricks they need to make a productive switch to Firefox. With Firefox Hacks, a superior and safer browsing experience is truly only pages away. The latest in O'Reilly's celebrated Hacks series, Firefox Hacks smartly complements other web-application titles such as Google Hacks and PayPal Hacks.

Table of Contents

  1. Firefox Hacks
    1. SPECIAL OFFER: Upgrade this ebook with O’Reilly
    2. Credits
      1. About the Author
      2. Contributors
      3. Acknowledgments
    3. Preface
      1. Why Firefox Hacks?
      2. How to Use This Book
      3. How This Book Is Organized
      4. Conventions Used in This Book
      5. Using Code Examples
      6. Safari® Enabled
      7. How to Contact Us
      8. Got a Hack?
    4. 1. Firefox Basics
      1. 1.1. Hacks 1-10
      2. 1.2. Get Oriented
        1. 1.2.1. Finding Firefox Files After Installation
        2. 1.2.2. Installing an Extension
          1. 1.2.2.1. Installing from update.mozilla.org
          2. 1.2.2.2. Installing from elsewhere
        3. 1.2.3. Setting a Preference with about:config
      3. Hack #1. Ten Ways to Display a Web Page
        1. 1.3.1. Normal Browser Window
        2. 1.3.2. Source Code Window
        3. 1.3.3. window.open( )
        4. 1.3.4. Full Screen or Kiosk Mode
        5. 1.3.5. Chrome-Free Windows
        6. 1.3.6. Print Preview
        7. 1.3.7. User-Customized
        8. 1.3.8. DOM Hierarchy
        9. 1.3.9. Debug-Enabled
        10. 1.3.10. Splash Screens
      4. Hack #2. Ten Ways to Navigate to a Web Page
        1. 1.4.1. Click on a Link
        2. 1.4.2. Click on a Bookmark Icon
        3. 1.4.3. Put Something in the Location Bar
        4. 1.4.4. Pick Something from Your History
        5. 1.4.5. Copy and Paste
        6. 1.4.6. Caret Browsing
        7. 1.4.7. Drag and Drop
        8. 1.4.8. Use the Menu Bar
        9. 1.4.9. Switch Between Windows and Tabs
        10. 1.4.10. Use Accessibility Devices
      5. Hack #3. Find Stuff
        1. 1.5.1. Search a Displayed Web Page
        2. 1.5.2. Search Web Page Source
        3. 1.5.3. Search Your History
        4. 1.5.4. Search Your Bookmarks
        5. 1.5.5. Search for Lost Logins
        6. 1.5.6. Search the Web
        7. 1.5.7. Search for Firefox Preferences
      6. Hack #4. Identify and Use Toolbar Icons
      7. Hack #5. Use Keyboard Shortcuts
      8. Hack #6. Make Firefox Look Different
      9. Hack #7. Stop Once-Only Dialogs Safely
      10. Hack #8. Flush and Clear Absolutely Everything
        1. 1.10.1. Dispose of Ordinary Web Surfing Information
        2. 1.10.2. Dispose of Everything Else via the User Interface
        3. 1.10.3. Dispose of Everything via the Filesystem
        4. 1.10.4. Strip the Firefox Install Area of Extras
        5. 1.10.5. See Also
      11. Hack #9. Make Firefox Go Fast
        1. 1.11.1. Fix Dial-Up Modem Bottlenecks
        2. 1.11.2. Overclock Firefox
          1. 1.11.2.1. Speed up network access
          2. 1.11.2.2. Speed up page display
        3. 1.11.3. Expand Your Caching
        4. 1.11.4. Start Up Faster
        5. 1.11.5. Ultimate Speed Improvements
      12. Hack #10. Start Up from the Command Line
        1. 1.12.1. See Also
    5. 2. Security
      1. 2.1. Hacks 11-21
      2. Hack #11. Drop Miscellaneous Security Blocks
        1. 2.2.1. Supply Passwords Automatically
        2. 2.2.2. Allow Foreign Code to Run
          1. 2.2.2.1. Turn on ActiveX
          2. 2.2.2.2. Turn on more plug-in and helper support
        3. 2.2.3. Drop Browser Security Hobbles
        4. 2.2.4. Remove Profile Salting
        5. 2.2.5. Update Firefox Automatically
      3. Hack #12. Raise Security to Protect Dummies
      4. Hack #13. Stop All Secret Network Activity
        1. 2.4.1. Stop Secret Updates
        2. 2.4.2. Stop Secret Submissions
        3. 2.4.3. Stop Not-So-Secret Background Downloads
      5. Hack #14. Work with Single Sign-On Servers
        1. 2.5.1. The Single Sign-On Technology Jungle
          1. 2.5.1.1. Locating standards
          2. 2.5.1.2. Brand names and standards
        2. 2.5.2. Single Sign-On: The Easy Way
        3. 2.5.3. Single Sign-On: The Hard Way
      6. Hack #15. Work with Web Proxies
        1. 2.6.1. Overview of Proxy Options
        2. 2.6.2. Setting Up Direct Connects and Static Proxies
        3. 2.6.3. Setting Up Scripted PAC Proxies
        4. 2.6.4. Setting Up WPAD Proxies
      7. Hack #16. Fine-Tune Ports and Sockets
        1. 2.7.1. Disallow Ports
        2. 2.7.2. Set Socket Limits
      8. Hack #17. Manage Digital Certificates
        1. 2.8.1. Examining Existing Certificates and Authorities
        2. 2.8.2. Adding More CA Certificates
        3. 2.8.3. Rejecting Certificates with CRLs and OSCP
      9. Hack #18. Digitally Sign Content
        1. 2.9.1. Get Oriented on Security Concepts
        2. 2.9.2. Get Signing Tools
        3. 2.9.3. Sign Content for Test Purposes
        4. 2.9.4. Sign Content for Publication
        5. 2.9.5. Do Something with Trusted Content
      10. Hack #19. Grant Trust with Master Certificates
        1. 2.10.1. Master Certificate Concepts
        2. 2.10.2. Deploying Master Certificates
        3. 2.10.3. Delegating Trust to Others
        4. 2.10.4. Alternatives to Master Certificates
      11. Hack #20. Restrict Script Behavior with Policies
        1. 2.11.1. Capabilities and Policies
        2. 2.11.2. Make a Policy
        3. 2.11.3. Using a Policy from a Signed Script
      12. Hack #21. Make Yourself Anonymous
        1. 2.12.1. Basic Web Surfing Strategies
        2. 2.12.2. Firefox Changes to Support Anonymity
    6. 3. Installation
      1. 3.1. Hacks 22-32
      2. Hack #22. Edit Configuration Files
        1. 3.2.1. Files in the Install Area
        2. 3.2.2. Files in the Profile Area
      3. Hack #23. Play With the Preference System
        1. 3.3.1. Understanding the Preference Database
        2. 3.3.2. Tweaking Preferences with about:config
        3. 3.3.3. Spotting Files that Contribute to Preferences
        4. 3.3.4. Modifying Preference Files
      4. Hack #24. Install Complementary Tools
        1. 3.4.1. Managing Plug-ins and Java
        2. 3.4.2. Finding Substitutes for Application Suite Features
        3. 3.4.3. Top Two Helper Applications
      5. Hack #25. Migrate Firefox Profiles
        1. 3.5.1. Migrating Between Identical Platforms
        2. 3.5.2. Migrating Between Mozilla Versions
        3. 3.5.3. Migrating Between Different Operating System Versions
        4. 3.5.4. Migrating Between Different Operating System Users
        5. 3.5.5. Migrating Between Windows and Linux
      6. Hack #26. Dial Up Automatically on Startup
        1. 3.6.1. Windows 95/98/98SE/ME
        2. 3.6.2. Windows NT/2000/XP
        3. 3.6.3. Mac OS X
        4. 3.6.4. Linux/Unix
      7. Hack #27. Fix Web Servers to Support Firefox Content
        1. 3.7.1. Configuring Firefox Content Types in Apache
        2. 3.7.2. Supporting Both Standards and Internet Explorer
          1. 3.7.2.1. PHP content rewriter
          2. 3.7.2.2. Perl CGI content rewriter
          3. 3.7.2.3. Native Apache rewriter
      8. Hack #28. Prepare Firefox for Wide Deployment
        1. 3.8.1. Getting Leverage on Windows File Paths
        2. 3.8.2. Using the Standard Install
        3. 3.8.3. Imaging an Instance of Firefox
        4. 3.8.4. Customizing the Install
          1. 3.8.4.1. Preinstall: change the install bundle
          2. 3.8.4.2. During install: customize user profile creation
          3. 3.8.4.3. Post-install: overwrite files on login
      9. Hack #29. Remotely Manage User Configurations
        1. 3.9.1. Locking Files Using the Operating System
        2. 3.9.2. Surviving Special Preference Configuration Rules
        3. 3.9.3. Locking Preferences Using ReadConfig
        4. 3.9.4. Updating Preferences Using AutoConfig
        5. 3.9.5. Handling Failover Scenarios
      10. Hack #30. Install Fonts and Character Support
        1. 3.10.1. Installing Good Fonts
        2. 3.10.2. Selecting Good Language Fonts
        3. 3.10.3. Overriding Web Page Fonts
        4. 3.10.4. Knowing How Firefox Selects Fonts
        5. 3.10.5. Using Character References and Entities
      11. Hack #31. Take Firefox with You
        1. 3.11.1. Laptop
        2. 3.11.2. Server-Based VPN
        3. 3.11.3. Roaming VPN
        4. 3.11.4. Mobile Consumer Devices
        5. 3.11.5. USB Drive
          1. 3.11.5.1. Get PortableFirefox
          2. 3.11.5.2. Use a USB launcher
          3. 3.11.5.3. Build a USB-aware Firefox
        6. 3.11.6. RAM Drive
      12. Hack #32. Work with Filtering Systems
    7. 4. Web Surfing Enhancements
      1. 4.1. Hacks 33-43
      2. Hack #33. Use Fancy Bookmarks
        1. 4.2.1. Use Tab Group Bookmarks
        2. 4.2.2. Use Sidebar Bookmarks
        3. 4.2.3. Use Keyword Bookmarks
        4. 4.2.4. Live Bookmarks
      3. Hack #34. Modify Tabbed Browsing
        1. 4.3.1. Tabbed-Browsing Preferences
          1. 4.3.1.1. Links from other applications
          2. 4.3.1.2. Loading tabs in the foreground or background
          3. 4.3.1.3. Getting rid of tabs when there's only one
          4. 4.3.1.4. Single Window mode
        2. 4.3.2. Extensions that Alter Tabbed Browsing
          1. 4.3.2.1. Tabbrowser Preferences
          2. 4.3.2.2. Quick Tab Pref Toggle
          3. 4.3.2.3. Magpie
        3. 4.3.3. Tabbrowser Extension: A Complete Tabbing Overhaul
      4. Hack #35. Govern Image and Ad Display
        1. 4.4.1. Block Images and Advertising Content
          1. 4.4.1.1. Using standard features
          2. 4.4.1.2. Using the Adblock extension
        2. 4.4.2. Manage the Way Images Are Displayed
      5. Hack #36. Get More Search Tools
        1. 4.5.1. Adding Search Engines
        2. 4.5.2. Searching Without the Search Box
        3. 4.5.3. Anatomy of a Search Plug-in
          1. 4.5.3.1. The <search> tag
          2. 4.5.3.2. The <input> tags
          3. 4.5.3.3. The <interpret> tag
          4. 4.5.3.4. The <browser> tag
      6. Hack #37. Get More Feeds and News
        1. 4.6.1. Get Feeds with Sage
          1. 4.6.1.1. Setting up the feed system
          2. 4.6.1.2. Adding feeds
          3. 4.6.1.3. Show the content
        2. 4.6.2. Get Weather News with ForecastFox
          1. 4.6.2.1. Setting a location
          2. 4.6.2.2. Tweaking the display
          3. 4.6.2.3. Customizing tooltips and labels
      7. Hack #38. Add Stuff to Your Toolbars
        1. 4.7.1. Try InfoLister
          1. 4.7.1.1. Displaying the InfoLister window
          2. 4.7.1.2. Customizing the page
          3. 4.7.1.3. Saving the page
        2. 4.7.2. Try Gmail Notifier
          1. 4.7.2.1. Installing Gmail Notifier
          2. 4.7.2.2. Getting to your inbox
          3. 4.7.2.3. Gmail Notifier preferences
          4. 4.7.2.4. Gmail tips
      8. Hack #39. Upgrade Firefox Feature Managers
      9. Hack #40. Integrate Firefox with Other Tools
        1. 4.9.1. Integrate Email and News
        2. 4.9.2. Integrate Email Message Counts
        3. 4.9.3. Integrate IRC
        4. 4.9.4. Integrate Everything Else with Launchy
      10. Hack #41. Create Your Own Search Plug-in
        1. 4.10.1. Building the Plug-in
        2. 4.10.2. Installing the Plug-in
      11. Hack #42. Spider the Web with Firefox
        1. 4.11.1. Save One Complete Page
          1. 4.11.1.1. Saving using Web Page Complete
          2. 4.11.1.2. Saving using Print
        2. 4.11.2. Save Lots of Pages
          1. 4.11.2.1. Down Them All
          2. 4.11.2.2. Magpie
          3. 4.11.2.3. Slogger
        3. 4.11.3. Learning from the Master
      12. Hack #43. Waste Time with Toys and Games
        1. 4.12.1. Messing Around with Games
          1. 4.12.1.1. Text adventures
          2. 4.12.1.2. Card games
          3. 4.12.1.3. Console games
        2. 4.12.2. Stretching Your Wings with Gestures and Pie Menus
    8. 5. Power Tools for Web Developers
      1. 5.1. Hacks 44-57
      2. Hack #44. Tweak and Troubleshoot CSS Designs
        1. 5.2.1. Install Must-Have Extensions
        2. 5.2.2. Use the Web Developer Toolbar to Locate Style Rules
        3. 5.2.3. Use the DOM Inspector to Find Inherited Values
        4. 5.2.4. Edit CSS in Firefox
      3. Hack #45. Use Gecko CSS Style Magic
        1. 5.3.1. Add Fancy Borders
        2. 5.3.2. Add Fancy Colors
        3. 5.3.3. Add Unbreakable Fonts
        4. 5.3.4. Add Fancy Blending
      4. Hack #46. Write Compatible CSS
        1. 5.4.1. Remove Older Browsers from the Problem Space
          1. 5.4.1.1. Deny style access to Netscape 4.x and earlier
          2. 5.4.1.2. Deny style access to Internet Explorer 5.x on Windows
          3. 5.4.1.3. Deny style access to Internet Explorer 5 on the Mac
        2. 5.4.2. Make CSS Work Across All Modern Browsers
          1. 5.4.2.1. Display contracts
          2. 5.4.2.2. Viewport
          3. 5.4.2.3. Box model
      5. Hack #47. Update Browser Detection Scripts
        1. 5.5.1. Detect Firefox by UserAgent
        2. 5.5.2. Detect Firefox via the DOM
          1. 5.5.2.1. document.all
          2. 5.5.2.2. document.implementation.hasFeature(type,version)
          3. 5.5.2.3. document.layers
        3. 5.5.3. Detect JavaScript Version Support
      6. Hack #48. Submit Background Form Data
        1. 5.6.1. Getting Oriented
        2. 5.6.2. Sending a Synchronous GET Request
        3. 5.6.3. Sending a Synchronous POST Request
        4. 5.6.4. Sending an Asynchronous GET Request
        5. 5.6.5. Sending an Asynchronous POST Request
      7. Hack #49. Script Plug-ins
        1. 5.7.1. Requirements for Scriptability
        2. 5.7.2. Scripting Away
      8. Hack #50. Quality-Assure Your Web Pages
        1. 5.8.1. Ensure Code is Valid
        2. 5.8.2. Check Accessibility
          1. 5.8.2.1. S.508 and WAI accessibility
          2. 5.8.2.2. Check those images
          3. 5.8.2.3. Check those links
          4. 5.8.2.4. Slow downloads are still a big issue
          5. 5.8.2.5. Not all screens are the same
          6. 5.8.2.6. How will a nonhuman see your page?
      9. Hack #51. Display HTTP Headers
        1. 5.9.1. Get the Live HTTP Headers Extension
        2. 5.9.2. Analyze Headers in the Raw
      10. Hack #52. Stomp on Cookies
        1. 5.10.1. Using the Cookie Manager
        2. 5.10.2. Using Cookie Extensions
          1. 5.10.2.1. View Cookies extension
          2. 5.10.2.2. Add & Edit Cookies extension
        3. 5.10.3. Scripting Cookies
      11. Hack #53. Probe HTML with the DOM Inspector
        1. 5.11.1. Inspecting a Page
        2. 5.11.2. Deconstructing a Page
        3. 5.11.3. Hacking a Page to Bits
      12. Hack #54. Turn Off Absolutely All Caching
        1. 5.12.1. Disable Browser Caching
        2. 5.12.2. Disable HTTP Caching
        3. 5.12.3. Disable XUL Caching
      13. Hack #55. Web Document Debugging Tricks
        1. 5.13.1. Portable Debugging Tricks
          1. 5.13.1.1. Use alert( )
          2. 5.13.1.2. Probe page contents with javascript: URLs
          3. 5.13.1.3. Add diagnostic styles
        2. 5.13.2. Firefox-Specific Debugging Tricks
          1. 5.13.2.1. Use watch points
          2. 5.13.2.2. Tweak preferences
          3. 5.13.2.3. Log to the JavaScript console
      14. Hack #56. Debug JavaScript with Venkman
        1. 5.14.1. Finding and Installing Venkman
        2. 5.14.2. Experimenting with Venkman
          1. 5.14.2.1. View web page scripts
          2. 5.14.2.2. Run web page scripts
        3. 5.14.3. See Also
      15. Hack #57. Handle Hangs and Other Bad Juju
        1. 5.15.1. Separate Out Performance Problems from Hangs
        2. 5.15.2. Things You Can Do to Bust Firefox
        3. 5.15.3. Things You Can Do to Recover
    9. 6. Power XML for Web Pages
      1. 6.1. Hacks 58-74
      2. Hack #58. Pick Display Modes for HTML and XML
        1. 6.2.1. Tell Firefox What the Content Is
        2. 6.2.2. Tell Firefox Which Parser to Use
        3. 6.2.3. Tell Firefox How to Render the Content
      3. Hack #59. Get Tools for XML Validation
        1. 6.3.1. Built-In XML-Checking Tools
        2. 6.3.2. Web-Based Validation Tools
        3. 6.3.3. Third-Party Validation Tools
      4. Hack #60. Mix Content with XML Namespaces
        1. 6.4.1. Play with XML Namespace Syntax
        2. 6.4.2. Write Reports in XHTML, MathML, and SVG
        3. 6.4.3. Create Content Browsers with XHTML and XUL
      5. Hack #61. Make MathML Content
        1. 6.5.1. Deal with MathML Fonts
        2. 6.5.2. Make a MathML Example
        3. 6.5.3. View MathML Source
      6. Hack #62. Make SVG Content
        1. 6.6.1. Understand Versions and Features
        2. 6.6.2. Make an Interactive Diagram
      7. Hack #63. Use Client-Side XPath
        1. 6.7.1. Use Criteria to Select an XML Nodeset
        2. 6.7.2. Use XPath to Expose Expression Axes
      8. Hack #64. Use Client-Side XSL
        1. 6.8.1. Why Use XSL Instead of CSS?
        2. 6.8.2. Define Firefox and XSL
        3. 6.8.3. Write Your First Transform
        4. 6.8.4. Tell Firefox About Your XSL
        5. 6.8.5. See Also
      9. Hack #65. Work with Mozilla SOAP Services
        1. 6.9.1. Locate SOAP in Firefox
          1. 6.9.1.1. Start with XML Schema
          2. 6.9.1.2. Review synchronous versus asynchronous messaging
          3. 6.9.1.3. Review security
        2. 6.9.2. Understand the Server
        3. 6.9.3. Make a Web Page with SOAP
      10. Hack #66. Work with Mozilla XML-RPC Services
        1. 6.10.1. Locate XML-RPC in Firefox
          1. 6.10.1.1. Review security arrangements
          2. 6.10.1.2. Start out on the right foot
        2. 6.10.2. Create an XUL Test File
          1. 6.10.2.1. Build the frontend XUL file
          2. 6.10.2.2. Script XMP-RPC with JavaScript
          3. 6.10.2.3. Create the Firefox extension
      11. Hack #67. Work with Mozilla WSDL Services
        1. 6.11.1. Locate WSDL in Firefox
        2. 6.11.2. Create a WSDL File
        3. 6.11.3. Create the Proxy in JavaScript
        4. 6.11.4. Create an Asynchronous Listener
        5. 6.11.5. Note Security Issues
      12. Hack #68. Make Applications and Extensions with XUL
        1. 6.12.1. Make and Display an XUL Demo
        2. 6.12.2. Send XUL Application Data to a Server
        3. 6.12.3. See Also
      13. Hack #69. Make New Tags and Widgets with XBL
        1. 6.13.1. Make a <sidebar> element for HTML
        2. 6.13.2. Make a Custom XUL Widget
      14. Hack #70. Work with RDF Facts
        1. 6.14.1. Learn RDF
        2. 6.14.2. Manipulate Content in Firefox's Head
        3. 6.14.3. Display Facts with Templates
      15. Hack #71. Work with RSS Feeds
        1. 6.15.1. Understand the RSS Mess
        2. 6.15.2. Exploit Firefox Support for RSS
        3. 6.15.3. Receive Notification of New Items
      16. Hack #72. Connect SQL to XUL
        1. 6.16.1. Get Ready for Dynamic XUL
        2. 6.16.2. Make an XUL Template
        3. 6.16.3. Weigh It Up
      17. Hack #73. Generate XUL Using PHP Libraries
        1. 6.17.1. Finding PEAR Libraries for XUL
        2. 6.17.2. Motivation for Server-Side UI Generation
        3. 6.17.3. Getting Oriented with XML_XUL
        4. 6.17.4. Weighing It Up
      18. Hack #74. Get a Taste of E4X Scripting
        1. 6.18.1. Where E4X Fits In
        2. 6.18.2. Setting Up a Playpen for E4X
        3. 6.18.3. Experiment with E4X Features
    10. 7. Hack the Chrome Ugly
      1. 7.1. Hacks 75-83
      2. Hack #75. Do Groundwork for Ugly Chrome Hacks
        1. 7.2.1. Understanding Chrome
        2. 7.2.2. Understanding JAR Files
        3. 7.2.3. Locating Standard Chrome Files
        4. 7.2.4. Locating Other Chrome Files
        5. 7.2.5. What to Hack
      3. Hack #76. Spy on Chrome with the DOM Inspector
        1. 7.3.1. Inspecting XUL
        2. 7.3.2. Connecting the Dots
      4. Hack #77. Customize Firefox's Interface
        1. 7.4.1. Identifying the Objective
        2. 7.4.2. Ready...
        3. 7.4.3. Aim...
        4. 7.4.4. Firefox!
      5. Hack #78. Rebadge Firefox
        1. 7.5.1. Core Brand Information
        2. 7.5.2. Rebranding Bookmarks and Bookmark Text
        3. 7.5.3. Rebranding Icons and Images
        4. 7.5.4. Rebranding the User Agent
      6. Hack #79. Make Firefox Match the Desktop
        1. 7.6.1. Building Static Skins
        2. 7.6.2. Building Static Skins with Smart Values
        3. 7.6.3. Exploiting -moz-appearance and Theme Engines
      7. Hack #80. Make a Toolbar That Can't Be Hidden
        1. 7.7.1. Adding a Permanent Toolbar
        2. 7.7.2. Testing the New Toolbar
        3. 7.7.3. Decorating the New Toolbar
      8. Hack #81. Content Filter Without Your Smart Friend Noticing
        1. 7.8.1. Starting Points
        2. 7.8.2. Finding the Files to Hack
        3. 7.8.3. Coding Options
        4. 7.8.4. Quick-and-Dirty String Changes
        5. 7.8.5. Wrapping Up
      9. Hack #82. Add a New XPCOM Component
        1. 7.9.1. Naming the New Component
        2. 7.9.2. Creating and Implementing a Module
        3. 7.9.3. Creating and Implementing a Component
        4. 7.9.4. Installing the Component
        5. 7.9.5. Running the Component
      10. Hack #83. Add a New Command-Line Option
        1. 7.10.1. Preparation
        2. 7.10.2. Making the Script Outline
        3. 7.10.3. Filling in the Script
    11. 8. Hack the Chrome Cleanly
      1. 8.1. Hacks 84-90
      2. Hack #84. Do Groundwork for Extension Development
        1. 8.2.1. Spot Extension Files
        2. 8.2.2. Spot Extension Installers
        3. 8.2.3. Three Kinds of RDF Files
        4. 8.2.4. Compare Locales, Themes, Applications, and Extensions
        5. 8.2.5. Find the XPInstall Missing Link
      3. Hack #85. Study Packages with the Chrome Manager
        1. 8.3.1. Get the Chrome Manager
        2. 8.3.2. Chrome Simplified
        3. 8.3.3. Understand Packages
        4. 8.3.4. Packages Versus Extensions
      4. Hack #86. Create a Chrome Package
        1. 8.4.1. Create a Local Folder Hierarchy
        2. 8.4.2. Create a Package Representation
          1. 8.4.2.1. Flat file structure
          2. 8.4.2.2. JAR representation
          3. 8.4.2.3. Default URL names for package files
        3. 8.4.3. Register a Package with the Chrome Registry
          1. 8.4.3.1. Make a contents.rdf manifest file
          2. 8.4.3.2. Use the new chrome: URLs
      5. Hack #87. Make a Bottom-Up Overlay
        1. 8.5.1. Adding an Item
          1. 8.5.1.1. Register the overlay
          2. 8.5.1.2. The overlay file
        2. 8.5.2. Other Places to Overlay
        3. 8.5.3. Adding a Sidebar
        4. 8.5.4. Under the Covers
        5. 8.5.5. Skin Overlays
      6. Hack #88. Make, Bundle, and Publish an XPI
        1. 8.6.1. Making a Firefox XPI File
        2. 8.6.2. Understanding install.rdf
        3. 8.6.3. The First Big Release
          1. 8.6.3.1. Using Mozilla Update
          2. 8.6.3.2. DIY publishing
        4. 8.6.4. Distribute Software Updates
      7. Hack #89. Build an Installable Theme
        1. 8.7.1. Getting the Content Together
          1. 8.7.1.1. Do the creative bit
          2. 8.7.1.2. Do the systematic bit
          3. 8.7.1.3. Collect together skins
        2. 8.7.2. Building the Theme JAR File
          1. 8.7.2.1. Build an install-bundled theme
          2. 8.7.2.2. Build skins into downloadable extensions
          3. 8.7.2.3. Build skins into complete and separately downloadable themes
        3. 8.7.3. Installation Support
      8. Hack #90. Identify Reusable Toolkits
        1. 8.8.1. Poking Around Inside toolkit.jar
          1. 8.8.1.1. The global package
          2. 8.8.1.2. The xul.css master XBL stylesheet
          3. 8.8.1.3. The mozapps package
        2. 8.8.2. Scavenging Application Pieces
        3. 8.8.3. Finding Embedded Components
        4. 8.8.4. Reusing Script Libraries
    12. 9. Work More Closely with Firefox
      1. 9.1. Hacks 91-100
      2. Hack #91. Handle Cross-Platform Differences
        1. 9.2.1. Handling Obvious Big-Ticket Differences
        2. 9.2.2. Handling Widget Differences
        3. 9.2.3. Handling Font Differences
      3. Hack #92. Get a Custom, Prebuilt Version
        1. 9.3.1. Rebundled Firefox Versions
          1. 9.3.1.1. Windows versions
          2. 9.3.1.2. Linux versions
        2. 9.3.2. Alternate Builds of Standard Firefox
        3. 9.3.3. Treasure-Hunting Custom Builds
      4. Hack #93. Make Firefox Software
        1. 9.4.1. Pointers for Windows and Macintosh
          1. 9.4.1.1. Getting oriented under Windows
          2. 9.4.1.2. Getting oriented under Macintosh
        2. 9.4.2. Getting Ready for Linux Compilation
          1. 9.4.2.1. Checking your compile baseline
          2. 9.4.2.2. Checking your runtime baseline
          3. 9.4.2.3. Grabbing a source baseline
          4. 9.4.2.4. Updating the source
        3. 9.4.3. Compiling Firefox
        4. 9.4.4. Running Your Own Firefox
        5. 9.4.5. Creating a New Installer
      5. Hack #94. Run Multiple Mozilla Browsers
        1. 9.5.1. Running Different Browsers Simultaneously
        2. 9.5.2. Running Two Separate Versions of Firefox
        3. 9.5.3. Running Two Instances of Firefox Simultaneously on Windows
          1. 9.5.3.1. Temporary solution
          2. 9.5.3.2. Permanent solution
        4. 9.5.4. Running Only One Instance of Firefox on Unix/Linux
      6. Hack #95. Make Extensions Work Outside Firefox
        1. 9.6.1. Porting Extensions to Thunderbird and NVu
          1. 9.6.1.1. Changing the target application
          2. 9.6.1.2. Changing overlay destinations
          3. 9.6.1.3. Changing overlay content
        2. 9.6.2. Back-Porting Extensions to the MAS
          1. 9.6.2.1. Making multiple-application overlays
          2. 9.6.2.2. Delivering backward compatibility for extensions
      7. Hack #96. Turn on Firefox Diagnostics
        1. 9.7.1. Turning On Diagnostics with NSPR Logging
          1. 9.7.1.1. Turning on logging
          2. 9.7.1.2. Viewing logged output
        2. 9.7.2. Finding Talkback Crash Records
        3. 9.7.3. Hooking Up Firefox to a Debugger
      8. Hack #97. Find the Right Forum for Your Issues
        1. 9.8.1. Picking Forums for Pulling Information
        2. 9.8.2. Picking Forums for Pushing Information
        3. 9.8.3. Picking Forums for Conversations
      9. Hack #98. Survive Bugzilla
        1. 9.9.1. Landing on Planet Bugzilla
          1. 9.9.1.1. Differences between labor and work
          2. 9.9.1.2. Gift culture
        2. 9.9.2. Dissecting Bug Reports
      10. Hack #99. Find Out What Has Been Fixed
        1. 9.10.1. Release Notes
        2. 9.10.2. Change Logs
        3. 9.10.3. Tree Status
      11. Hack #100. Help with the Future of Firefox
        1. 9.11.1. Deciding
        2. 9.11.2. Contributing Engineering Effort
        3. 9.11.3. Contributing Organizational Effort
        4. 9.11.4. Contributing Creative Effort
        5. 9.11.5. Contributing Professional Effort
        6. 9.11.6. Being a Fan
    13. About the Author
    14. Colophon
    15. SPECIAL OFFER: Upgrade this ebook with O’Reilly