1 ###########################################################################
2 ### Functions for helping out with your window focus. ###
3 ###########################################################################
11 global ob_focus_fallback
14 window = data.client.window()
15 # add/move to front the stack
16 if window in ob_focus_stack:
17 ob_focus_stack.remove(window)
18 ob_focus_stack.insert(0, window)
19 elif ob_focus_fallback:
21 desktop = openbox.screen(data.screen).desktop()
22 l = len(ob_focus_stack)
26 client = openbox.findClient(w)
27 if not client: # window is gone, remove it
30 elif client.desktop() == desktop and \
31 client.normal() and client.focus():
36 ebind(EventFocus, ob_focused)
38 def focus_next(data, num=1, forward=1):
39 """Focus the next (or previous, with forward=0) window in a linear
41 screen = openbox.screen(data.screen)
42 count = screen.clientCount()
44 if not count: return # no clients
48 client_win = data.client.window()
57 elif screen.client(i).window() == client_win:
59 if not found: # wraparound
60 if forward: target = 0
61 else: target = count - 1
64 curdesk = screen.desktop()
66 client = screen.client(t)
67 if client.normal() and \
68 (client.desktop() == curdesk or client.desktop() == 0xffffffff)\
71 screen.raiseWindow(client)
78 if t < 0: t = count - 1
79 if t == target: return # nothing to focus
81 def focus_prev(data, num=1):
82 """Focus the previous window in a linear order."""
83 focus_next(data, num, forward=0)
86 print "Loaded focus.py"