scripts/builtins.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 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
########################################################################### ### Functions that can be used as callbacks for mouse/keyboard bindings ### ########################################################################### def close(data): """Closes the window on which the event occured""" client = Openbox_findClient(openbox, data.window()) if client: OBClient_close(client) def focus(data): """Focuses the window on which the event occured""" client = Openbox_findClient(openbox, data.window()) if not client: return type = OBClient_type(client) # !normal windows dont get focus from window enter events if data.action() == EventEnterWindow and not OBClient_normal(client): return OBClient_focus(client) def move(data): """Moves the window interactively. This should only be used with MouseMotion events""" client = Openbox_findClient(openbox, data.window()) if not client: return # !normal windows dont get moved if not OBClient_normal(client): return dx = data.xroot() - data.pressx() dy = data.yroot() - data.pressy() OBClient_move(client, data.press_clientx() + dx, data.press_clienty() + dy) def resize(data): """Resizes the window interactively. This should only be used with MouseMotion events""" client = Openbox_findClient(openbox, data.window()) if not client: return # !normal windows dont get moved if not OBClient_normal(client): return px = data.pressx() py = data.pressy() dx = data.xroot() - px dy = data.yroot() - py # pick a corner to anchor if not (resize_nearest or data.context() == MC_Grip): corner = OBClient_TopLeft else: x = px - data.press_clientx() y = py - data.press_clienty() if y < data.press_clientheight() / 2: if x < data.press_clientwidth() / 2: corner = OBClient_BottomRight dx *= -1 else: corner = OBClient_BottomLeft dy *= -1 else: if x < data.press_clientwidth() / 2: corner = OBClient_TopRight dx *= -1 else: corner = OBClient_TopLeft OBClient_resize(client, corner, data.press_clientwidth() + dx, data.press_clientheight() + dy); def restart(data): """Restarts openbox""" Openbox_restart(openbox, "") def raise_win(data): """Raises the window on which the event occured""" client = Openbox_findClient(openbox, data.window()) if not client: return screen = Openbox_screen(openbox, OBClient_screen(client)) OBScreen_restack(screen, 1, client) def lower_win(data): """Lowers the window on which the event occured""" client = Openbox_findClient(openbox, data.window()) if not client: return screen = Openbox_screen(openbox, OBClient_screen(client)) OBScreen_restack(screen, 0, client) def toggle_shade(data): """Toggles the shade status of the window on which the event occured""" client = Openbox_findClient(openbox, data.window()) if not client: return print "toggle_shade" OBClient_shade(client, not OBClient_shaded(client)) def shade(data): """Shades the window on which the event occured""" client = Openbox_findClient(openbox, data.window()) if not client: return OBClient_shade(client, 1) def unshade(data): """Unshades the window on which the event occured""" client = Openbox_findClient(openbox, data.window()) if not client: return OBClient_shade(client, 0) def next_desktop(data, no_wrap=0): screen = Openbox_screen(openbox, data.screen()) d = OBScreen_desktop(screen) n = OBScreen_numDesktops(screen) if (d < (n-1)): d = d + 1 elif not no_wrap: d = 0 OBScreen_changeDesktop(screen, d) def prev_desktop(data, no_wrap=0): screen = Openbox_screen(openbox, data.screen()) d = OBScreen_desktop(screen) n = OBScreen_numDesktops(screen) if (d > 0): d = d - 1 elif not no_wrap: d = n - 1 OBScreen_changeDesktop(screen, d) def change_desktop(data, num): screen = Openbox_screen(openbox, data.screen()) OBScreen_changeDesktop(screen, num) ######################################### ### Convenience functions for scripts ### ######################################### def execute(bin, screen = 0): """Executes a command on the specified screen. It is recommended that you use this call instead of a python system call. If the specified screen is beyond your range of screens, the default is used instead.""" Openbox_execute(openbox, screen, bin) print "Loaded builtins.py" |