Monday, February 1, 2010

Chromium Silver: UI Tweaks for Chromium

I believe browser UI should be all about choice, as there is no singular solution that will fit everyone's needs. Power users will usually have their own preferences and tend to set up their browsers a specific way to suit their needs, and allow for more comfortable use. This is something that is sadly lacking in Chrome / Chromium. Even in my FireFox session I have completely customized tab handling, installed an extension to remove unified navigation buttons, (that Mozilla thought each and every one of the their users will like, and decided not to include a disable setting in about:config for), and another one to disable the newfangled location bar, that I found to be pretty useless as well. With 45-55 thousand downloads for each of those extensions there are obviously quite a few people around who agree with me on this matter. These numbers may be relatively small compared to the entire browser user-base, but ignoring the preferences of 50 thousand users may not be that wise of a choice either. On the other hand there are probably users who've come to like these new features and this is fine. It's exactly why users should be allowed to enable/disable features that impact user experience, and customize behavior as they like. Doing this should not be seen as the inability of the UI designer to create the "Perfect UI" (there is no such thing), as this Chromium blog entry seems to imply.

Chromium, by default has close buttons on every tab, unless the tabs reach a certain minimum width, then the buttons are removed except from the active tab. The user can't change anything on this behavior, however for me on-tab close buttons are an irritating annoyance. The first thing I do in FireFox if I set up a new session is disable them. Not being able to do so in Chromium, was really frustrating. I've asked around and for example, a friend of mine prefers on-hover close buttons, and another likes it the way it is. It seems people like different things! Pretty shocking... :) So I've decided to pull a Chromium source tree, add some tweaks and recompile. The end result is what I named Silver tweaks. This allows users to
  • enable/disable the new tab button
  • enable/disable an FF-style close tab button at the end of the tabstrip
  • customize tab close button behavior
  • customize "Open Link in New Tab" behavior
Tab close button behavior options are:
  • default Chromium (as explained above)
  • close buttons on every tab, always
  • no close buttons on tabs, ever (my preference)
  • close button on active tab only
  • no close buttons unless hovering over tab with the mouse
Another thing is when you choose "Open Link in New Tab" in Chromium, it will insert a new tab after the current one. I also found this to be really irritating, as I tend to have blocks of tabs that I don't wish to alter, at the front of my tab strip, one being my RSS reader, and I'm used to opening links from there at the end of tab strip, so I've also added an option to change this.

"Open Link in New Tab" placement options:
  • default Chromium (insert after originating tab)
  • add at end of tab strip
This should cover a wide range of preferences, and make using the browser a lot more comfortable, for "nitpicky" people like me.
Configuring the tweaks isn't really user-friendly (you need to edit a file with notepad) and I don't really intend to change that myself, but please feel free to, I've included my source patches inside the archive.

The settings used for the screenshot at the top are:

"silver": {
"close_tab_button": true,
"link_new_tab_autoactivate": false,
"link_new_tab_place": 1,
"new_tab_button": false,
"tab_behaviour": 1,
"tab_grouping": false
}

After unpacking please actually READ readme.txt, otherwise you won't find where to change the settings :) !! Everything's in the readme !!

Last stable build: --> DOWNLOAD <--

Updates:

Project Abandoned as of May 2011. Moved back to FireFox a couple of months ago. Haven't regretted it.

Nov 28 2010 : Updated patches for current git pull. Did not test anything besides the settings I use. No binary release. Patch can be downloaded here

Feb 4.: Build based on a Feb 4 pull. Found out that a patch on Jan16th that was later thrown out of WebKit fixed a crash bug. Reintroduced the pertinent part of said patch to the build. (or more simply put.. commented out a line) with that, the build seems rock solid. Link updated.


Feb 1.: Rebuilt from a GIT pull on Feb 1st, fixed closetab button jumping around in certain conditions. Link NOT updated. Build NOT as stable as previous one. Link for testing is here.
Jan 17.: Rebuilt from a GIT pull on Jan 16th, Main link is for this release. (Build solid and stable on XP) (link)
Aug 9. : Rebuilt from SVN 22737, link updated (I see some speed improvement in this build) (link for this older release)
Aug 2. : Added new-tab autofocus setting, rebuilt from SVN 22243, link updated


If you found this useful, please leave a comment.

Chromium Silver now uses the default Chromium theme due to general laziness.


Monday, November 30, 2009

TFT Monitor Repair

A defective 19" Benq TFT monior came to be my posession for a very generous price. It produced the alarming symptom of fading out to white, and being extremely sluggish with screen updates. The best way to describe it would be: A screen update propagated across the display as if someone poured liquid on it then it'd quickly fade out to white. Some of the picture would still be visible but with essentially no colors. This is similar to the "white screen of death" that is a common failure type of TFT monitors.
When you google for this, you'll find an abundance of theories and information about the cause. This is partly a good thing because it means that it usually varies from case to case so with luck it just might be something you can repair.

This was the second time I had to deal with something like this and indeed the first time It had to do with a defective TFT panel. A quick test to do when it comes to this type of failure is to turn the monitor on, time how long it takes for the problem to show itself, then switch it off, and repeat. Do this about 5 times.
If the time needed appears to shorten with every try: Power it off, wait 30 minutes, and try again. If indeed the problem is taking longer to manifest, and again, that time seems to shorten with every try, then you're possibly dealing with an overheating component that is cooling down when the monitor isn't used for a while, but retaining enough heat between the consequtive tries for problems to manifest sooner.
This was the case with my first monitor. As opposed to the second one I started this entry off with - which never really showed a clear picture - this one would start up like there was no problem, then after a while (about 5 minutes at first) switched to a completely white screen. This monitor also had a bad row in it's TFT panel. With exhaustive detective work (It burned my finger) I managed to track down the heat issue to this:



This was likely also the cause of the dead row in the panel. Obviously not something that can be replaced so this TFT panel was garbage.

But back to the Benq. I did the above mentioned test. Got a consistent error pattern, with no variation in time. The problem would always appear instantly after power on, so I took it apart.
I measured the voltage that the panel was getting. It was 4.5V instead of 5V. Now I didn't really know how sensitive TFT panels are to supply voltage, but this made me glance over to the PSU board and that's when I noticed 6 bulging caps.


(photo shamelessly stolen, as I didn't make any)

All off the dead caps were made by the same manufacturer and there was one more from them that wasn't (yet) bulging. I replaced all of them just to be on the safe side.
The replacements were new Sanyos that were left over from the laptop sla psu project and a couple of pulls from a CRT's PSU board.

And this is why I am now sitting in front of a great 19" TFT monitor (non-widescreen).
I have yet to find any dead pixels, but chances are I wouldn't mind if there were any.
As an added bonus I know that it contains an AU Optronics panel, which is not half bad compared to possible alternatives in the panel lottery :)

That said I wouldn't advise anyone to go out and get a WSOD monitor for repairs. I burned myself with the first one, both literally and figuratively. The only reason I even considered this second one was because I was getting it for peanuts, and from a trusted source. Even if it was beyond repair, I could've still sold it for parts and made more than what I bought it for.

Wednesday, November 4, 2009

Nokia 770 & Qt



From the inital setup of scratchbox, all the way to the complete build of Qt and the antico window manager it took the better part of 2 days, because basically everything that could've gone wrong did. But finally, something relatively cool came of it. Above, antico, xkbd, and the qtWebKit browser demo "fancybrowser".

Monday, October 19, 2009

Battery box for Nokia 770 USB Host mode



I picked up a Nokia 770 out of curiosity. Aside from some obvious and annoying quirks (which probably have been corrected in newer models) it's a pretty neat device. The 770 like the N800, and N810 has USB host mode, with the added limitation that it can't supply power to USB devices connected to it. So I set out to build a battery box that does just that. The box contains a 1000mAH Li-Ion battery, the 5v Boost Converter I built previously, and picoChg v2, which is a redesign of my PCB for the Linear LTC4054-4.2 Single Cell Li-Ion charger IC. The video shows it working with a USB keyboard. The charger is a bit quirky, I might just need a bigger capacitor for it, but it could be the switch I have installed (selectable: ON or OFF/Charge). It charges like it's supposed to but it doesn't always turn the charging status led off when it's finished. Otherwise it works fine. I probably will end up selling the device. Sometimes I get the feeling that I buy stuff because of their inherent limitations, and potential. Once they work like they're supposed to, they're not as interesting anymore.

Just a small factoid for anyone working on USB host mode for this device. Something that I didn't really see mentioned on forums. You need to feed 5V into the 770. Some people on forums actually say the opposite, but it just plain needs it, otherwise it won't notice anything plugged into it :) I wasted some time figuring this out.