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:

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">

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


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.


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:


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:


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.