all repos — openbox @ feaf3ac4e5847d27e3747b09e7443915afa97b0b

openbox fork - make it a bit more like ryudo

scripts/focusmodel.py (raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
###############################################################################
###           Functions for setting up some default focus models.           ###
###############################################################################

import ob
import callbacks

def setup_click_focus(click_raise = 1):
    """Sets up for focusing windows by clicking on or in the window.
       Optionally, clicking on or in a window can raise the window to the
       front of its stacking layer."""
    ob.mbind("Left", ob.MouseContext.Titlebar,
             ob.MouseAction.Press, callbacks.focus)
    ob.mbind("Left", ob.MouseContext.Handle,
             ob.MouseAction.Press, callbacks.focus)
    ob.mbind("Left", ob.MouseContext.Grip,
             ob.MouseAction.Press, callbacks.focus)
    ob.mbind("Left", ob.MouseContext.Window,
             ob.MouseAction.Press, callbacks.focus)
    ob.mbind("Middle", ob.MouseContext.Window,
             ob.MouseAction.Press, callbacks.focus)
    ob.mbind("A-Left", ob.MouseContext.Frame,
             ob.MouseAction.Press, callbacks.focus)
    if click_raise:
        ob.mbind("Left", ob.MouseContext.Titlebar,
                 ob.MouseAction.Press, callbacks.raise_win)
        ob.mbind("Left", ob.MouseContext.Handle,
                 ob.MouseAction.Press, callbacks.raise_win)
        ob.mbind("Left", ob.MouseContext.Grip,
                 ob.MouseAction.Press, callbacks.raise_win)
        ob.mbind("Left", ob.MouseContext.Window,
                 ob.MouseAction.Press, callbacks.raise_win)    

def setup_sloppy_focus(click_focus = 1, click_raise = 0):
    """Sets up for focusing windows when the mouse pointer enters them.
       Optionally, clicking on or in a window can focus it if your pointer
       ends up inside a window without focus. Also, optionally, clicking on or
       in a window can raise the window to the front of its stacking layer."""
    ob.ebind(ob.EventAction.EnterWindow, callbacks.focus)
    if click_focus:
        ob.mbind("Left", ob.MouseContext.Titlebar,
                 ob.MouseAction.Press, callbacks.focus)
        ob.mbind("Left", ob.MouseContext.Handle,
                 ob.MouseAction.Press, callbacks.focus)
        ob.mbind("Left", ob.MouseContext.Grip,
                 ob.MouseAction.Press, callbacks.focus)
        ob.mbind("Left", ob.MouseContext.Window,
                 ob.MouseAction.Press, callbacks.focus)
        if click_raise:
            ob.mbind("Left", ob.MouseContext.Titlebar,
                     ob.MouseAction.Press, callbacks.raise_win)
            ob.mbind("Left", ob.MouseContext.Handle,
                     ob.MouseAction.Press, callbacks.raise_win)
            ob.mbind("Left", ob.MouseContext.Grip,
                     ob.MouseAction.Press, callbacks.raise_win)
            ob.mbind("Left", ob.MouseContext.Window,
                     ob.MouseAction.Press, callbacks.raise_win)    

export_functions = setup_click_focus, setup_sloppy_focus

print "Loaded focusmodel.py"