Help:Upgrading to 3.4

From Openbox

Revision as of 22:22, 19 May 2007 by (Talk)

Jump to: navigation, search

There are a huge number of improvements and changes made in Openbox 3.4. This guide goes through all these changes and what they mean for users and themers.


The "I don't have time give me something fast" approach

There are a number of new things that you won't be able to take advantage of without updating your configuration file. One quick and easy way to get these features is to just delete your ~/.config/openbox/rc.xml configuration file and set your config back up from there with Obconf:About or by hand.

What's new in version 3.4 ?

Bug fixes

During the development cycle for Openbox 3.4, we fixed and closed every bug listed in the bug tracker from previous versions. There's a big list of the bugs in the Openbox:Changelog, and we're not going to go through them all here. We're going to talk about the new things.


Combined client list menu

The combined client list menu

We've added a new client list menu. Instead of having a submenu for each desktop, it combines all your desktops into one menu. This menu is used by middle click on the desktop in the default configuration.

To show this menu, put the following into a keyboard or mouse binding:

<action name="ShowMenu"><menu>client-list-combined-menu</menu></action>

For example, from the default configuration:

<mousebind button="Middle" action="Press">
  <action name="ShowMenu"><menu>client-list-combined-menu</menu></action>

Iconified windows in the client list menus

Iconified windows in the client list menus used to be shown below a separator. In Openbox 3.4 we have gotten rid of the visual clutter created by that separator.

Instead, iconified windows will always appear at the bottom of the list and will be surround with brackets. You can see, for example, that Kaffeine Player is iconified in the picture of the combined client list menu.

Keyboard accelerators (using letters instead of arrows)

Wouldn't it be nice if you could just hit a letter to instantly choose the item you wanted in your menus? Now you can!

In the new client menu, the shortcuts are highlighted with an underline. In other menus, underlines are not used, instead you can just press the first letter of a menu item to jump to it. If there are multiple entries with the same letter, press it again to go to the second one.

If the first letter of a menu entry is not an ASCII alpha-numeric character, then the first such character will be used as the shortcut for that entry, and it will be underlined.

Now you can navigate your menus at light speed.

No more menu titles

We've had a large number of requests from users who wanted to get rid of the titles at the top of their menus. So instead of just letting you turn them on and off, we decided you give you a whole range of flexibility.

Menus no longer have titles. So if you don't want a title, you don't need one. But in their place you can now put headers (which look like the old titles) anywhere you want in your menu. In the picture of the combined client list menu above, there is a header for each desktop. You can do the same to separate sections of your own menus.

The default menu that comes with Openbox puts a header at the top of the menu, so it looks like the old menu title used to. Just remove the separator item from the menu and it will no longer have a title.

You put these headers in your menu by using separators, but with a label attribute, such as:

<menu id="root-menu" label="Openbox 3">
  <separator label="Openbox" />

Startup notification

Startup notification at work

Now when you run things from Openbox menus, you can enable startup notification. This means that if you have a tasklist or some other program that visually displays when applications are starting, it can work from Openbox menus too.

It is, however, disabled by default because it shouldn't be used with just anything. If you use it with an older terminal program, anything you launch from the terminal will be given an old timestamp. One way to fix that is to run unset DESKTOP_STARTUP_ID in your shell startup. You also should not use it for commands that don't create a window on screen, because without a window being created, nothing will know then the command finished running.

To make use startup notification when launching a program use something like the following in your menu:

<item label="Calculator">
  <action name="Execute">

If you don't specify a <name> or <icon> field, they are derived from the command that is being executed.

If the application starts, and the notification doesn't go away, that means you shouldn't use it for that application. Any GNOME or KDE application will support startup notification by default.

You can also use this startup notification when launching applications with key bindings, in the same way.

fix broken links

The new startup notification feature is also mentioned in the usability section, and the configuration section.

New client menu

The new client menu

The client menu is the menu you get when you right click on an application's title bar or click its icon (in the default configuration).

The client menu has been restructured, revamped, and improved for Openbox 3.4. You can see in the picture to the right, the new structure of the menu. It's cleaner and easier to get to the item you want.

In addition, you can now use keyboard accelerators to navigate the menu.

As well, when you use a keyboard shortcut (Alt-space in the default configuration) to bring up the menu, it will now pop up at the top left corner of the window, rather than wherever your mouse pointer happens to be at the time. You can see that happening in the picture also.

We've tried our best to make meaningful, unique keyboard shortcuts for all the current translations of Openbox also, but any improvements would be appreciated.

Selecting disabled menu items

Disabled menu entries in the client menu can now be selected with the mouse or the keyboard. Visually, this is a lot nicer feeling, when you move the mouse around and the selected entry doesn't just disappear.

This also has the added bonus that no matter what entries in the menu are enabled or disabled, the same number of arrow keys or letter keys will always take you to the same entry. Yay for consistent behavior.

Menu placement

When you opened a menu close to the edge of the screen, opening sub-menus used to push the whole menu back from the edge of the screen, which could be jarring and make navigation difficult.

In Openbox 3.4, menus are always placed on screen such that they won't have to move afterward. Sub-menus are opened cleverly to the side with room available, so that the menus behave in a more predictable manner.

Large menus

The new "More..." sub-menu

Menus that are bigger than your screen is tall are no longer a problem for Openbox. When a menu grows too large, it will be split off into a sub-menu at the bottom titled "More...". You can see an example in the figure to the right.


  • new Root context, for if you want something to only work if there is no desktop window (like nautilus or kdesktop or rox desktop) in the way. desktop context still applies to the root window too.
  • new "alt-tab" focus switching dialog
  • openbox-session command and log-in option which provides autostart capability.
  • SCIM support in the default Openbox session
  • faster, more reliable
  • handle X server's clock going backwards, without locking up. sometimes the server can still lock up though, not recommended to do this!
  • better handling of window types (click focus docks and stuff)
    • utility windows move with the main windows
  • faster.. so much faster
  • better language support thru pango which is now mandatory
  • support windows which use true transparency
  • (link RESIZE) resize grips for the top, left, and right of the window frame -> need bindings in rc
  • smarter about keeping windows on the screen without invading user's capabilities
  • Add MoveFromEdge* actions corresponding to MoveToEdge* but aligns far edges instead of near edges, so if you have two overlapping windows you can easily put them side by side.
  • improved startup notification
  • (link STARTUP) add startup notification support to the menus <startupnotify> . mention how this helps with focus stealing prevention. default to disabled for old apps though. DONT set it for older terminal programs, it will mess up anything that you launch from them.

Using startup notification for your menu entries also helps with focus stealing prevention. If you use it, then Openbox knows when you ran the program when its window appears and it can keep the new window from stealing focus in the middle of your typing.

  • focus stealing prevention is the bomb
  • improve window placement across multiple monitors
  • more reliable focus handling? seems to lose it sometimes still/again..
  • 8 bit truecolor visuals (such as in vncserver)
  • better more friendly support for omnipresent windows
  • full support for EWMH 1.4-draft2
  • iconify/restore animation !
  • improved support for running openbox with multiple screens (non-xinerama) - focus handling
  • support for more cursors through XCursor, means that startup notification can use a pointer+watch cursor if you are using an XCursor theme
  • fully maximize terminal windows
  • show the hostname of clients running on remote computers in the titlebar
  • (link PANELS) add <panels> and <desktop> options to NextWindow PreviousWindow NextWindowNorth etc..
  • sync request resizing syncs with the application
  • smarter subdivision of windows into 9 sections for resizing
  • set default icon on windows
  • better support for programs that are on more than one desktop (multiple firefox windows for example)
  • (link CHROOT) chroots and quoting (vnc example)
  • new keychains popup, to show where you are in a keychain
  • improved show-desktop mode. when you open a new window, the old windows are not all restored
  • (link ALLDESK) add <allDesktops> option to NextWindow and PreviousWindow. the desktop name will be shown in the focus cycling popup
  • dynamically size the window and desktop dialogs. desktop layouts that aren't horizontal and tings.
  • support for legacy fullscreen applications such as vlc
  • session support for old clients that do not use the session management protocol
  • desktop setup is only changed on startup, so as to not overwrite settings from other apps like pagers
  • take advantage of ksmserver (KDE Session Manager) features
  • KDE/Openbox and GNOME/Openbox options for display manager GDM/KDM. Use openbox-gnome-session and openbox-kde-session to run a GNOME/KDE session with Openbox.
  • (link BUTTONS) titlebar buttons autohide (removed the option from config file)
  • user time window, which is good for laptops. laptop-friendly yay.
  • legacy windows raise themselves - make it activate them - firefox
  • don't show handles on windows that cant resize. minimalism yay.
  • move maximized windows between xinerama screens
  • improve application awareness of focus, e.g. kopete and firefox


  • improvements in the distributed themes
  • add new Clearlooks and Clearlooks-Olive themes by John McKnight
  • (link FONTS) fonts no longer loaded from theme.. load from the rc.xml config file.
    • shadows are still loaded from the theme though
  • distributed theme names have been renamed with Capitalization
  • menu.items.activedisabled.text.color
  • menu.border.color
  • window.inactive.border.color (note that globbing might set these properties when you didnt mean to)
  • menu.border.width
  • guarantee that titlebar buttons are even sized, so even sized icons (button masks) will be centered
  • default xbms in /usr/share/doc/openbox

Config File

  • (link RESIZE) new mouse binding contexts Left, Right, TLCorner, TRCorner and Top. These need bindings in config file to be useful. Also new context Bottom which is synonym for Handle.
  • (link FONTS) fonts no longer loaded from theme.. load from the rc.xml config file.
    • activeiwndow inactivewindow, menuheader, menuitem, onscreendisplay
  • (link PANELS) add <panels> and <desktop> options to NextWindow PreviousWindow NextWindowNorth etc..
  • (link CHROOT) chrooting for key chains
    • new BreakChroot action to break out of the current chroot
  • W is no longer for Mod4.. it is for Super. which is usually bound to mod4. xmodmap for details.
  • (link ALLDESK) add <allDesktops> option to NextWindow and PreviousWindow. the desktop name will be shown in the focus cycling popup
  • the per-app setting <head> has been renamed to <monitor>
  • can use "default" for any thing in per-app settings
  • (link BUTTONS) titlebar buttons autohide (removed the option from config file)
  • removed "edges_hit_layers_below" option

Extra stuff

  • --reconfigure command line
Personal tools