openbox focus wish list

John Russell drjimmy42 at
Mon Oct 6 11:00:03 EDT 2003

Hello openbox hackers,
I just installed openbox this weekend and was blown away.  Very very
impressed.  I am switching from metacity which had some cool features
but left a lot to be desired in certain areas.  So much so, that was
shopping around.  So here I am.   BUT... of course, like any truly geeky
person, I am trying to get the best parts of my previous WM into my new

So far the only part of openbox that I don't find far superior to
metacity is atl-tab window cycling.  Let me try to explain myself here
in some intelligible way.  

I usually have several frameless Eterms open at one time and alt-tabbing
between them is very difficult because I never know which is the
focus_cycle_target at any given point in time.  Even with framed
windows, just the change in frame color doesn't really do it for me,
especially if a window is completely obfuscated by a larger one.  In
metacity, the current cycled window gets a black outline around it,
which shows up even for covered windows.  If you haven't seen it, its
worth a look just to see the feature.  Anyway, I found that a really
good way to do alt-tab window cycling.  

I looked into the openbox code to see what I could do.  I found a sort
of helpful idea that needs help itself.  Here it is.

In the function focus_cycle in focus.c I added one line just under
frame_adjust_focus.  See clip below.

Line 345
if (valid_focus_target(ft)) {
    if (ft != focus_cycle_target) /* prevents flicker */  { 
         if (focus_cycle_target)
            frame_adjust_focus(focus_cycle_target->frame, FALSE);
        focus_cycle_target = ft;
        frame_adjust_focus(focus_cycle_target->frame, TRUE);
        client_raise(focus_cycle_target);  <===== This is the line
    popup_cycle(ft, dialog);

What this does, is as windows are being cycled through, it raises each
current window so you can see which one it is.  This has some drawbacks

1) It actually raises the window instead of just highlighting it the way
metacity does.  This screws up your stacking order if you cycle through
some windows searching for something.  It seems like the cycling
shouldn't actually raise the window, but somehow make it visible, even
if covered or frameless.  

2) If a frameless window (and I understand this is my own damn fault,
but the frameless terms just look so cool) is off by itself and not
covered, it isn't obvious when it gets raised.  I tried the function
client_focus() but that changes the focus cycle order so you end up
endlessly switching between two windows.  Not good.

So that's where I am now.  Looking for a way to highlight cycled windows
without disturbing everything by raising them.  The popup window doesn't
help so much because all of my terms come up as xterm[1] xterm[2] .... I
still can't tell them apart.  

Anyway, thanks for listening.  And truly amazing job on openbox.  Even
with this minor problem, which I just me being whiny, I'm hooked. 

John Russell

More information about the openbox mailing list