all repos — openbox @ 6e29605d41cab8fd7e8ad6f28d6132bbd521f106

openbox fork - make it a bit more like ryudo

python/rc.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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import hooks, ob, keymap, buttonmap, os, sys, input, motion, historyplacement
import stackedcycle
from input import Pointer

hooks.managed.append(historyplacement.place)
#import windowplacement
#hooks.managed.append(windowplacement.random)

_grab = 0
def printshit(keydata, client):
    global _grab
    print "shit"
    _grab = not _grab
    print _grab
    def gfunc(data, client=None): pass
    if _grab:
        input.Keyboard.grab(gfunc)
        input.Pointer.grab(gfunc)
    else:
        input.Keyboard.ungrab()
        input.Pointer.ungrab()

def myexec(prog):
    print "execing: ", prog
    if (os.fork() == 0):
        try:
            os.setsid()
            os.execl("/bin/sh", "/bin/sh", "-c", prog)
        except:
            print str(sys.exc_info()[0]) + ": " + str(sys.exc_info()[1])
            try:
                print "failed to execute '" + prog + "'"
            except:
                print str(sys.exc_info()[0]) + ": " + str(sys.exc_info()[1])
            os._exit(0)

def myactivate(c):
    if ob.Openbox.showingDesktop():
        ob.Openbox.setShowingDesktop(False)
    if c.iconic():
        c.setIconic(False)
    elif not c.visible():
        # if its not visible for other reasons, then don't mess with it
        return
    if c.shaded():
        c.setShaded(False)
    c.focus()
    c.raiseWindow()
                                                      
hooks.requestactivate.append(myactivate)

def myfocus(c):
    if c and c.normal(): c.focus()

#hooks.showwindow.append(myfocus)
hooks.pointerenter.append(myfocus)

hooks.visible.append(myfocus)

mykmap=((("C-a", "d"), printshit),
        (("C-Tab",), stackedcycle.next),
        (("C-S-Tab",), stackedcycle.previous),
        (("Mod1-1",), lambda k,c: ob.Openbox.setDesktop(1)),
        (("Mod1-2",), lambda k,c: ob.Openbox.setDesktop(2)),
        (("Mod1-3",), lambda k,c: ob.Openbox.setDesktop(3)),
        (("Mod1-4",), lambda k,c: ob.Openbox.setDesktop(4)),
        (("Mod1-C-Left",), lambda k,c: ob.Openbox.setPreviousDesktop() or c.setDesktop(ob.Openbox.desktop())),
        (("Mod1-C-Right",), lambda k,c: ob.Openbox.setNextDesktop() or c.setDesktop(ob.Openbox.desktop())),
        (("Mod1-Left",), lambda k,c: ob.Openbox.setPreviousDesktop()),
        (("Mod1-Right",), lambda k,c: ob.Openbox.setNextDesktop()),
        (("C-space",), lambda k,c: myexec("xterm")))
keymap.set(mykmap)

def mytogglesticky(client):
    if client.desktop() == 0xffffffff: d = ob.Openbox.desktop()
    else: d = 0xffffffff
    client.setDesktop(d)

mybmap=(("1", "maximize", Pointer.Action_Click,
         lambda c: c.setMaximized(not c.maximized())),
        ("2", "maximize", Pointer.Action_Click,
         lambda c: c.setMaximizedVert(not c.maximizedVert())),
        ("3", "maximize", Pointer.Action_Click,
         lambda c: c.setMaximizedHorz(not c.maximizedHorz())),
        ("1", "alldesktops", Pointer.Action_Click, mytogglesticky),
        ("1", "iconify", Pointer.Action_Click,
         lambda c: c.setIconic(True)),
        ("1", "icon", Pointer.Action_DoubleClick, ob.Client.close),
        ("1", "close", Pointer.Action_Click, ob.Client.close),
        ("1", "titlebar", Pointer.Action_Motion, motion.move),
        ("1", "handle", Pointer.Action_Motion, motion.move),
        ("Mod1-1", "frame", Pointer.Action_Click, ob.Client.raiseWindow),
        ("Mod1-1", "frame", Pointer.Action_Motion, motion.move),
        ("1", "titlebar", Pointer.Action_Press, ob.Client.raiseWindow),
        ("1", "handle", Pointer.Action_Press, ob.Client.raiseWindow),
        ("1", "client", Pointer.Action_Press, ob.Client.raiseWindow),
        ("2", "titlebar", Pointer.Action_Press, ob.Client.lowerWindow),
        ("2", "handle", Pointer.Action_Press, ob.Client.lowerWindow),
        ("Mod1-3", "frame", Pointer.Action_Click, ob.Client.lowerWindow),
        ("Mod1-3", "frame", Pointer.Action_Motion, motion.resize),
        ("1", "blcorner", Pointer.Action_Motion, motion.resize),
        ("1", "brcorner", Pointer.Action_Motion, motion.resize),
        ("1", "titlebar", Pointer.Action_Press, ob.Client.focus),
        ("1", "handle", Pointer.Action_Press, ob.Client.focus),
        ("1", "client", Pointer.Action_Press, ob.Client.focus),
        ("1", "titlebar", Pointer.Action_DoubleClick,
         lambda c: c.setShaded(not c.shaded())),
        ("4", "titlebar", Pointer.Action_Click,
         lambda c: c.setShaded(True)),
        ("5", "titlebar", Pointer.Action_Click,
         lambda c: c.setShaded(False)),
        ("4", "root", Pointer.Action_Click,
         lambda c: ob.Openbox.setNextDesktop()),
        ("5", "root", Pointer.Action_Click,
         lambda c: ob.Openbox.setPreviousDesktop()),
        ("Mod1-4", "frame", Pointer.Action_Click,
         lambda c: ob.Openbox.setNextDesktop()),
        ("Mod1-5", "frame", Pointer.Action_Click,
         lambda c: ob.Openbox.setPreviousDesktop()),
        ("Mod1-4", "root", Pointer.Action_Click,
         lambda c: ob.Openbox.setNextDesktop()),
        ("Mod1-5", "root", Pointer.Action_Click,
         lambda c: ob.Openbox.setPreviousDesktop()))
buttonmap.set(mybmap)