send_client_msg(display.screenInfo(data.screen).rootWindow(),
Property_atoms().net_wm_state, data.client.window(), add,
Property_atoms().net_wm_state_shaded)
+
+def iconify(data):
+ """Iconifies the window on which the event occured"""
+ if not data.client: return
+ send_client_msg(display.screenInfo(data.screen).rootWindow(),
+ Property_atoms().wm_change_state,
+ data.client.window(), 3) # IconicState
+
+def restore(data):
+ """Un-iconifies the window on which the event occured, but does not focus
+ if. If you want to focus the window too, it is recommended that you
+ use the activate() function."""
+ if not data.client: return
+ send_client_msg(display.screenInfo(data.screen).rootWindow(),
+ Property_atoms().wm_change_state,
+ data.client.window(), 1) # NormalState
def close(data):
"""Closes the window on which the event occured"""
mbind("Left", MC_Handle, MousePress, focus)
mbind("Left", MC_Grip, MousePress, focus)
mbind("Left", MC_Window, MousePress, focus)
+ mbind("A-Left", MC_Frame, MousePress, focus)
if click_raise:
mbind("Left", MC_Titlebar, MousePress, raise_win)
mbind("Left", MC_Handle, MousePress, raise_win)
mbind("Left", MC_Grip, MousePress, raise_win)
- mbind("Left", MC_Window, MousePress, raise_win)
+ mbind("Left", MC_Window, MousePress, raise_win)
def setup_sloppy_focus(click_focus = 1, click_raise = 0):
"""Sets up for focusing windows when the mouse pointer enters them.
in a window can raise the window to the front of its stacking layer."""
ebind(EventEnterWindow, focus)
if click_focus:
- setup_click_focus(click_raise)
+ mbind("Left", MC_Titlebar, MousePress, focus)
+ mbind("Left", MC_Handle, MousePress, focus)
+ mbind("Left", MC_Grip, MousePress, focus)
+ mbind("Left", MC_Window, MousePress, focus)
+ if click_raise:
+ mbind("Left", MC_Titlebar, MousePress, raise_win)
+ mbind("Left", MC_Handle, MousePress, raise_win)
+ mbind("Left", MC_Grip, MousePress, raise_win)
+ mbind("Left", MC_Window, MousePress, raise_win)
def setup_window_clicks():
"""Sets up the default bindings for various mouse buttons for various
def setup_window_buttons():
"""Sets up the default behaviors for the buttons in the window titlebar."""
- mbind("Left", MC_StickyButton, MouseClick, toggle_all_desktops)
+ mbind("Left", MC_AllDesktopsButton, MouseClick, toggle_all_desktops)
mbind("Left", MC_CloseButton, MouseClick, close)
+ mbind("Left", MC_IconifyButton, MouseClick, iconify)
def setup_scroll():
"""Sets up the default behaviors for the mouse scroll wheel.
def setup_fallback_focus():
"""Sets up a focus fallback routine so that when no windows are focused,
the last window to have focus on the desktop will be focused."""
- focus_stack = []
- def focused(data):
- #global focus_stack
- if data.client:
- window = data.client.window()
- # add to front the stack
- if window in focus_stack:
- focus_stack.remove(window)
- focus_stack.insert(0, window)
- else:
- # pass around focus
- desktop = openbox.screen(data.screen).desktop()
- l = len(focus_stack)
- i = 0
- while i < l:
- w = focus_stack[i]
- client = openbox.findClient(w)
- if not client: # window is gone, remove it
- focus_stack.pop(i)
- l = l - 1
- elif client.desktop() == desktop and \
- client.normal() and client.focus():
- break
- else:
- i = i + 1
-
- ebind(EventFocus, focused)
-
+ global ob_focus_fallback # see focus.py
+ ob_focus_fallback = 1
############################################################################
### Window placement algorithms, choose one of these and ebind it to the ###