summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/behavior.py2
-rw-r--r--scripts/callbacks.py40
2 files changed, 42 insertions, 0 deletions
diff --git a/scripts/behavior.py b/scripts/behavior.py
index 5e475af8..131cbe3f 100644
--- a/scripts/behavior.py
+++ b/scripts/behavior.py
@@ -72,6 +72,8 @@ def setup_window_buttons():
ob.MouseAction.Click, callbacks.close)
ob.mbind("Left", ob.MouseContext.IconifyButton,
ob.MouseAction.Click, callbacks.iconify)
+ ob.mbind("Left", ob.MouseContext.MaximizeButton,
+ ob.MouseAction.Click, callbacks.toggle_maximize)
def setup_scroll():
"""Sets up the default behaviors for the mouse scroll wheel.
diff --git a/scripts/callbacks.py b/scripts/callbacks.py
index 25ac965f..6d6ed51e 100644
--- a/scripts/callbacks.py
+++ b/scripts/callbacks.py
@@ -36,6 +36,34 @@ def state_shaded(data, add=StateAdd):
otk.Property_atoms().net_wm_state, data.client.window(),
add, otk.Property_atoms().net_wm_state_shaded)
+def state_maximize(data, add=StateAdd):
+ """Toggles, adds or removes the horizontal and vertical 'maximized' state
+ on a window. The second paramater should one of: StateRemove, StateAdd,
+ or StateToggle."""
+ if not data.client: return
+ ob.send_client_msg(otk.display.screenInfo(data.screen).rootWindow(),
+ otk.Property_atoms().net_wm_state, data.client.window(),
+ add, otk.Property_atoms().net_wm_state_maximized_horz,
+ otk.Property_atoms().net_wm_state_maximized_vert)
+
+def state_maximize_horz(data, add=StateAdd):
+ """Toggles, adds or removes the horizontal 'maximized' state on a window.
+ The second paramater should one of: StateRemove, StateAdd, or
+ StateToggle."""
+ if not data.client: return
+ ob.send_client_msg(otk.display.screenInfo(data.screen).rootWindow(),
+ otk.Property_atoms().net_wm_state, data.client.window(),
+ add, otk.Property_atoms().net_wm_state_maximized_horz)
+
+def state_maximize_vert(data, add=StateAdd):
+ """Toggles, adds or removes the vertical 'maximized' state on a window.
+ The second paramater should one of: StateRemove, StateAdd, or
+ StateToggle."""
+ if not data.client: return
+ ob.send_client_msg(otk.display.screenInfo(data.screen).rootWindow(),
+ otk.Property_atoms().net_wm_state, data.client.window(),
+ add, otk.Property_atoms().net_wm_state_maximized_vert)
+
def state_skip_taskbar(data, add=StateAdd):
"""Toggles, adds or removes the 'skip_taskbar' state on a window.
The second paramater should one of: StateRemove, StateAdd, or
@@ -99,6 +127,18 @@ def lower_win(data):
if not data.client: return
ob.openbox.screen(data.screen).lowerWindow(data.client)
+def toggle_maximize(data):
+ """Toggles the maximized status of the window on which the event occured"""
+ state_maximize(data, StateToggle)
+
+def maximize(data):
+ """Maximizes the window on which the event occured"""
+ state_maximize(data, StateAdd)
+
+def unmaximize(data):
+ """Unmaximizes the window on which the event occured"""
+ state_maximize(data, StateRemove)
+
def toggle_shade(data):
"""Toggles the shade status of the window on which the event occured"""
state_shaded(data, StateToggle)