Ugly Firefox in Gentoo (and a fix!)

Somehow, this xkcd strip really made me want to post here again. I'd all but forgotten that I attempted to start blog many months ago, except for a "Follow this blog" button that would appear on other blogs.

I started writing my first post with the intention of noting down useful technical tips that I'd come across and that other people might need. I never ended up writing an introductory post, just leapt into describing my Qualnet problem. I find it amazing the way that closed-source programs never seem to generate a helpful community around them like open-source does; their support forum was dead and there were almost no websites covering Qualnet or any blogs at all that I could find (surprise!). The only counter-example I can think of is Matlab, but the general status-quo there is for people to upload zip files of scripts that they've created. No versioning, no concerted open projects and no real community spirit (that I could find, anyway).

Anyway, today's post is about ugly Firefox in Gentoo. If you've ever used Firefox in Gentoo, or (who knows?) other distros that don't set up the GTK theme nicely by default, you'll have noticed how horribly ugly the default menus are. The program looks ancient, and really makes you feel like you're back in the Firebird days (or before :( ). I discovered later, that they are a theme called "Gentoo", so someone put it together intentionally (??). Anyway, on to making it look a bit better.

Here's what it looked like before. Look at the horrible grey boxy menus. Check out how new to this I am :-/ )

So, first I installed some Gnome themes. I don't have a full gnome install on my machine, so couldn't use whatever Control-Panel-alike that they have.

Next, I installed a handy GTK theme Switcher (switcher2 if you're a Debian/Ubuntu head)

Here's switcher2 in action (run as my normal user).

Before: Initially, it looks as retro as Firefox

After: (Of course, there are piles of other themes available, but this is the one I chose)

This equates to the following in ~/.gtkrc-2.0
include "/usr/share/themes/Clearlooks/gtk-2.0/gtkrc"

include "/home/jim/.gtkrc.mine"

(I don't have a .gtkrc.mine btw)

Now let's check Firefox, to see if it had an effect :


In case you're wondering, I ended up using the Gimp to take the screenshots after failing to get import and xv to only capture the Firefox window. A nice side effect of running through this again to write it up is that I got to see Gimp start to look prettier too :)


Qualnet on more then one X Screen - java.lang.ArrayIndexOutOfBoundsException

Edit:  Damn, apparently switching to java 1.6 brings its' own host of problems with it. Have to stick to java 1.5 for the moment. 


So google totally failed me when I got this error, so here's how I fixed it. 

I have two monitors, each running an X screen on the same X server (:0.0 and :0.1)

The Qualnet IDE was starting fine from the first screen (:0.0), but when trying to run it on the second (:0.1), I was getting : 

Using /home/broadhej/.qualnetUserDir as user directory...
-- System Info ----------------------------------------------------------------
  Product Version = QualNet 4.5 (Build 200803141608)
  IDE Versioning = IDE/1 spec=1.43.3 impl=200803141608
  Operating System = Linux version 2.6.28-gentoo-r1 running on i386
  Java; VM; Vendor = 1.5.0_18; Java HotSpot(TM) Server VM 1.5.0_18-b02; Sun Microsystems Inc.
  Java Home = /opt/sun-jdk-
  System Locale; Encod. = en_IE; UTF-8
  Home Dir; Current Dir = /home/broadhej; /main/linprogs/qualnet/4.5/gui/netbeans/bin
  IDE Install; User Dir = /main/linprogs/qualnet/4.5/gui/netbeans; /home/broadhej/.qualnetUserDir/4.5
  CLASSPATH = /main/linprogs/qualnet/4.5/gui/netbeans/lib/patches/openide-compat.jar:/main/linprogs/qualnet/4.5/gui/netbeans/lib/core.jar:/main/linprogs/qualnet/4.5/gui/netbeans/lib/openide.jar:/main/linprogs/qualnet/4.5/gui/netbeans/lib/ext/crimson.jar:/main/linprogs/qualnet/4.5/gui/netbeans/lib/ext/derby.jar:/main/linprogs/qualnet/4.5/gui/netbeans/lib/ext/derbytools.jar:/main/linprogs/qualnet/4.5/gui/netbeans/lib/ext/flexlm.jar:/main/linprogs/qualnet/4.5/gui/netbeans/lib/ext/jh.jar:/main/linprogs/qualnet/4.5/gui/netbeans/lib/ext/regexp.jar:/main/linprogs/qualnet/4.5/gui/netbeans/lib/ext/skinlf.jar:/main/linprogs/qualnet/4.5/gui/netbeans/lib/ext/terminalemulator.jar:/main/linprogs/qualnet/4.5/gui/netbeans/lib/ext/xerces.jar:/main/linprogs/qualnet/4.5/gui/netbeans/lib/ext/xmlparsers.jar:/etc/java-config-2/current-system-vm/lib/dt.jar:/etc/java-config-2/current-system-vm/lib/htmlconverter.jar:/etc/java-config-2/current-system-vm/lib/jconsole.jar:/etc/java-config-2/current-system-vm/lib/sa-jdi.jar:/etc/java-config-2/current-system-vm/lib/tools.jar
java.lang.ArrayIndexOutOfBoundsException: 1
  at sun.awt.X11GraphicsEnvironment.getDefaultScreenDevice(X11GraphicsEnvironment.java:178)
  at java.awt.Window.init(Window.java:271)
  at java.awt.Window.(Window.java:319)
  at java.awt.Frame.(Frame.java:419)
  at java.awt.Frame.(Frame.java:384)
  at org.netbeans.core.Splash$SplashWindow.(Unknown Source)
  at org.netbeans.core.Splash.createW(Unknown Source)
  at org.netbeans.core.Splash.showSplash(Unknown Source)
  at org.netbeans.core.Main.main(Unknown Source)
  at org.netbeans.core.TopThreadGroup.run(Unknown Source)
  at java.lang.Thread.run(Thread.java:595)

The fix? Get Qualnet to use a newer jvm. For me, that was:

JDK_HOME=/opt/sun-jdk-16.0.13/ qualnet_ide

Incidentally, it's ridiculous that they don't ship qualnet with a directory-aware executable; here's my script for starting it up;

 cd /main/linprogs/qualnet/4.5/gui/netbeans/bin

 ./runide.sh $*

 cd -

Problem solved!