all repos — openbox @ 33c0058f75cf8f100761254247e64e89256346ab

openbox fork - make it a bit more like ryudo

scripts/defaults.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
62
63
64
65
66
67
68
69
70
71
72
import ob         # base module
import focus      # add some default focus handling and cycling functions
import focusmodel # default focus models
import behavior   # defines default behaviors for interaction with windows
import callbacks  # a lib of functions that can be used as binding callbacks
import windowplacement # use a routine in here to place windows
import historyplacement # history window placement

# try focus something when nothing is focused
focus.FALLBACK = 1

# choose a default focus model
focusmodel.setup_click_focus() # use focusmodel.setup_sloppy_focus() instead to
                               # make focus follow the cursor, or bind things
                               # in some way like these functions do to make
                               # your own custom focus model.
# set up the mouse buttons
behavior.setup_window_clicks()
behavior.setup_window_buttons()
behavior.setup_scroll()

# my window placement algorithm
#ob.ebind(ob.EventAction.PlaceWindow, windowplacement.random)
ob.ebind(ob.EventAction.PlaceWindow, historyplacement.place)
# don't place terminals by history placement (xterm,aterm,rxvt)
def histplace(data):
    if data.client.appClass() == "XTerm": return 0
    return 1
historyplacement.CONFIRM_CALLBACK = histplace


# run xterm from root clicks
ob.mbind("Left", ob.MouseContext.Root, ob.MouseAction.Click,
         lambda(d): ob.execute("xterm", d.screen))

ob.kbind(["A-F4"], ob.KeyContext.All, callbacks.close)

# focus bindings
import stackedcycle # functions for doing stacked 'kde-style' cycling
ob.kbind(["A-Tab"], ob.KeyContext.All, stackedcycle.next)
ob.kbind(["A-S-Tab"], ob.KeyContext.All, stackedcycle.previous)

# if you want linear cycling instead of stacked cycling, comment out the focus
# bindings above, and use these instead.
#import focuscycle # functions for doing linear cycling
#focuscycle.RAISE_WINDOW = 0 # don't raise windows when they're activated
#ob.kbind(["A-Tab"], ob.KeyContext.All, focuscycle.next)
#ob.kbind(["A-S-Tab"], ob.KeyContext.All, focuscycle.previous)

# desktop changing bindings
ob.kbind(["C-1"], ob.KeyContext.All, lambda(d): callbacks.change_desktop(d, 0))
ob.kbind(["C-2"], ob.KeyContext.All, lambda(d): callbacks.change_desktop(d, 1))
ob.kbind(["C-3"], ob.KeyContext.All, lambda(d): callbacks.change_desktop(d, 2))
ob.kbind(["C-4"], ob.KeyContext.All, lambda(d): callbacks.change_desktop(d, 3))
ob.kbind(["C-A-Right"], ob.KeyContext.All,
         lambda(d): callbacks.right_desktop(d))
ob.kbind(["C-A-Left"], ob.KeyContext.All,
         lambda(d): callbacks.left_desktop(d))
ob.kbind(["C-A-Up"], ob.KeyContext.All,
         lambda(d): callbacks.up_desktop(d))
ob.kbind(["C-A-Down"], ob.KeyContext.All,
         lambda(d): callbacks.down_desktop(d))

ob.kbind(["C-S-A-Right"], ob.KeyContext.All,
         lambda(d): callbacks.send_to_next_desktop(d))
ob.kbind(["C-S-A-Left"], ob.KeyContext.All,
         lambda(d): callbacks.send_to_prev_desktop(d))

# focus new windows
ob.ebind(ob.EventAction.NewWindow, callbacks.focus)

print "Loaded defaults.py"