I recently obtained an external USB hard disk, and have been irritated by it ever since I got it. Or rather, I’ve been irritated by the way Ubuntu Hardy interacts with the disk. Half of the time when I connected the hard disk to my computer, I would get the following error messages:

	[ 4159.607574] usb 1-1: new full speed USB device using uhci_hcd and address 4
	[ 2079.875502] usb 1-1: device descriptor read/64, error -71
	[ 2080.099379] usb 1-1: device descriptor read/64, error -71
	[ 2080.319263] usb 1-1: new full speed USB device using uhci_hcd and address 5
	[ 2080.443858] usb 1-1: device descriptor read/64, error -71
	[ 4161.322029] usb 1-1: device descriptor read/64, error -71
	[ 4161.537896] usb 1-1: new full speed USB device using uhci_hcd and address 6
	[ 4161.945615] usb 1-1: device not accepting address 6, error -71
	[ 4162.057577] usb 1-1: new full speed USB device using uhci_hcd and address 7
	[ 4162.465330] usb 1-1: device not accepting address 7, error -71

Other than this error message, the device was totally unrecognised. The USB port worked fine, and there were no problems with the hard disk, which I could use without any problems on other computers. Ubuntu’s behaviour was very unpredictable: I could detect no pattern why it sometimes recognised the disk, and why at other times it would ignore it.

An internet search indicated this is not an uncommon problem, and usbcore, which is compiled as a module in Hardy’s kernel, seems to be the culprit. Plenty of suggestions were offered online (including recompiling the kernel) but most of them did not help me at all.

Finally, I found something on an old mailing list that solved the problem. All I needed to do was add the following line to /etc/modprobe.d/options:

	options usbcore use_both_schemes=y

(If you are curious as to why this solved the problem, please read this clear explanation.)

After a reboot, my external USB drive is now recognised without any difficulties every time I plug it in.

Advertisement

Probably more for my own amusement (especially in a year’s time) than for anyone else’s, and in an attempt to document the evolution of my aesthetics, I here give a summary of my own 2008, in screenshots.

The wallpapers I use for my desktops generally reflect my mood, and have some special significance for me at the time. What follows is therefore not just a collection of screenshots, but a reflection of what has been on my mind the last year. Not all the screenshots I’ve taken the past year are here. I’ve left out the odd desktops (like this one or this one) that didn’t last very long.

The screenshots are arranged per computer, roughly chronologically. Yantra is my main computer, on which I do most of my work. Grantha is the computer at my office. Mitra is the old Dell Inspiron 2500 laptop I wrote about earlier.

Most of the screenshots are of Openbox, which I started using in early 2007 (if my memory serves me well…). By the end of 2007, I discovered Pekwm and used that window manager almost exclusively for a few months in the beginning of 2008. In the summer, I started experimenting with Awesome 2.3, which became the standard window manager on one of my computers (mitra), and which I use frequently on another (yantra). All of these screenshots are of Debian or Ubuntu systems. Early in 2008, grantha still ran Windows XP, but that now runs Debian Testing (lenny). One of the early mitra screenshots may be one of Arch Linux, which I had installed on that laptop for a few weeks when I just started using it.

I’ve been using the same themes on grantha and mitra for months now (see the last screenshots for both). The themes on yantra tend to change more often, though I’ve been alternating a lot the last few months between the Children of the Earth themes and the Mythos theme.

I’ve had a lot of dark desktops this year, and have used a couple of dark Gtk themes often (Royalty, Mythos and Eidolon). It really is very pleasant on the eyes, especially at night, even if not all websites go well with it.

For all of you with a slow internet connection: know that this is quite a lengthy post, with more than 40 300×225 thumbnails!

Read the rest of this entry »

Due to some rather complex circumstances, I’ve been using an old Dell Inspiron 2500 laptop as my main working computer for a few months now. I received the laptop from a friend who no longer had any need for it, but apart from a badly damaged exterior casing the laptop is fine. It is about 8 years old, and has a Pentium III processor and 128 RAM. When I received the computer, it ran Windows 98, which I replaced initially with Arch Linux and later, when I realised some odd problems were actually caused by Arch and not the computer, with a command-line install of Ubuntu Hardy (8.04).

The computer runs great now. I used sysv-rc-conf and some of K.Mandla’s speed tips to make the machine boot up faster and be more responsive. Even while running Arch, though, the computer ran rather slowly when I tried using the light(er)-weight applications with a graphical user interface I normally use. Thunar and Mousepad, my favourite graphical file manager and text editor respectively, both rather light themselves, took a long time to load or close. What to speak of heavier applications like OpenOffice, or graphical audio players! Multitasking became nearly impossible (unless I decided to make a cup of tea while I waited for another application to load!).

It was obvious that the best way to make good use of this computer was to use light command-line applications. Command-line applications are nothing new to me. I’ve been using several of them for a long time: cplay, htop (hiding the duplicate entries through F2 > Display settings > Hide userland threads), nano, rtorrent, alsamixer, and so on. But this dear Dell laptop required a more radical approach: if I was going to be productive on this computer (and I had to!), I had to minimize my use of applications with a graphical user interface and perform my main tasks from the command line. This was a lot less hard than you may think, and after a few months of working with those command-line applications on that laptop it is sometimes hard to look back. I’ve (re)discovered many great applications, and am using some of those ultra light weight applications now also on my computer at work — a strong beast that could even handle CompizFusion if I wanted it to.

Below are a few of the applications that I’ve been using over the last few months, as well as some settings I changed to make working with command-line applications easier. What follows is a record of what I’ve been doing that offers some help to you for achieving the same thing. All of it works fine on my Dell laptop running Ubuntu 8.04, but I can’t guarantee it works on every computer (or other distros). As usual, the man pages are your friend.

Window manager

Since most of my applications would be run in a terminal and I would therefore use the mouse a lot less, I wanted a window manager that could manage my terminals well and that allowed me maximum control through my keyboard, but one that also looked decently. I’ve been using the tiling window manager Awesome for a while now, and that seemed like the best option to use. Openbox ran a bit slower on that laptop, so the speed advantage Awesome gave me was also welcome. To not waste any additional resources on a session manager, I did not install any and start my window manager with startx and .xinitrc (if you have no idea how to do this, have a look at this page on the Ubuntu Wiki).

Here is a screenshot of Awesome in action with several running applications:

Awesome 2.3.4 with (clockwise) mocp, alpine and canto

Working with the consoles

Over the years, I’ve learned to work with the consoles (tty1-6, press Ctrl-Alt F1-6 to view them). Even when you use an X window manager, these consoles come in handy when you want to keep an application running even when you log out in X (and you are not using screen), or to keep something running in the background. To have six of them is a bit much for most users, though, and what is the point of keeping something running when you never use it? So I first disabled all but three of them, by editing the tty* files in /etc/event.d/. In that directory you should have 6 tty files (tty1, tty2, tty3, tty4, etc.). Open the ones you don’t want to use (in my case tty4-6) and comment all lines, so that it looks like this:

	# tty5 - getty
	#
	# This service maintains a getty on tty5 from the point the system is
	# started until it is shut down again.

	#start on runlevel 2
	#start on runlevel 3

	#stop on runlevel 0
	#stop on runlevel 1
	#stop on runlevel 4
	#stop on runlevel 5
	#stop on runlevel 6

	#respawn
	#exec /sbin/getty 38400 tty5

When you reboot, you should only have access to the getty consoles you did not disable. Your X-server should load on the next available console (Ctrl-Alt-F4 in my case). You will not notice a big improvement in speed or responsiveness (at least I didn’t), but it feels good to me to not load anything that I won’t use anyway.

Ubuntu is not very good in choosing the best VGA resolution for my consoles (Arch is much better in that!). How do you change it and make those big ugly fonts a little smaller? First of all, you need to find your best VGA resolution, for example here. Then edit your grub menu file (nano -B /boot/grub/menu.lst) and specify what vga resolution should be applied at the end of your kernel line. It should look something like this (Don’t copy and past this! I’ve cut out part of the kernel line so it would all be visible here):

	title		Ubuntu 8.04, kernel 2.6.24-18-generic
	root		(hd0,0)
	kernel		/boot/vmlinuz [...] ro quiet vga=792
	initrd		/boot/initrd.img-2.6.24-18-generic

Now, how do you change the font? In Ubuntu, you can do this in two ways. If you just want to change the console font temporarily, you can do so with a command like this:

	consolechars -f Lat2-Terminus16.psf

This will set the console font to Lat2-Terminus, size 16. The font types and sizes you can use are limited, however. You need to look in /usr/share/consolefonts/ to see what fonts you have available. If you need a different encoding or are looking for a different font style, there are several console font packages in the Ubuntu repositories that you can install (do a search for “console fonts” in apt or Synaptic). For more information on consolechars, see the man page (man consolechars).

This first method is useful if you want to see what a font looks like on the console without having to reboot. Once you’ve decided on a font and size you want to use, you’ll probably want to make the changes permanent. To do so, edit the /etc/default/console-setup file and edit it accordingly. The lines you are especially interested in are the following:

	CODESET="Lat15"
	FONTFACE="VGA"
	FONTSIZE="14"

This sets the VGA font, in the Lat15 encoding, with size 14. Note that you can only specify fonts here that you have installed in /usr/share/consolefonts/. The example I give here points to the Lat15-VGA14.psf.gz package in that directory.

Reboot your system, and you should have a nicer resolution and nicer fonts on the console (note the font is only applied later in the boot sequence).

Window managers for the console?

While the tty consoles are useful, if you plan to use them extensively you’ll need a “window manager” for the console, so you can have more than one application running in each console. There are several available.

GNU Screen is probably the most popular one, and it is easy to see why. It is very versatile and offers you a lot of control. You can detach ‘windows’ and reattach them later, exiting screen does not terminate processes launched in screen, it has a handy status bar that you can customize to your liking, etc. The Screen homepage will probably not make you much wiser, but there is plenty of good documentation available on the internet to get you started (see for example here or (more elaborately) here).

My current favourite, however is dvtm, the “dynamic virtual terminal manager”, a tiling window manager for the console inspired by dwm. You can switch between different modes (maximized, vertical tiling, bottom tiling, or grid)and you (in true dwm spirit) can change the default configuration if you desire by editing the source code (which isn’t as hard as it sounds) and recompiling dvtm. The documentation found on the project’s home page should be good enough to get you started with dvtm.

Terminal emulator

When running command-line applications in X, you’ll need a terminal emulator. I’ve always liked the ease of xfce4-terminal, but that was a bit too sluggish on this computer. I wanted a light terminal that allowed tabbing, and finally returned to urxvt (rxvt-unicode), a terminal I had used in the past but had never given enough time.

Urxvt is a nifty terminal. It is light, but very feature rich: read the very long man page to see its potential. It can tint unfocussed terminals (very handy in a tiling window manager!), it supports tabs, its behaviour colours are easily configurable through your ~/.Xdefaults file, and it supports transparency if that is your thing.

Here is the relevant portion of my .Xdefaults file:

	###############
	###  urxvt  ###
	###############
	URxvt*font:		xft:DejaVu Sans Mono:size=7:VL Gothic:antialias=true:hinting=true
	URxvt*boldFont: 	xft:DejaVu Sans Mono:size=7:antialias=true:hinting=true:style=bold
	URxvt*background:	#08090A
	URxvt*foreground:	#4b555e
	URxvt*color0:		#08090A
	URxvt*color1:		#4b555e
	URxvt*color2:		#8fa1b2
	URxvt*color3:		#4b555e
	URxvt*fading:    	10
	URxvt*tintColor: 	#FCFCFC
	URxvt*shading:    	100
	URxvt*inheritPixmap: 	False
	URxvt*cursorBlink:      False
	URxvt*cutchars:		`'",;@&*=|?()[]{}

	URxvt*scrollstyle:	plain
	URxvt*mouseWheelScrollPage:	False
	URxvt*jumpScroll:       False
	URxvt*skipScroll:       False
	URxvt*scrollBar: 	False
	URxvt*scrollTtyOutput:	False
	URxvt*secondaryScroll:	False

	URxvt.perl-ext-common:	default,tabbed
	URxvt.tabbed.tabbar-fg:         1
	URxvt.tabbed.tabbar-bg:         0
	URxvt.tabbed.tab-fg:            0
	URxvt.tabbed.tab-bg:            1

	URxvt*urlLauncher:	opera
	URxvt*saveLines::       32767

To enable tabs, you need the URxvt.perl-ext-common: default,tabbed line. The URxvt.tabbed.tab(bar)-fg/bg lines specify what colours the fore- and background of the tabs and tabbar will be; the numbers given here (in this case 1 and 0) refer to the colour numbers specified earlier (URxvt*color0, etc.). To open a new tab, press Shift+Down, to switch between tabs press Shift+Left/Right.

Shell

I’ve been tempted to try zsh as an alternative to bash ever since reading this post a few months ago. Though I’ve been told in several places that zsh is slower than bash, my experience is the opposite. Bash was very slow in starting on this laptop, which lead me to try out a different shell. Zsh, on the other hand, is fast and snappy: it loads almost immediately when a terminal is launched.

Zsh is a great shell, and one that is easy to transition to as you can use most of your bash aliases in zsh. But zsh offers so much more than bash: its autocompletion is miles better than bash’s (it has menus!), it can autocorrect spelling mistakes, you can share history across sessions, and much more. I admit that I don’t use many of the great features that zsh has, but its autocompletion, autocorrection and better history management are reasons enough to stick with it. Adjusting to zsh has, so far, been very easy. In my daily usage of the shell, I have everything I liked about bash and a few more things. The main difficulty has been configuring zsh, but for that there is plenty of good information available online. It is probably best to find someone else’s zshrc file and modify that to your liking. My configuration file is here.

Zsh is in the repositories, so you can easily install it through aptitude (sudo aptitude install zsh). To make it your default shell and replace bash, use the following command:

	chsh -s /bin/zsh USERNAME

This will make zsh the default shell for the username you specify. You’ll need to log out and back in to apply the changes.

Zsh has a lot of great features that make working on the command-line so much easier. You can find great tips online (see here and here for example), so there is no need for me to repeat that here.

File manager

As I mentioned earlier, my beloved Thunar was a bit too big for my new old Dell laptop, and it took me a while to let go of it. But with every 12 seconds (average) it took to launch Thunar, my detachment increased, and after a week or so I resolved to look for a lighter, command-line file manager. That search was over really quickly! I briefly experimented with clex and fdclone (as well as some of the ugly graphical file managers such as Gentoo), but it became very quickly apparent that there is no better command-line file manager than Midnight Commander (mc).

Midnight Commander running in urxvt

Midnight Commander is a very powerful dual-paned file manager. It has something of a learning curve (don’t all good applications), especially if you are used to point-and-click graphical file managers, but once you know your way around it, you’ll be glad you invested the time and energy. If run in X, you can use your mouse with MC, but you’ll only see the real potential of this file manager when you learn to control it from the keyboard. This manual and this article helped me enormously in familiarizing myself with MC, and I created a much used little ‘cheat sheet’ for myself with the most commonly used keybindings to help me learn them.

MC is themeable; you can change the colours of every aspect through the ~/.mc/ini file (if you don’t have one, run MC and in the Option menu select “Save Settings”). Note that you need to edit this file while MC is not running; MC writes to this file when it exits, thus disabling anything you’ve changed while MC was running. At the bottom of that file, you can specify the colour settings MC should use. Have a look at my configuration file to figure out how to do this. The possible colours are limited: black, red, green, brightgreen, brown, yellow, blue, brightblue, magenta, brightmagenta, cyan, brightcyan, lightgray and white.

If you want to properly view .odt, .pdf, or .doc files in MC with the F3 View command, you should install several other applications that MC can use:

	sudo aptitude install antiword poppler-utils o3read

Once I realised how much faster Midnight Commander copies files than any graphical file manager I’ve used, I started using MC also at work, alongside my much beloved Thunar.

Text editor

My default text editor is nano at the moment. It is nice and simple and is good enough for most of the simple editing I do at the moment. That it shares many keybindings with alpine, my email client, is a handy benefit.

Unfortunately, nano is not the best tool to edit complex text files. Since I spend most of my time on the computer writing, I need something with a little more bling. So far I’ve been using OpenOffice (Abiword just isn’t good enough) and Gedit with the Latex plugin, but I’ve also started to experiment with Vim and Vim-Latex.

Though Vim has a reputation of being an editor with a steep learning curve, I haven’t had much difficulty with it so far. On the contrary, I’ve found it to be rather easy to learn. Vim comes with a great tutorial, called vimtutor, that helps you to learn Vim not by cramming keybindings and commands, but by working with those commands. The tutorial lasts about half and hour (depending on how much time you take for it), and after that you should be familiar with all the basics. There are also several good tutorials online (here and here for example) when you require more than vimtutor covers.

Audio player

There is no lack of command-line audio players, and many of them are well known. If you are looking for an audio player that fetches album art, lets you browse Wikipedia, burns tracks to CD, and waters your plants while you are away, the command-line audio players will be a big disappointment to you. But if you are looking for something that plays your audio files without consuming most of your computer’s resources, you’ll have plenty to choose from.

Even before I started working on this laptop, I was using Cplay to play my audio files. Cplay is light, has a clean interface and is very straightforward in its use, and if you’re still unsure how to use it, K.Mandla has a great guide for you. Cplay is really a front-end to other audio players, which you also need to install. I recommend you use mpg123 (and mpg123-alsa so it doesn’t interfere with other applications that use alsa) rather than mpg321 to play mp3 files; on all the computers I have tried this, mpg123 uses almost 20% less cpu than mpg321.

The only downside to cplay is that it doesn’t allow you to control it with commands. To pause or skip to the next track, you need to do so within cplay. I like to keep my audio player in the background, however, and pause it with a global keybinding (Ctrl+Alt+Space) from wherever I am working. I normally use mpd and a front-end for this, but am too lazy to set up a database and constantly update the database whenever I add some music.

I am currently flipping back and forth between cplay and Music On Console (mocp). Mocp uses a little more resources than cplay, but not enough to make a big difference. It has a simple, clean interface the way I like it, and you can easily control it with special commands (mocp -G to toggle play/pause, mocp -f to move to the next track, etc.). Mocp can keep running, as a daemon, after you close it too if you like that.

Movie player

It makes a lot of sense, but before I started using this laptop, I had no idea how much resources are needed to play a video file or a DVD. VLC, Totem and (G)xine made it nearly impossible to have some other resource intensive application running at the same time.

Luckily there is MPlayer. And I don’t mean a graphical front-end for mplayer (such as KMPlayer, SMPlayer or Gnome-mplayer), which seemed as hungry as the other video players with a graphical front-end, but the mplayer base you can use with the command mplayer filename.avi. Playing a video file with mplayer on that laptop uses less than a third of the resources any of the graphical players use!

Mplayer, without a graphical front-end, offers a host of additional features many of the graphical clients lack. Since there is no graphical interface, you need to navigate and play the video file with your keyboard. The right and left arrows forward and rewind 10 seconds, up and down forward and rewind 1 minute, pageup and pagedown forward and rewind 10 minutes, p pauses or unpauses the video, etc. You can adjust the play speed (with the [ and ] keys), and — one of the greatest features — adjust the audio delay with the + and – keys.

Email client

In my undergraduate days, before I had a computer I used the computer of my room mate, which ran a version of Suse (if I remember correctly). According to him there was only one good email client and that was pine, so I was forced to use that to handle my emails. After an initial period of frustration, I got used to the interface and the keybindings and liked the simplicity of it. However, when I got my first computer (running Windows), I replaced pine with Netscape and later Opera, which I still use this day for email.

Pine has since been transformed into Alpine, which is now once more my email client. It’s interface is simple, as are its keybindings, and it is a lot easier to set up or work with than mutt.

I use Gmail, and am able to access my Gmail with IMAP through Alpine. This guide was helpful to set it up, and this guide told me how to get Gmail labels to appear as folders in Alpine.

If you’d like a spell checker in Alpine, you can install Aspell (with the dictionary files of your language) and set the speller= option in ~/.pinerc to speller=aspell –mode=email check. Ctrl+T will then launch the spell checker.

RSS reader

I’ve finally decided an RSS reader is useful. I never really saw the need to use one until I started using this laptop, and realised that most browsers are resource intensive and that I could minimize their use by using an RSS reader to read most of the blogs and news-sites I normally frequent. It took me a while to find something I liked, though.

Raggle is recommended again and again, but I found it clunky. The interface is too complicated for me (I don’t need to see three different windows at the same time), and it used quite some resources on this computer. Snownews had a great clean interface, but only showed the first few sentences of each news item, which defeats the purpose of an RSS reader for me. Newsbeuter was a good alternative, but ultimately Canto, a new feed reader won my heart.

Canto was born out of NRSS and has everything I like. It is light, has a sober interface (I really don’t need to see all the links within blog posts), it has customizable keybindings, and it is simple to use and setup. The documentation on the website is great, and the IRC channel is very friendly and helpful.

If you run Canto on Ubuntu, you may want to install Debian’s python-feedparser package, as the Ubuntu version still has a bug that doesn’t go well with WordPress feeds (instead of the post titles, you’ll see the author’s name).

Web browser

I’ll be honest. Command-line browsers are not really my thing. I occasionally use Elinks, but it most websites are not made for text browsers, and text browsers easily irritate me.

After experimenting with the graphical browsers on this laptop — Epiphany (reasonable, but still a little slow), Kazehakase (which crashed a bit too often), Dillo (nice and fast, but a little too simple), Firefox (too heavy for this laptop) — I returned to the best browser on earth: Opera.

Opera is the fastest and lightest graphical browser I used on this laptop (not considering Dillo). I first went through this list and turned of everything I don’t use, and installed the new Flash 10, which is a lot lighter than version 9.

With all these command-line applications I rarely need to use the mouse, so I was glad to found out “Vimperator for Opera”. It isn’t as polished as the standard Firefox Vimperator plugin, but after modifying the Vimperator keyboard layout for Opera, I now have a browser that I can control entirely from the keyboard. The only weakness is the poor implementation of one of Vimperator’s greatest features: the hint mode, which helps you to navigate links. Unfortunately, you need Javascript on for it to work (I normally turn it off), and you can only open links in new tabs. I therefore haven’t given up on my mouse just yet, but at least I can minimize its use enormously.

~ ~ ~

After a little experimenting and exploration I now have a fully functional computer, than runs fast and can do a lot more than people expect. I pains me to see people throw away computers with similar specs (or even better!) that are still fully functional, but are ‘slow’ compared to the new computers that are produced today. If this computer was good enough for general use 8 years ago, why would it not be good enough for general use today? People sometimes laugh when they see my battered old laptop case, but are impressed by the speed and power of the applications that I run on it.

Tint2

July 23, 2008

Some of you may use, have used or know of tint task manager (ttm), a simple light weight task list with a pleasant and configurable aesthetic. The project showed very little progress, until someone else (?) decided to hack on the code and come up with an improved version of the task list: tint2.

The improved version added extra configuration abilities as well as drag/drop support, but is clearly intended to be more than just a task list. The latest release, 0.6, added among other things a configurable clock, and launchers seem to be planned. Like some panels, Tint now also automatically sets a margin for it so that other windows cannot overlap it and the task list always remains visible (unfortunately, you can’t make this optional, as far as I can tell, so I cannot use 0.6 for my tabbed desktop effect…)

To install it on Ubuntu Hardy, you’ll need to install the following dependencies: libcairo2-dev libpango1.0-dev libglib2.0-dev libimlib2-dev libxinerama-dev

The configuration file is still fairly straightforward, but contains a lot of extra features over ttm. If you get lost in all the settings, you’ll be happy to know that a manual with pictures (in pdf format) is available on the tint2’s website.

If you like minimalistic configurable panels this is a project to keep an eye on. If they add a system tray and launchers, I’m sure many users will replace pypanel with tint2.

Update!

May 26, 2008

Over the last few weeks, I have slowly been updating the Openbox guide. Openbox 3.4.7 has been out for a little while now, and Ubuntu Hardy was also recently released. I needed to update a few sections of the guide (mainly those covering the installation of Openbox, Obconf and Obmenu, and the shutdown/reboot section). The Openbox FAQ has been changed a little as well.

But this new version of the guide is more than just an update. I have thoroughly revised the entire guide, rewritten some parts of it, and added a lot of new material. So what has changed?

First of all, it has a table of contents now 🙂 , which should make navigation easier and give the reader a better grasp of what areas the guide covers.

I have added a lot of new material to it: I have enlarged the sections on panels, docks, system trays, pagers and clocks. The list of ‘useful applications’ at the end of the guide is now much longer (it now contains eleven applications, whereas the old one contained three). I have tried to give KDE/Qt applications more attention, and included a section on how to deal with Qt themes in Openbox. The guide contains more information about font configuration and mouse cursor themes.

I have tried to clarify and explain the commands and applications more, hopefully making it more accessible and educational for persons relatively new to Linux and/or window managers. I have also added a lot more links to external sources of information, project websites and howtos/guides.

Here are some statistics:

The old guide contained 7275 words; the new version of the guide has 9343 words (2068 words more). The old version had 90 links to external sites, the new version has 159 links (69 links more).

The old guide was completed on 26 November 2007, and revised on 22 January 2008 (some minor changes were made in between and since then). Since it was posted, the Openbox guide has received 14,218 views (13,302 and 916 before it was moved to its own page). That is an rough average of 78 persons a day. Not the most frequented website in the world, but a lot more than I thought I would get when I wrote that guide. The entire blog has had 25,968 people over, so more than half of the views were for the guide. ‘(An) Openbox guide’ is the second most common search term that lead people to my blog (297; the first place is occupied by ‘dmenu‘ with 304 hits — it seems there isn’t that much information about dmenu available on the internet…).

Here is a picture of the stats for this blog:

And here is one for the Openbox guide alone:

Writing and maintaining the Openbox guide sometimes forces me to venture into areas I would normally not go: I don’t like docks, for example, but have tried some of them out so I could write about them. I no longer use xcompmgr and transset, but need to know how to use it as my of the readers of the guide are interested in it. I need to download, compile and install a lot of applications. One of my computers is (not exclusively) used for that. It started with a slim command-line Ubuntu Hardy install, and has now well over a thousand packages installed! I do discover a lot of interesting applications this way, though — especially old(er) ones, many of which are no longer developed, but are still handy, interesting and/or fun.

So that’s it. Go and have a look at the new guide 😉 I hope you find it useful. If you have any suggestions for improvements, or find some grave, less-grave or not-very-grave errors in the guide, please let me know. I love feedback.

The artwiz fonts, a set of bitmapped ‘futuristic’ fonts, are no longer in Ubuntu’s (Hardy’s) repositories. But don’t despair! Though installing these fonts is no longer as easy as apt-getting it, installing them manually isn’t that hard.

Download the fonts from this Sourceforge page. These are the ‘improved artwiz fonts’ that should work in Gtk2 and KDE3 applications. Once you reach the download page, you’ll see there are three versions available: German (de), English (en) and Swedish (se). These are basically the same fonts, but with different language encoding support (think ü, ö, etc.). You’ll only need one of them; pick the one you like.

If you want full ISO-8859-1 support, you can also use the artwiz latin1 fonts.

Extract the archive and move the extracted folder to /usr/share/fonts/X11/misc (the examples below use the English (en) font set)

tar xvjf artwiz-aleczapka-en-1.3.tar.bz2
sudo mv artwiz-aleczapka-en-1.3 /usr/share/fonts/X11/misc

Renew your font cache:

sudo fc-cache -f -v

Reconfigure your fontconfig settings:

sudo dpkg-reconfigure fontconfig

Enable the use of bitmapped fonts:

sudo dpkg-reconfigure fontconfig-config

Answer the questions as follows. First select the font tuning method (I chose Native):

Set the subpixel rendering of the fonts to ‘Automatic’:

And finally, enable bitmapped fonts:

Once you have restarted X, you should be able to use the artwiz fonts in your Gtk, Qt and Openbox settings.

If you want to use the artwiz fonts in conky, you no longer have to disable xft. To display conky with the artwiz font snap, use the following settings:

use_xft yes
font snap-7

Finally, if you want the artwiz fonts to also show up in xfontsel, specify the path to your artwiz fonts in the “Files” section of your /etc/X11/xorg.conf. Here is what that section looks like on this computer:

Section "Files"
FontPath "/usr/share/fonts/X11/75dpi"
FontPath "/usr/share/fonts/X11/util"
FontPath "/usr/share/fonts/X11/100dpi"
FontPath "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath "/usr/share/fonts/X11/Type1"
FontPath "/usr/share/fonts/X11/misc/artwiz-aleczapka-en-1.3/"
EndSection

Restart X, and you should be able to select them in xfontsel.

Thanks to Ubuntugeek and the Ubuntu Wiki.

During my recent stint with Firebox, and before that while I was trying out wmii, I’ve grown very quickly accustomed to dmenu. After only using it for a few hours, I fell in love with it: it is so convenient to launch an application when you don’t have your hands on the mouse; launch dmenu, just type a few letters from the application name, make sure you have the right app selected, press enter and your app shows up.

Unfortunately, Firebox is still too unstable to use as a primary window manager, and I haven’t grown accustomed to tiling window managers (yet?). So I began to wonder whether it is possible to run dmenu or something similar in Openbox and Pekwm, and – guess what? – it is very easy! (Why did I ever think otherwise?)

First, you’ll need to install dmenu. You can download the source code from the dwm/wmii website and install that (‘sudo make clean install’ in Ubuntu). To launch dmenu in Openbox and Pekwm, I use the following command:

$(dmenu_path | dmenu -b -nb '#E0E9D0' -sb '#a6b38d' -sf '#070806')

This launches dmenu at the bottom of the screen (-b), with a colour scheme to match the Aeterna Openbox and Gtk theme. You can change the settings (everything that comes after ‘dmenu’ in the above command) to suit your preferences; read the man pages (‘man dmenu’) to see what options you have.

I have this bound to Alt+F3 in both Pekwm and Openbox (Alt+F1 launches the root menu and Alt+F2 launches gmrun). In Pekwm, I added the following to keys file:

KeyPress = "Mod1 F3" { Actions = "Exec $(dmenu_path | dmenu -b -nb '#E0E9D0' -sb '#a6b38d' -sf '#070806') &" }

To get dmenu to work in Openbox was a little more complex. If I added the above command to the rc.xml file dmenu wouldn’t launch (Openbox-Message: Failed to execute ‘$(dmenu_path | dmenu’)’: Failed to execute child process “$(dmenu_path” (No such file or directory) say the xsessions-errors.). I’ve tried adjusting the command in several ways, but couldn’t find one that did work, so I ended up creating a script to launch dmenu in Openbox. It is very straightforward:

#!/bin/sh
exec $(dmenu_path | dmenu -b -nb '#E0E9D0' -sb '#a6b38d' -sf '#070806')

I saved the file as OBdmenu in ~/.scripts, where I keep all my scripts, made it executable (chmod +x ~/.scripts/OBdmenu), and added the following to the rc.xml file

For Openbox, this is what I added in the <keyboard> section of the rc.xml file:

<keybind key="A-F3">
<action name="Execute">
<execute>/home/urukrama/.scripts/OBdmenu</execute>
</action>
</keybind>

Here is a screenshot of dmenu running at the bottom of the screen in Openbox:

OBdmenu

The only downside to using dmenu in this way is that the applications launched by it don’t show up with their application name in your favourite system monitor, but as the command you used to launch dmenu (OBdmenu in my Openbox session, $(dmenu_path etc. in my Pekwm session). I have no idea how to get around this, but it is only a detail. Otherwise, dmenu is fantastic. It won’t replace my right-click root menu, but it is a great addition to any window manager.

Update: As Tami points out in a comment below, you can get around this problem if you use the following command to launch dmenu:

`dmenu_path | dmenu -b -nb '#E0E9D0' -sb '#a6b38d' -sf '#070806'` && eval “exec $exe”

In Pekwm, you can use this command in the Keys file, but in Openbox you’ll still have to use a script to launch dmenu (as explained above).

This should also work in other window managers, such as Fluxbox, or desktop environments like Xfce, though I haven’t tried it.

Firebox

February 5, 2008

In my search for fun window managers to fool around with, I recently came across Firebox, a light and actively developed window manager, “something between Openbox and wmii: small, quite fast, eye candy and keyboard oriented, with some or[i]ginal features” (according to the website).

I haven’t been able to test the latest version yet (0.5), as I couldn’t meet its dependencies on my experimentation machine running Ubuntu Dapper (please don’t ask me why I use a semi-outdated OS on an experimentation machine :-)), so for now I’ve only been playing with the previous release (0.4), which is about half a year old. So far, I’m liking it a lot. Sometime soon I’ll install 0.5 on a more recent OS, as, according to the changelog, it seems to have improved substantially in features (tabbed browsing, compositing support) and performance.

So what is Firebox like? Here is a screenshot, using the default Firebox theme:

Firebox

As you can see it resembles Openbox: it has a root menu, but no taskbar, and its alt-tab and desktop switching dialog looks very much like those from Openbox 3.3. Firebox also has a nice configuration application, fbconf, which resembles Obconf. Like Openbox, the Firebox configuration is done in xml files. The website states that Firebox “is not forked from Openbox, Fluxbox, Blackbox or even Hackedbox; it is written from scratch, in C lang[u]age”, but it is clear where the developer(s) took some inspiration from.

Here is a picture of Fbconf, the configuration application of Firebox:

Fbconf

One of the neatest things about Firebox is its dmenu. Users of wmii are familiar with this: press Alt+P and a menu bar comes up containing all the installed applications; type the first letters of the application you want to launch, and it shows all the applications that start with those letters. By default the dmenu bar appears in the middle of your screen, but you can also set it to display at the top or bottom.

Firebox dmenu

You can add entries to the dmenu, both to launch applications and to perform internal Firebox actions, though I have to admit I didn’t quite understand yet how exactly this works. Unlike in wmii, Firebox’ dmenu can display icons, though by default it doesn’t do so.

As far as I could tell, the root menu can unfortunately not be configured, which makes it rather unusable, and the developer is even considering dropping it all together. The combination of the dmenu and the root menu is great, though, and I hope both continue to be developed. Firebox has some nice touches, like the window geometry which is shown in the title bar (instead of the usual pop-up) when you resize or move windows.

The documentation for Firebox is fairly decent. If its comments on the configuration seem rather brief (“Please use the preferences editor.”), that is because all the configuration can be set in the preferences editor (fbconf). The theming documentation is very elaborate, which is always a good thing. 🙂

There are six themes available, but those don’t seem to work with 0.4 (they either crashed Firebox or didn’t load at all). The themes that are available are not quite along my aesthetic lines, but that is alright. The theme engine supports some pixamps. The theme options are a little confusing at first, but there are plenty of options to work with.

Firebox runs slightly lighter than Pekwm or Openbox, but the version I used, runs very slow at times, especially when you exit the dmenu or root menu. Since Firebox is still in relatively early stages of development, it is still rather limited in what it can do, and a lot of configuration options I’d like to see are still absent. Firebox 0.5 seems to have improved considerably over 0.4, the version I talk about here, and hopefully it continues to mature that way. The next release will be focused “on making the manager more keyboard oriented: tiled windows, improved keybindings and constraints.”

The occasional bugginess of the dmenu, its crashes, and the unconfigurable root menu make this release of Firebox not very suitable to work with, but I’ve developed a certain fondness for it. Sure, it crashes at times, and has a few occasional glitches, but this project has potential. If it becomes more stable and increases its functionality (keyboard bindings, more window management options, tiling windows, perhaps even a dock/slit) this will be a solid window manager. At the moment it appears to be largely a one man project (the only developer is Cyrille Bagard), but hopefully others will join and help out. Though I won’t be using Firebox as a working environment anytime soon, I’ll use it as a play ground and will keep an eye on its development. Perhaps I’ll even create a theme or two for it, just to support it in a way that I can.

One of the great features of Pekwm is the ability to use the screen edges. Just like the desktop, you can click on the screen edges to perform certain actions. In the default settings, right clicking on the screen edges brings up your root menu, middle click on it and you see your client menu, left click on it and you will switch to the next workspace in that direction.

The beauty of the screen edges is that, unlike the desktop, they remain available when you have maximize windows or windows in full-screen mode. This means you can still use the mouse to call up the root menu (without setting a margin, as you would in Openbox), or perform other actions. I really hope this is implemented in one of the future releases of Openbox (and hope any of the Openbox devs is reading this! :-)).

Earlier I have written about how you can use the screen edges to semi-autohide the harbour, but their potential is much greater. I will describe two examples here, and hint at a few more uses .

Tilda

Tilda is drop down terminal. Though I rarely use it myself, it is a handy app if use the terminal regularly, but don’t want to switch to the open terminal whenever you need it: Just press a key (F1 by default) and your terminal window drops down from the top of the screen.

Tilda only appears with a keypress, though, so you’ll have to translate or simulate the keypress with a command. After much searching and asking, I finally found several ways of doing this. The easiest is by using xautomation. First install the application:

	sudo aptitude install xautomation

Xautomation allows you to control X from the command line, and consists of several applications. The one you will need here is xte, which generates fake mouse or key inputs. To have F1 pressed and released, you would use the following straightforward command:

	xte "key F1"

(A more complex way of doing this is by using xmacro as explained here)

Now you will have to bind this to a mouse action on a screen edge. Since Tilda is a drop down terminal, I prefer the upper edge (‘Up’) and add the following line to my mouse file (in ~/.pekwm) in the ScreenEdge Up section:

	ButtonRelease = "1" { Actions = "Exec xte 'key F1'" }

Reload Pekwm and whenever you left click on the top screen edge, Tilda will appear (provided Tilda is running obviously). If you would like Tilda to appear whenever the mouse moves over the top screen, use the following line:

	Enter = "Any Any" { Actions = "Exec xte 'key F2'" }

Skippy

The real reason I started playing with Pekwm’s screen edges was to play with one of my much-loved applications: skippy, a full screen task switcher

I wanted to see if I could create a Mac exposé-type effect: if I move my mouse in a particular corner of the desktop, skippy automatically launches and I get a miniature version of all open applications on my screen.

Using Pekwm’s screen edges and xte, this is fairly easy to achieve, were it not that skippy doesn’t actually work like it is supposed to in Pekwm. Skippy launches fine, but remains under the open applications. I’ve tried several things, and the only workaround I have now is to raise the skippy window with wmctrl, but even that is problematic.

If you haven’t done so already, install wmctrl first (sudo aptitude install wmctrl). You now need to get the id for the skippy window. To do this, launch skippy as usual and keep the window miniature windows open. In a terminal type “wmctrl -l” and you will get an overview of all running windows, like this:

	0x02a00001 -1    N/A N/A 
	0x01e00004  0 yantra Blank page 
	0x01a00003  0 yantra urukrama - File Manager 
	0x0240001e  0 yantra Terminal 
	0x01800002  0 yantra [pekwm-users] Skippy and Pekwm 0.1.6 - Opera 
	0x01600003  1 yantra System Monitor 
	0x00c00003 -1 yantra panel 
	0x01000001 -1    N/A netwmpager

The first column contains the window identity as a hexadecimal integer, the second the desktop number (-1 is a sticky window), the third contains the name of your computer, and the final column shows the window title. In the above list, Skippy is the first entry (where the title is given as N/A). You will need the window id of this (in this case 0x02a00001) to raise skippy automatically to the top whenever it is launched. Then open your ~/.pekwm/mouse file and add the following lines to the ScreenEdge section (choose whichever screen edge you prefer; I add it to the right one):

	ButtonPress = "2" { Actions = "Exec xte 'key Scroll_Lock'" } 
	ButtonRelease = "2" { Actions = "Exec sleep 1 && wmctrl -i -r 0x02a00001 -b add,above" }

I have configured skippy to launch when I press Scroll_Lock, so these settings will launch skippy whenever I middle click on the (right) screen edge. Replace Scroll_Lock with whatever key you have bound to skippy. The second line is used to make wmctrl raise the skippy window to the top a second after it is launched.

There are several important disadvantages of this workaround. First of all, skippy’s id changes with every session, which means you’ll have to edit the above entry at the beginning of every session. The second downside is that skippy won’t be raised if it first needs to take a snapshot of all open windows, as that takes more than a second. In such a situation, you’ll need to launch skippy twice.

Despite its limitations, I think this is rather neat 🙂 I am not sure who is to blame here – Pekwm or skippy – but I hope it is Pekwm because that would increase the chances that this problem gets fixed (skippy is no longer developed). If you know of a simpler way to go around this problem (or how to solve it!) please let me know.

Other uses

The potential of the screen edges is great, as you’ve probably guessed by now. Though the mouse has only a few buttons, you can combine those with modifier keys (Ctrl, Alt, Mod4), which gives you a few more options to use on the four screen edges you can play with.

Here are a few more ideas: use the screen edges to launch osdsh to display the time (osdctl -t 4), or the state of your laptop battery (osdctl -b “Battery Power”,$(acpi|cut -d “,” -f2|cut -d “%” -f1|cut -d ” ” -f2)), launch an application launcher like apwal, hide panels or taskbars like visibilty or tint that don’t support hiding (this will be a bit slower, no doubt, but it works), tile windows with tile, etc.

Frequently asked questions

January 29, 2008

I’ve added a section with some answers to frequently asked questions. These are questions that come up again and again on the Ubuntuforums or on the ‘search engine terms’ list of this blog, but that I didn’t answer (directly) in the Openbox guide. Most of these questions are also not addressed on the official Openbox FAQ. I will keep that section updated, and add to it when other questions increase in frequency.

This is just another thing I wish I had when I started exploring Openbox. Hopefully it will be helpful for all of you new Openbox users.