Using Openbox as window-manager on linux
Aaron Sloman

(This is a supplement to my web site on using Linux on various Dell laptops)


After trying Openbox I reverted to using CTWM on all my machines early in 2012.
Here's more information about CTWM (with screenshots):

Installed: 20 Jan 2009
Last updated: 5 Jul 2009; 9 May 2010; 22 May 2011; 15 Aug 2012; 26 Apr 2014

(In other words: the normal conditions of mutual-help for Linux users apply!)




For many years I have used ctwm as my window manager on linux: it is very fast, very robust, and very tailorable. However recently it has been unable to provide some of the required functionality, e.g. allowing the 'fullscreen' option to work with flash.

After some investigation I decided to try openbox, and am now using it as my default window manager on a desktop PC running Fedora 10, and a Dell Latitude D610 laptop running Fedora 8. It works well both with the gnome session manager (choose openbox from the session menu when you log in) and without the session manager (using just the 'startx' command and a startup file in '~/.xinitrc' to start up the windowmanager and a few clients -- available below).

For information about Openbox see

Openbox seems to be about as fast as CTWM, and it is very extendable, though not as tailorable, for my purposes, as CTWM. Later I'll produce a list of deficiencies. Some are on the openbox bugzilla site.

I don't find Openbox as easily tailorable as CTWM using a text editor. The configuration files use bulky xml, and not all the options I want are provided, e.g. ability to restrict keyboard actions to root context, and the ability to give a key (e.g. F1) a function (with mouse in root window) without having to use a modifier as well.

At first I thought it did not allow users to specify border width for windows, and I found the default of 1 pixel too small when using the left or right edge of a window for re-sizing. However, I later discovered that this could be done using themes. I can see the usefulness of themes but personally I would rather have everything in one configuration file, at least as an option.

I have also not found any way to assign different xterm windows, with different titles, to different desktops in the startup file, rc.xml. However it is possible to use the window class to do that, so that you can make instances of a particular package come up in a particular desktop. Use the 'xprop' utility to discover the window class of an application you use. (See 'man xprop'). This sample rc.xml file shows how to make xclock and xdaliclock displays appear on all desktops.

The obconf program and themes

The 'obconf' utility allows you to do some customising using a graphical interface instead of editing startup files. Mostly I would rather edit files which I can then copy to different machines, but the obconf utility is useful in introducing some of the options, and especially displaying themes available for you to try out.

The most important use of obconf is with themes. openbox allows you to have a collection of different themes one of which is specified as the default in your rc.xml file. Once you understand what themes are and how they vary you can choose one, make a local copy and edit its configuration file.

A collection of themes is provided in /usr/share/themes (in Fedora, and possibly other versions of linux?) and you can have other themes in your own ~/.themes directory. The obconf reads in all the theme definitions available and gives you a summary display of what they look like. You can rapidly switch between them to see which one you like. If you want to customise one of the themes provided you can copy it to your ~/.themes directory and rename it.

A theme has a directory corresponding to its name, and for each application using that theme a subdirectory with the name of the application. For openbox the subdirectory is called 'openbox-3' at present, and it contains one file 'themerc'. That's the one you edit. Other things are possible, e.g. extra bitmaps for the theme.

I copied a theme called 'Clearlook-Olive and edited it, renaming it as 'CLO' (for 'ClearLookOther) , available here.

The CLO directory has a subdirectory openbox-3 which contains the 'themesrc' file. After copying I added a number of comments to the file, though a lot more could be added. If you wish to try this copy the directory CLO and its contents (included in the tar file below) to your ~/.themes directory. My CLO theme uses 4 pixel widths for left and right edges of windows, which makes them easier to grap for re-sizing, but that width can easily be changed.

For more on themes see:

and the complete specification for the 'themesrc' file format:

Alternatives to Openbox

Blackbox and Fluxbox are alternative window managers partly similar in spirit to OpenBox.

I have tried fluxbox, and found it just as lightweight as Openbox, but much easier to configure in a text editor.

Unfortunately, like CTWM, Fluxbox does not seem to support fullscreen in flash. So I assume it is out of date. It does not seem to be under development.

I also tried Blackbox, which is partly similar to Fluxbox and Openbox. It seems to be very light weight and does support fullscreen flash, but seems to be very hard to tailor, and has some serious limitations. E.g. left and right sides of window frames are not draggable for re-sizing, only the titlebar and the bottom corners.

So I have provisionally chosen Openbox as the successor to CTWM and will try tofind out how to add the missing functionality.
For comparisons of this family of window managers, see

Current situation (Early Feb 2009)

Despite the limitations of Openbox, I am learning to live with it, as it provides me with as many desktops as I want (8 for my desktop PC and 10 for laptop use, to easily support pre-prepared demos for presentations) and it allows rapid switching between desktops using the keyboard (in my case CTRL+Left and CTRL+Right) in addition to wrapping at the left and right ends, unlike the stupid gnome window manager.

Openbox seems to be under active development, and there is a bugzilla reporting site for it, though I have no idea whether anyone is reading my suggestions in there.

So I have provided brief instructions and my own configuration files here. There are many different themes and sets of configuration files available on the web. I have not yet learnt how to use themes. In any case, I prefer a simple, very uncluttered, interface -- no fancy pictures or transparent editor windows to distract me from real work.

I have discovered that 'gmrun' is a useful utility for launching commands without having to run an xterm window, and invoke this from one of the editors.

I have also made the openbox main menu invoke the file manager 'pcmanfm', described here:
It is possible to use the gnu 'nautilus' file manager, at the cost of losing the Openbox mouse menu until you kill nautilus!
John Lockard kindly informed me that this problem can be avoided if nautilus is started with this commnd
    nautilus --no-desktop

There is a package called bbkeys which, I believe can extend the use of the keyboard with Openbox, but I have not figured out how to get it to do any of the things I want.

Getting started with Openbox

Get the packages
First install the main package, and any or none of the three optional extra utilities.

In Fedora do:

## required installation:

    yum install openbox

## optional installation:

    yum install obconf gmrun pcmanfm
In other linux installations you can probably use 'apt-get' instead of 'yum'.

I found xterm, xdaliclock, and other things I use were not automatically provided by Fedora 10, but 'yum install' managed to get them all. My sample files invoke xterm in various places, but you could choose another terminal window, eg. gnome-terminal. I find that several of them provide extra menus and options, but fail to support the full xterm functionality. You may find that 'aterm' is a good alternative: it has a much nicer scroll bar than xterm, but it sets the $TERM variable to 'rxvt', which may need to be overridden.

There is a package called 'bbkeys' that can be used to extend the keyboard functionality of Openbox, but I found it hard to configure and have temporarily abandoned it.

No desktop manager or icon mananger on the screen

Most people who use multiple desktops (whose absence on Microsoft Windows is one of many things that makes me intensely dislike using that operating system see "Why do they put up with it?") are accustomed to having a panel somewhere on the window that shows the collection of available desktops, and indicates the one that is active. In CTWM you also get a little map of what is on each desktop and you can use the mouse to move things from one desktop to another. Often there is also a place where minimised (or as they used to say 'iconised') windows are shown, so that you can 'maximise' them by clicking on their icons.

Neither a desktop mananger nor an iconised window manager is on the Openbox desktop by default. There are probably add-ons that provide them, but the default is a very uncluttered desktop. However, there are various tools linked to mouse or key actions that compensate, and you can set things up so that if you move from one desktop to another you get shown a little map of the desktops with an indication of which one you have landed on.

Perhaps the most useful is the mapping of the middle mouse button (anywhere on the root window) onto a function that brings up a list of all the desktops and all their contents (including minimised contents), so that you can then click and go to whatever you are looking for. Also ALT+tab allows you to cycle through all the items on the current desktop, visible or not. There is a keyboard function that allows you to jump to a specified desktop or to cycle forwards or backwards through all of them, which I map onth CTRL+Right and CTRL+Left. With the mouse cursor in the root window you can also cycle through desktops. However I set input focus to follow mouse, so I have to be careful in case the focus lands on something that is sensitive to mouse wheel. (One of many reasons why OB needs to be extended to allow keyboard functions to be defined only to work in the root context.)

So everything remains accessible even while totally invisible. There are other things to find in the configuration files and online documentation.

Set up your configuration
Installing openbox will get you a set of default system wide configuration files in

You can copy them to your own directory, where you can edit them:
    mkdir -p ~/.config/openbox

    cp -p /etc/xdg/openbox/* ~/.config/openbox
There are three files required for a minimal configuration
        run once just before openbox starts up
        Use a delay to launch X11 windows, and background them,
        so that the don't come up until openbox has started.
        I have some example commands in here

        You can define exactly one menu to be invoked in the root
        window, using the right mouse button. I have modified this
        to make it very easy to invoke gmrun, to launch a command,
        and to start an xterm window.
        My modified version of the default is here

        This is the main configuration file in which you can define
        how menus should look, how many virtual desktops you want,
        which keyboard actions you want, etc. My version defines two
        ways of launching an xterm window, one big and one small, using
        CTRL+F1 and CTRL+F2 respectively. I also cycle left and
        right through desktops using CTRL+Left and CTRL+Right.
        I have included an option to run 'gmrun' using CTRL+F4
        My modified version of the default is here
Anyone who so desires has my permission to copy and use any of the example files provided here, most of which are themselves slightly edited versions of files that came with OpenBox.

Please check the executable files before you use them, especially and the .xinitrc file mentioned below.

Using gmrun
One of the nice things about using gmrun is that it maintains a history of commands. It also supports tab completion, and if you give it a url it will launch firefox, etc. I have slightly modified the default initialisation file, which is
to specify a location for the panel and wider default text-box width. My version, based on the default version, is here. Later I shall document them.

I previously wrote:

A serious flaw in the design of the gmrun program. is that there is no simple way to get rid of it if you bring it up by mistake -- you have to give it a command to run. I shall probably replace it with a one line xterm window, which can be dismissed by typing CTRL-D into it, and which doesn't disappear every time you use it, so you can repeatedly give commands and it also supports history and tab completion.
I am grateful to Jared Prins who informed me that gmrun can be dismissed by pressing the ESC key. So my objection was based on lack of information. ('gmrun' needs either a 'man' file or a 'help' option.)
(Added: 5 Feb 2009)

Sample .xinitrc

A sample ~/.xinitrc file invoked when you start X from a console, is here. If you fetch it make it executable and remove the comments at the top.

Tar file with sample config files

A tar file containing my tailored extensions to Openbox and a sample .xinitrc file is available here: configfiles.tar.gz

Current contents

-rwxr-xr-x    2087 2009-01-22 17:57:34 dotxinitrc
drwxr-xr-x       0 2009-01-22 04:11:41 dotconfig-openbox-files/
-rw-r--r--    1768 2009-01-20 09:46:33 dotconfig-openbox-files/
-rw-r--r--    2861 2009-01-22 03:55:14 dotconfig-openbox-files/menu.xml
-rw-r--r--   25571 2009-01-22 04:49:49 dotconfig-openbox-files/rc.xml
-rw-r--r--    1391 2009-01-20 03:27:22 dot-gmrunrc-sample
drwxr-xr-x       0 2009-01-22 15:41:34 CLO/
drwxr-xr-x       0 2009-01-22 15:41:50 CLO/openbox-3/
-rw-r--r--    5050 2009-01-22 15:37:54 CLO/openbox-3/themerc
I hope it is clear from the rest of this file what to do with each of those. But just in case, here is a summary:
# create the required directories, in case you don't have them

    cd /tmp

    tarxfz ..../configfiles.tar.gz

    mkdir -p ~/.themes ~/.config/openbox

    ## put the CLO theme in place

    mv CLO ~/.themes

    mv dotconfig-openbox-files/* ~/.config/openbox

    ## config file for gmrun

    mv dot-gmrunrc-sample ~/.gmrun

    ## if you want to start up the X window system directly from
    ## a console terminal using startx

    mv dotxinitrc ~/.xinitrc
Before trying out the scripts please check all the files, in case of corruption, or in case they invoke utilities not available on your machine, especially these two 'startup' files: ~/.xinitrc ~/.config/openbox/

Things here will almost certainly change. Please report problems.

Maintained by Aaron Sloman
School of Computer Science
The University of Birmingham