08th Nov 2007
Hacking Firefox: customizations for my library (NaBloPoMo #8)
Today was quite the intellectual roller coaster ride, filled with moments of extreme brilliance and achievement, countered by moments of nose-down thinking, researching, problem solving, and bug fixing.
My mission: to rid our library of Public Web Browser, and replace it with a Firefox install that does exactly what I want it to. The ride actually started last Thursday morning; my library is open on Thursdays from 1-9p, but I’m there in the morning, which makes for excellent Do Stuff With Computers time.
Last week, I did some poking around, forming a plan. We have a few different flavors of computer configurations (all running Windows XP Professional SP2), but the general gist is that we have 4 “kiosk” machines, designed for web browsing with readers for Word, Excel, Powerpoint, and Acrobat Reader to aid in opening and printing attachments. Then we have the more full-scale workstations including Office 2003 Professional, web page and FTP software, various IM clients, Picasa, and a few other bits of software.
My priority with the computer configurations to create as normal a computing environment as possible, so that there is no “library way” versus “home way” or “office way” to do things. Locking too many things down, or creating too many dummy button systems for access really just confuses people, and makes teaching people how to use the technology ineffective.
That said, my dream install of Firefox would:
- Remove the full Bookmarks menu, as well as any menu items that referred to bookmarking, sending links via email, add-on and options management.
- Automatically refresh the browser every 10 minutes to bring it back to the library home page.
- Not allow users to install plug-ins.
- Show the user that, yes, your private information is being deleted, for serious.
- Anything that might make the user interface easier to work with.
Not a huge shopping list. I figured I could a good amount of the work with plug-ins, and I knew a Firefox plug-in for kiosk mode did exist. But in evaluating the R-kiosk extension as a solution, I found it entirely too limiting in its default setting, and not flexible enough in the alterable settings for what I wanted. After poking around a bit more, it looked like the solution was to use a combination of plug-ins and straight-out hacks.
I settled on the following plug-ins:
- Cutemenus2: Adds sassy little icons to the standard and context menus in Firefox, to give visual cues on what each command stands for. It’s a great help for inexperienced users, and it’s quick visual reference for get-in/get-out patrons.
- Auto Reset Browser: Refreshes the browser after a period of inactivity. I configure it to refresh after 600 seconds (10 minutes).
Then there was the issue of menu customizing. At first, I thought I’d go with the Menu Editor extension, which is really easy to use. However, if I wanted to hide the ability to access the Add-Ons management utility from regular users, and I hid it using the extension, then I wouldn’t be able to get back to it, ever (funny thing, after talking it through to myself out loud, I had to try it to see if I was right, and I was, resulting in uninstalling and reinstalling Firefox to fix it).
My solution: userChrome.css. Believe it or not, much of the menu rendering and other features in Firefox are controlled by a style sheet. I used the elements & IDs page in the MozillaZine wiki and these instructions to help me figure out the best way to format and customize my Firefox style sheet, and it worked like a dream. This way, reactivating a menu that has been hidden is as easy as commenting out the “don’t show me” command in the style sheet and restarting the browser.
The tough bit was locking everything down so it couldn’t be changed browser-side. We have Deep Freeze Enterprise installed on all of the computers, so worst case we can just restart the machine to take it back to it’s original configuration. However, my greater concern is the consistency of the user experience: what if someone installs a plug-in or extension that confuses the patron using the machine after them? What if it creates a user expectation of a behavior at another machine?
Now, I could use about:config, which allows you to edit all sorts of features in Firefox (type about:config, just like that, into the address bar in Firefox, and you’ll see what I mean), but disabling something in the about:config doesn’t lock it down. For instance, I set extension installs to “disabled,” and instead of a blocking message when I tried to install a plug-in, I got a friendly, helpful message telling me that I needed to enable the feature, as well as a handy enable button.
Not what I was looking for. I needed something stricter, firmer, with a clear neon NO! on it, but, you know, polite and diplomatic.
More nose to the grindstone research later, I came up with a series of handy posts from a fellow in the UK who was locking down Firefox for schools. It’s kinda geeky, and requires playing with code, but the instructions he followed are fairly easy to understand (especially if you read them carefully, out loud if you need to), and the stuff he did with it also makes sense for what most libraries would want to do. The lockPref("xpinstall.enabled", false); bit was the pay dirt of this exercise, but I was able to lock down a bunch of other stuff so that, just in case someone actually accessed the Options box, they wouldn’t be able to edit it.
By the end of the day, I had the 4 kiosk machines working almost like I wanted them to. I’m still researching a way to have the Firefox window pop back open as a fresh browser just on those kiosk machines; tomorrow is another day ;). I’ll get to all the other machines in the library over the course of the next week, now that I have the process down to 2 plug-in installs, 2 file copy/pastes, and a small text change in another file, totally perhaps 5 minutes per machine.
Shiny!
So what took all day? I didn’t check email all day, and I really didn’t even touch my desk, so where did all the time go? Well, there was updating the Firefox install on the machines, removing the dreaded Public Web Browser (explaining that is a whole other post entirely), letting people play with it, tweaking it, and just a whole lot of trial and error. And, say, breaks for lunch and snacks, and other work conversations and sundries.
I’ll post some screen shots tomorrow, but in the meantime, questions/comments are welcome!
Today was quite the intellectual roller coaster ride, filled with moments of extreme brilliance and achievement, countered by moments of nose-down thinking, researching, problem solving, and bug fixing.
My mission: to rid our library of Public Web Browser, and replace it with a Firefox install that does exactly what I want it to. The ride actually started last Thursday morning; my library is open on Thursdays from 1-9p, but I’m there in the morning, which makes for excellent Do Stuff With Computers time.
Last week, I did some poking around, forming a plan. We have a few different flavors of computer configurations (all running Windows XP Professional SP2), but the general gist is that we have 4 “kiosk” machines, designed for web browsing with readers for Word, Excel, Powerpoint, and Acrobat Reader to aid in opening and printing attachments. Then we have the more full-scale workstations including Office 2003 Professional, web page and FTP software, various IM clients, Picasa, and a few other bits of software.
My priority with the computer configurations to create as normal a computing environment as possible, so that there is no “library way” versus “home way” or “office way” to do things. Locking too many things down, or creating too many dummy button systems for access really just confuses people, and makes teaching people how to use the technology ineffective.
That said, my dream install of Firefox would:
- Remove the full Bookmarks menu, as well as any menu items that referred to bookmarking, sending links via email, add-on and options management.
- Automatically refresh the browser every 10 minutes to bring it back to the library home page.
- Not allow users to install plug-ins.
- Show the user that, yes, your private information is being deleted, for serious.
- Anything that might make the user interface easier to work with.
Not a huge shopping list. I figured I could a good amount of the work with plug-ins, and I knew a Firefox plug-in for kiosk mode did exist. But in evaluating the R-kiosk extension as a solution, I found it entirely too limiting in its default setting, and not flexible enough in the alterable settings for what I wanted. After poking around a bit more, it looked like the solution was to use a combination of plug-ins and straight-out hacks.
I settled on the following plug-ins:
- Cutemenus2: Adds sassy little icons to the standard and context menus in Firefox, to give visual cues on what each command stands for. It’s a great help for inexperienced users, and it’s quick visual reference for get-in/get-out patrons.
- Auto Reset Browser: Refreshes the browser after a period of inactivity. I configure it to refresh after 600 seconds (10 minutes).
Then there was the issue of menu customizing. At first, I thought I’d go with the Menu Editor extension, which is really easy to use. However, if I wanted to hide the ability to access the Add-Ons management utility from regular users, and I hid it using the extension, then I wouldn’t be able to get back to it, ever (funny thing, after talking it through to myself out loud, I had to try it to see if I was right, and I was, resulting in uninstalling and reinstalling Firefox to fix it).
My solution: userChrome.css. Believe it or not, much of the menu rendering and other features in Firefox are controlled by a style sheet. I used the elements & IDs page in the MozillaZine wiki and these instructions to help me figure out the best way to format and customize my Firefox style sheet, and it worked like a dream. This way, reactivating a menu that has been hidden is as easy as commenting out the “don’t show me” command in the style sheet and restarting the browser.
The tough bit was locking everything down so it couldn’t be changed browser-side. We have Deep Freeze Enterprise installed on all of the computers, so worst case we can just restart the machine to take it back to it’s original configuration. However, my greater concern is the consistency of the user experience: what if someone installs a plug-in or extension that confuses the patron using the machine after them? What if it creates a user expectation of a behavior at another machine?
Now, I could use about:config, which allows you to edit all sorts of features in Firefox (type about:config, just like that, into the address bar in Firefox, and you’ll see what I mean), but disabling something in the about:config doesn’t lock it down. For instance, I set extension installs to “disabled,” and instead of a blocking message when I tried to install a plug-in, I got a friendly, helpful message telling me that I needed to enable the feature, as well as a handy enable button.
Not what I was looking for. I needed something stricter, firmer, with a clear neon NO! on it, but, you know, polite and diplomatic.
More nose to the grindstone research later, I came up with a series of handy posts from a fellow in the UK who was locking down Firefox for schools. It’s kinda geeky, and requires playing with code, but the instructions he followed are fairly easy to understand (especially if you read them carefully, out loud if you need to), and the stuff he did with it also makes sense for what most libraries would want to do. The lockPref("xpinstall.enabled", false); bit was the pay dirt of this exercise, but I was able to lock down a bunch of other stuff so that, just in case someone actually accessed the Options box, they wouldn’t be able to edit it.
By the end of the day, I had the 4 kiosk machines working almost like I wanted them to. I’m still researching a way to have the Firefox window pop back open as a fresh browser just on those kiosk machines; tomorrow is another day ;). I’ll get to all the other machines in the library over the course of the next week, now that I have the process down to 2 plug-in installs, 2 file copy/pastes, and a small text change in another file, totally perhaps 5 minutes per machine.
Shiny!
So what took all day? I didn’t check email all day, and I really didn’t even touch my desk, so where did all the time go? Well, there was updating the Firefox install on the machines, removing the dreaded Public Web Browser (explaining that is a whole other post entirely), letting people play with it, tweaking it, and just a whole lot of trial and error. And, say, breaks for lunch and snacks, and other work conversations and sundries.
I’ll post some screen shots tomorrow, but in the meantime, questions/comments are welcome!
Posted in Uncategorized | 8 Comments »




