X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=scripts%2Fbuiltins.py;h=70518dccf06d5002c15a8afb7c75845ff879e7f8;hb=8934a553dcfbb0ea6035d2de8ed86595d3703f5a;hp=0b90585f987a47d783b4f51dc3c020be567996b4;hpb=678bb52123bde0b71037393827c03f6b17904a60;p=chaz%2Fopenbox diff --git a/scripts/builtins.py b/scripts/builtins.py index 0b90585f..70518dcc 100644 --- a/scripts/builtins.py +++ b/scripts/builtins.py @@ -1,192 +1,2 @@ -########################################################################### -### Functions that can be used as callbacks for mouse/keyboard bindings ### -########################################################################### - -def state_above(data, add=2): - """Toggles, adds or removes the 'above' state on a window.""" - if not data.client: return - send_client_msg(OBDisplay_screenInfo(data.screen).rootWindow(), - OBProperty.net_wm_state, data.client.window(), add, - openbox.property().atom(OBProperty.net_wm_state_above)) - -def state_below(data, add=2): - """Toggles, adds or removes the 'below' state on a window.""" - if not data.client: return - send_client_msg(OBDisplay_screenInfo(data.screen).rootWindow(), - OBProperty.net_wm_state, data.client.window(), add, - openbox.property().atom(OBProperty.net_wm_state_below)) - -def state_shaded(data, add=2): - """Toggles, adds or removes the 'shaded' state on a window.""" - if not data.client: return - send_client_msg(OBDisplay_screenInfo(data.screen).rootWindow(), - OBProperty.net_wm_state, data.client.window(), add, - openbox.property().atom(OBProperty.net_wm_state_shaded)) - -def close(data): - """Closes the window on which the event occured""" - if not data.client: return - send_client_msg(OBDisplay_screenInfo(data.screen).rootWindow(), - OBProperty.net_close_window, data.client.window(), 0) - -def focus(data): - """Focuses the window on which the event occured""" - if not data.client: return - # !normal windows dont get focus from window enter events - if data.action == EventEnterWindow and not data.client.normal(): - return - data.client.focus() - -def move(data): - """Moves the window interactively. This should only be used with - MouseMotion events""" - if not data.client: return - - # !normal windows dont get moved - if not data.client.normal(): return - - dx = data.xroot - data.pressx - dy = data.yroot - data.pressy - data.client.move(data.press_clientx + dx, data.press_clienty + dy) - -def resize(data): - """Resizes the window interactively. This should only be used with - MouseMotion events""" - if not data.client: return - - # !normal windows dont get moved - if not data.client.normal(): 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 - - data.client.resize(corner, - data.press_clientwidth + dx, - data.press_clientheight + dy); - -def restart(data): - """Restarts openbox""" - openbox.restart("") - -def raise_win(data): - """Raises the window on which the event occured""" - if not data.client: return - openbox.screen(data.screen).restack(1, data.client) - -def lower_win(data): - """Lowers the window on which the event occured""" - if not data.client: return - openbox.screen(data.screen).restack(0, data.client) - -def toggle_shade(data): - """Toggles the shade status of the window on which the event occured""" - state_shaded(data) - -def shade(data): - """Shades the window on which the event occured""" - state_shaded(data, 1) - -def unshade(data): - """Unshades the window on which the event occured""" - state_shaded(data, 0) - -def change_desktop(data, num): - """Switches to a specified desktop""" - root = OBDisplay_screenInfo(data.screen).rootWindow() - send_client_msg(root, OBProperty.net_current_desktop, root, num) - -def next_desktop(data, no_wrap=0): - """Switches to the next desktop, optionally (by default) cycling around to - the first when going past the last.""" - screen = openbox.screen(data.screen) - d = screen.desktop() - n = screen.numDesktops() - if (d < (n-1)): - d = d + 1 - elif not no_wrap: - d = 0 - change_desktop(data, d) - -def prev_desktop(data, no_wrap=0): - """Switches to the previous desktop, optionally (by default) cycling around - to the last when going past the first.""" - screen = openbox.screen(data.screen) - d = screen.desktop() - n = screen.numDesktops() - if (d > 0): - d = d - 1 - elif not no_wrap: - d = n - 1 - change_desktop(data, d) - -def send_to_desktop(data, num): - """Sends a client to a specified desktop""" - if not data.client: return - send_client_msg(OBDisplay_screenInfo(data.screen).rootWindow(), - OBProperty.net_wm_desktop, data.client.window(), num) - -def send_to_next_desktop(data, no_wrap=0, follow=1): - """Sends a window to the next desktop, optionally (by default) cycling - around to the first when going past the last. Also optionally moving to - the new desktop after sending the window.""" - if not data.client: return - screen = openbox.screen(data.screen) - d = screen.desktop() - n = screen.numDesktops() - if (d < (n-1)): - d = d + 1 - elif not no_wrap: - d = 0 - send_to_desktop(data, d) - if follow: - change_desktop(data, d) - -def send_to_prev_desktop(data, no_wrap=0, follow=1): - """Sends a window to the previous desktop, optionally (by default) cycling - around to the last when going past the first. Also optionally moving to - the new desktop after sending the window.""" - if not data.client: return - screen = openbox.screen(data.screen) - d = screen.desktop() - n = screen.numDesktops() - if (d > 0): - d = d - 1 - elif not no_wrap: - d = n - 1 - send_to_desktop(data, d) - if follow: - change_desktop(data, d) - -######################################### -### 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(screen, bin) print "Loaded builtins.py"