2011
05.03

So like many I feared Unity, now having met it, and giving a seriously go I’m slowly starting to like it. And I’m sticking with it for at least a few weeks before passing final judgement. That said, here are a few small tips:

Currently by default the icons in the Launcher are all “backlit” with a background color, you can turn that off, to only have running programs backlit (to make that fact extra obvious). You can make this the system-wide default like so:

$ sudo  gconftool-2 --direct \
  --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults \
  --type int --set /apps/compiz-1/plugins/unityshell/screen0/options/backlight_mode 1

Next, the Launcher auto-hides whenever you move a window into it (for example maximize a window). I don’t really like that, since I have too much horizontal screen estate anyhow, so I’d like to Launcher to permanently claim it’s space (again as a system-wide default):

$ sudo  gconftool-2 --direct \
  --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults \
  --type int --set /apps/compiz-1/plugins/unityshell/screen0/options/launcher_hide_mode 0

Some other tips, you might find handy:

If you want to move Launcher buttons around on the Launcher you need to drag button off before you can move it. This makes moving buttons around a very conscious action, preventing the mouse-challenged people from accidentally moving them around.

Also you might have noticed that left clicking a Launcher button will only start an application once. So for apps you might want to start multiple times like a Terminal you’d need to search for the app to start it a second time, which would be rather time consuming. Luckily the Unity designer thought about this, so left click will start an application once (prevent people from accidentally starting most apps twice). But if you do want to start an app twice or thrice you can just middle click the Launcher button.

And last but not least, this wallpaper may be of use to you.

2011
05.03

Like others I’m not a stranger to useless ranting. So regardless of what’s default, some people like their font rendering nice and crispy. Usually you’d go the the Appearance dialog, the Fonts tab, click on Details and select Subpixel Smoothing and Full Hinting.

However, there are two caveats, since new users still get the default fuzzy rendering. Also some apps like to ignore your own font rendering settings to a degree, at times Firefox and OpenOffice.org have been guilty of this (IIRC). They actually seem to use use your system fontconfig settings.

So to change the system wide default font rendering settings for GNOME:

$ gconftool-2 --direct \
    --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults \
    --type string --set /desktop/gnome/font_rendering/hinting full

You can change the system fontconfig settings like so:

$ sudo -s
# cd /etc/fonts/conf.d
# rm 10-hinting-slight.conf
# ln -s ../conf.avail/10-hinting-full.conf
# exit

 

2011
04.21

Darktable and Ubuntu Natty

For the past few weeks people have been bothering me about when I’ll update my PPAs for Natty… So let me explain my intentions for my PPAs in general.

In general

I have three Darktable related PPAs:

The difference between the Release and Release-Plus PPAs, is that the Release PPA only has the latest Darktable release package plus any dependencies that aren’t in the meanstream repo’s (lcms2 ATM). The Release-Plus PPA has everything the Release PPA has, plus updated versions of Lensfun and Exiv2.

For both the Release and Release-Plus PPA I’ll try to always build Darktable packages for at least the latest Ubuntu release and the latest Ubuntu LTS (Long Term Support) release. Please do note the usage of the word release, I usually do not build for unreleased versions of Ubuntu. And even after a release I need a couple of days to catch up.

The Unstable PPA is more or less my personal (but public) playground. It has a git master build of Darktable for whatever version of Ubuntu I’m personally using. Building packages for multiple versions of Ubuntu that often is just too time consuming. Of course people will say “Why not automate nightly builds?”. First off I think it’s a bit abusive of the PPA build farm, since git doesn’t change every single day. And more importantly there is no quality control on automated builds. I try to keep up on changes in git, and sometimes consciously refrain to push a new unstable package to my Unstable PPA, simply because there is too much risk of breakage. Obviously I do get things wrong from time to time, so my Unstable PPA can break things occasionally.

Now what about Natty

As I started out, I’ve been asked a lot about Natty, often in private e-mail which is uncalled for, since we have darktable mailing lists on SourceForge.

Now, there are some pretty big changes in Natty, and it’s quite debatable if they are for the better. So it’s very likely I’ll skip a release for my own use, which implies the Unstable PPA will most likely continue to be exclusively built for Maverick.

So that leaves my Release and Release-Plus PPA, and there has been build breakage on Natty, which only recently has been resolved. So it’ll involve backporting some patches to the current stable release to make Darktable build at all. I’ll certainly give this a shot once Natty has been released, and if all goes well I’ll quite likely have packages available within a week after Natty’s release. However, if building the current stable release on Natty proves too difficult I might ditch the effort altogether at some point, at least until Darktable 0.9 has been released.

Update

Darktable packages for Ubuntu Natty have been pushed to all three PPAs.

2011
04.17

As most of you have already noticed I have a Yeeloong netbook and I read that it’s actually possible to install Debian Squeeze on it, even though Squeeze officially doesn’t support the Yeeloong or the Loongson processor. Fortunately the install doesn’t involve anything too scary. The Debian mipsel binaries are o32 binaries not really optimized for a particular CPU, which means they will run on lots of CPUs (not unlike how the i386 binaries run on most x86 processors). The Loongson 2F processor has all instructions to be MIPS III compliant, which is enough for the Debian binaries. So where is the problem then? It’s with the kernel, Debian doesn’t provide any linux kernel images for the Loongson CPU and even more particularly the Yeeloong Netbook.

Basic Installation

I’ve built a kernel image and kernel package for general use on the Yeeloong which is also capable of booting the Malta Debian installer. To actually use them download all three, and put them in the root of an ext2 formatted USB stick. Then plug the USB stick into your Yeeloong and make sure it has wired Ethernet connectivity. Then start the Yeeloong and press Del during bootup to enter PMON (it’s BIOS alternative). In PMON you need to enter the following commands:

load /dev/fs/ext2@usb0/vmlinux-2.6.38.3
initrd /dev/fs/ext2@usb0/initrd.gz
g

If you use an older kernel you also need to pass the ‘console=tty’ and ‘no_auto_cmd’ parameters to the g command.

If all went well you’ll notice the Debian installer starting, and prompting you with it’s first questions. Select your preferred language, location, locale, keyboard layout, hostname, domainname, Debian archive mirror & proxy information.

If all went well, you’ll notice the Debian installer complaining it hasn’t found any (matching) kernel modules, and it’ll ask you if you want to proceed without. We’ll answer Yes, since everything critical has been monolithically compiled into my custom kernel.

Next, setup your root password and an initial user account.

Now we’re entering the partitioning tool, which will complain with a scary red dialog that my custom kernel is missing Software RAID and LVM support, which we really don’t need. Select continue for both warnings.

Now we’ve really entered the partition tool, and you’ll notice two devices the (probably) FUJITSU 160GB harddisk, and the USB stick, make sure you don’t touch the USB stick (sdc). Then select the FUJITSU (sda) harddisk and press enter, which will effectively erase the whole disk, and reinitialize the disk with a new partition table. The partitioning tool will complain that it does not know the partition table type for the Loongson architecture. Select the familiar msdos partition table type. Next create a new partition, 1GB, primary, beginning, make sure it’s used as the ext2 file system otherwise your yeeloong won’t boot, with a /boot mount point and relatime,sync mount options. When you’re done setting up the first “special” boot partition. We can create a new swap partition: 2GB, primary, beginning, use as swap area. With that done, we can create a new root partition: 17GB, primary, beginning, use as ext4 journaling file system, mount point / , mount options relatime. And last we can create a new home partition: 140GB, primary, beginning, use as ext4 journaling file system, mount point /home, mount options relatime. Now finish and write the changes to disk.

You’ll notice the Debian installer downloading packages and installing them. At some point it will complain no installable kernel was found, and if you want to continue without a kernel. Yes you do.

Now only a few things are left, software selection, where I usually unselect everything, and bootloader installation, where the installer will complain it can’t install any. We don’t care as the Yeeloong doesn’t need a bootloader at all. So we continue.

When we (next) get the “Finish the installation” dialog, we do not continue immediately. Instead we press Ctrl+Alt+F2 and Enter (to active the console). Now we need to manually install a kernel package, to do so enter the following commands:

mount /dev/sdc1 /mnt
cp /mnt/linux-image-2.6.38.3_2.6.38.3-0yeeloong0_mipsel.deb /target/root
umount /mnt
chroot /target /bin/bash
dpkg -i /root/linux-image-2.6.38.3_2.6.38.3-0yeeloong0_mipsel.deb
cp /boot/vmlinux-2.6.38.3 /boot/vmlinux
exit
exit

Then press Ctrl+Alt+F1 to return to the installer and finally press continue to reboot. During the reboot press Del to enter PMON once again, since we need to tell PMON about our new installation:

set ShowBootMenu "no"
set al "/dev/fs/ext2@wd0/vmlinux"
set arg "root=/dev/sda3"
reboot

Now you should see your Yeeloong reboot again, and booting into your new Debian Squeeze installation.

Installing extra utilities

Your new clean installed Debian system isn’t very useful yet, so you’ll need to add some extra software. One of the things I usually do is disable the installation of “Recommended” packages, these are a kind of soft dependancy, this is how packages pull along other packages which aren’t strictly required, but are usually nice to have but sometimes are utterly useless (and clutter up your system). So to disable the automatic installation of Recommends do the following as root:

echo 'APT::Install-Recommends "false";' > /etc/apt/apt.conf.d/99synaptic

Whenever you install a new package apt will tell you what it’s Recommends would have been, I highly recommend you to inspect the Recommended packages to see if they would be useful to you.

Now, let’s install a bunch of packages I always like to have handy:

apt-get install alsa-base alsa-utils autoconf automake build-essential \
                libncurses5-dev autotools-dev binutils bison \
                busybox-static bzip2 cdbs command-not-found coreutils \
                cpio curl debhelper devscripts dpkg-dev fakeroot file \
                findutils flex fortune-mod fortunes-debian-hints g++ \
                gcc gdb gfortran git-core gnupg gobjc grep gzip \
                iproute less lftp links lsof m4 make mtr-tiny nano \
                openssh-client patch pciutils usbutils procps psmisc \
                quilt rsync screen sharutils sl smartmontools splint \
                subversion sudo telnet tftp-hpa unzip util-linux wget \
                wpasupplicant xz-utils

This will take a while to install, but it’ll leave you with a very functional base system.

Installing Basic X11

Before installing X11 there are a couple of considerations. First I would highly recommend using my optimized pixman packages (though Debian’s own pixman will work). Next you’ll have to choose between an optimized SiliconMotion driver and using Xorg via the kernel framebuffer. If you need video playback you should use the optimized SiliconMotion driver, if you don’t you might want to consider sticking with the linux framebuffer driver, since with it, tty switching will be smoother, and you won’t need patched Xorg packages. And last but not least you’ll need to choose a login manager. I highly recommend SLiM, though Debian’s version is a tad buggy, I have a fixed package available as well (with GNOME Keyring integration for Network Manager).

My repository has the following mipsel components available: linux, pixman, slim, thinice, ufraw, xorg. To use my repository with the optimized pixman, fixed SLiM login manager, my customized ThinIce theme and updated ufraw, execute as root:

echo 'deb http://debian.pcode.nl/debian squeeze linux pixman slim thinice ufraw' > /etc/apt/sources.list.d/pcode.list
apt-get update
apt-get install xserver-xorg xserver-xorg-input-evdev \
                xserver-xorg-input-mouse xserver-xorg-video-fbdev \
                slim

Installing XFCE

Now we have a very basic X11 setup, we probably want a decent desktop environment as well. To get a basic but functional XFCE installation:

apt-get install xfce4-panel xfce4-session xfce4-settings xfce4-terminal \
                xfce4-utils xfdesktop4 xfwm4 xfwm4-themes thunar \
                network-manager-gnome libpam-gnome-keyring thinice-noble \
                gnome-noble-icon-theme gnome-keyring seahorse gtk2-engines \
                ttf-liberation ttf-dejavu-core gsfonts ghostscript

If you like my old school UNIX like ThinIce-Noble theme, you can download my skel files here, and install them to be used with newly created users:

cd /etc/skel
tar zxvf /root/xfce-thinice-noble-skel.tar.gz

Installating Applications

Obviously without applications your new desktop is useless, just some quick tips:

apt-get install iceweasel geany abiword xarchiver
apt-get install gimp gimp-plugin-registry gimp-resynthesizer gimp-ufraw
Have fun.
2011
04.17

ThinIce Noble (Compact)

On my Yeeloong netbook I’m running XFCE because it’s a tad more lightweight than GNOME. Considering the Yeeloong’s resources, a lot of modern themes can be a bit heavy, so after some testing I went with the ThinIce theme. Out of the box the ThinIce theme isn’t so great. Firefox/Iceweasel don’t look so great with it (an issue with text field background colors). The scrollbars are too thin. The gray isn’t neutral (this is a personal pet-peeve). And the default blue selection color isn’t too my liking too. The main problem with the default blue selection color is that there is no matching icon theme. So I went with the GNOME Noble icon theme and took the icon’s theme’s base purple tint as as a selection color for ThinIce. The next problem which is true for pretty much all GTK themes is that they waste a lot of screen real-estate, which is actually a good thing is you have a big display, big buttons and lots of spacing makes things look good and easier to use. However on a netbook this isn’t soo great. So I had to shrink down my ThinIce theme a bit. The result:

If you like the theme, you can get the sources here, and a nice architecture independent Debian package here. I’ve even put the configuration files online here, which you can put in your /etc/skel to get everything configured by default for every new user which is added to your system.

2011
04.13

UPDATE: I think I screwed up here. I still need to reinvestigate this.

Recently I purchased a nice cheap USB microscope, when I bought the thing I wasn’t sure if it would actually work with Linux, but in the end everything turned out fine as it’s a UVC camera, so it’ll work fine with for example Cheese.

Now, using that USB microscope, turning the LED lighting off, I took a look at several of my displays, here’s a sample from my cheap HP laptop, which has a cheap Samsung panel in it:

As you might note the subpixel configuration isn’t RGB, but it’s actually BGR (Blue, Green Red). And that certainly made me curious, was my laptop one of those exceptions? So I checked out my decent HP display (which has an LG IPS panel), and it has a BGR subpixel configuration too. Next up I checked my Yeeloong netbook, and guess what, it has a BGR subpixel configuration too.

Some of you might wonder why I’m talking about subpixels? Please don’t forget that a single pixel is comprised of three subpixels, one for each primary color. This is also why the subpixels aren’t square, since each pixel comprised of three subpixels should be approximately square.

Now the silly thing is, I actually changed the subpixel rendering in my font settings, but I can’t say I liked the BGR rendering better than the RGB rendering. I’m not sure why this is, I haven’t really looked into that yet.

2011
04.07

So, in the southern parts of the Netherlands a new hackerspace was opened, it’s called ACKspace. And we needed a poster indicating where the medical supplies are. So I worked on a design:

What do you think? Is the hacker logo overlay too distracting?

2011
04.01

A while back someone had the absolutely brilliant idea to make a fairly complete scalable icon set, where the colors are completely customizable. It even has 8 predefined “themes”. The project is called GNOME Colors. The fun thing is, it’s reasonably easy to make your own theme.

First download the source package here and unpack it:

# mkdir gnome-colors
# cd gnome-colors
# tar zxvf ../gnome-colors-src-5.5.1.tar.gz

You’ll note that there is a themes directory, with a file per theme, for example the gnome-noble theme:

Name=GNOME-Noble
Distribution=gnome-colors
LightFolderBase=#bd97b9
LightBase=#ad7fa8
MediumBase=#75507b
DarkStroke=#5c3566

Now we want to define our own theme, and I’ll be taking Solaris 8‘s magenta (#b24d7a) window border color as a base. This basically means we’ll use #b24d7a as MediumBase, but then we’re left with the question how to derive the other colors. The colors are defined as hexadecimal RGB values. And RGB is a crappy way to calculate relations between colors. So we want to convert these values to HSV and calculate delta’s between MediumBase and the other values.

RGB #bd97b9 is 306, 20, 74 in HSV with delta 14, -15, 26

RGB #ad7fa8 is 307, 27, 68 in HSV with delta 15, -8, 20

RGB #75507b is 292, 35, 48 in HSV

RGB #5c3566 is 288, 48, 40 in HSV with delta -4, 13, -8

Now our new Magenta MediumBase is RGB #b24d7a is 333, 57, 70 in HSV, if we apply the delta’s in HSV and convert back to RGB We’d get the following theme file:

Name=GNOME-Solaris
Distribution=gnome-colors
LightFolderBase=#f58ea4
LightBase=#e6758c
MediumBase=#b24d7a
DarkStroke=#9e2f69

Save it as gnome-solaris in the themes folder. Then run make dist in the gnome-colors folder. Then go have a cup of coffee, it’ll take a while.

2011
03.31

I own a Lemote Yeeloong which is sold with 1GB of RAM, which is fine for normal use. But since I do regularly compile stuff having a bit more RAM for caching would be very nice.

Now when you open up the Yeeloong you’ll note it has a single DDR2 SODIMM slot populated with a 1GB 667mhz A-Data module.

I tried replacing it with random Hynix 2GB 667mhz module and the Yeeloong wouldn’t boot at all. I’ve contacted the vendor to ask if it’s possible to upgrade the Yeeloong at all, and if so, if any requirements need to be met.

UPDATE: In the meantime I received a mail from Gilbert Fernandes who informed me that the memory in the Yeeloong should always be single rank (most typical 2GB modules aren’t). Since I don’t have 2GB single rank modules lying around, so I haven’t been able to test this.

2011
03.31

Lemote Yeeloong 8089

Unlike the past, the current reality is that all desktop hardware is x86 based, when we go back into the past let’s say mid ’90s or even earlier, each vendor had it’s own architecture preference.

I only got into computing well after x86 had asserted it’s dominance. And everything non-x86 was particularly pricey. I’ve always wanted some non-x86 hardware, but back then it was practically out of reach, at least the current hardware was.

Now more than ten years later, old SGI hardware is affordable, but then again, you have to dedicate half a desk to a machine you’d only use for fun…

Now as some of you might have noticed the Chinese are actually reviving the MIPS architecture beyond the embedded realm. The Chinese have been steadily working on their own homegrown MIPS chip called the Loongson / Godson / Dragon CPU.

The first Godson never was available for purchase outside of China, but a company called Lemote has made various systems based on the Godson II chip.

Their dutch/european distributor Tekmote actually has a promotional sale of their Yeeloong netbook. So I decided to buy one. A nice MIPS netbook is much more convenient than dedicating a desk to an old SGI machine, and more importantly the Godson architecture is alive as apposed to dying.

I’ve been fiddling with the machine for almost a month now, here are a few observations. The Yeeloong with it’s 900mhz Loongson 2F (Godson II), isn’t nearly as fast as a modern Intel Atom. And the Silicon Motion graphics chip is lamentable when compared to an Intel GMA. That said it’s still a functional netbook, and more importantly it’s not x86 :)

The default heavily modified Debian install isn’t great either. Thus far I tried OpenBSD 4.8 on it which works but a lot of ports don’t work, but I’ve been hearing good things about OpenBSD 4.9 to be released in a month or so. Then I tried Gentoo on it, which works pretty well with some inconveniences. The Gentoo-MIPS team has been extremely helpful (thanks guys). Then I found out that it’s possible to install Debian Squeeze’s mipsel port (with a home-baked kernel) on the Yeeloong. And true to form Debian works extremely well. I’ll probably be documenting the installation procedure later on.

In the end I’m quite happy with the Yeeloong, it’s a fun device to fiddle with, especially considering almost everything is open source, no blobs required. Even it’s BIOS/Firmware called PMON is open source.