### Functions that can be used as callbacks for mouse/keyboard bindings ###
############################################################################
-#############################################################################
-### Options that can be modified to change the default hooks' behaviors. ###
-### ###
-# resize_nearest - 1 to resize from the corner nearest where the mouse ###
-### is, 0 to resize always from the bottom right corner. ###
-resize_nearest = 1 ###
-### ###
-#############################################################################
-
import ob
import otk
def state_above(data, add=2):
- """Toggles, adds or removes the 'above' state on a window."""
+ """Toggles, adds or removes the 'above' state on a window.
+ The second paramater should one of: 0 - removes the state, 1 - adds the
+ state, 2 - toggles the state."""
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_above)
def state_below(data, add=2):
- """Toggles, adds or removes the 'below' state on a window."""
+ """Toggles, adds or removes the 'below' state on a window.
+ The second paramater should one of: 0 - removes the state, 1 - adds the
+ state, 2 - toggles the state."""
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_below)
def state_shaded(data, add=2):
- """Toggles, adds or removes the 'shaded' state on a window."""
+ """Toggles, adds or removes the 'shaded' state on a window.
+ The second paramater should one of: 0 - removes the state, 1 - adds the
+ state, 2 - toggles the state."""
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_shaded)
+def state_skip_taskbar(data, add=2):
+ """Toggles, adds or removes the 'skip_taskbar' state on a window.
+ The second paramater should one of: 0 - removes the state, 1 - adds the
+ state, 2 - toggles the state."""
+ 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_skip_taskbar)
+
+def state_skip_pager(data, add=2):
+ """Toggles, adds or removes the 'skip_pager' state on a window.
+ The second paramater should one of: 0 - removes the state, 1 - adds the
+ state, 2 - toggles the state."""
+ 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_skip_pager)
+
def iconify(data):
"""Iconifies the window on which the event occured"""
if not data.client: return
return
data.client.focus()
-def move(data):
- """Moves the window interactively. This should only be used with
- MouseMotion events"""
- if not data.client: return
-
- # not-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
-
- # not-normal windows dont get resized
- 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 = ob.Client.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 = ob.Client.BottomRight
- dx *= -1
- else:
- corner = ob.Client.BottomLeft
- dy *= -1
- else:
- if x < data.press_clientwidth / 2:
- corner = ob.Client.TopRight
- dx *= -1
- else:
- corner = ob.Client.TopLeft
-
- data.client.resize(corner,
- data.press_clientwidth + dx,
- data.press_clientheight + dy);
-
def restart(data, other = ""):
"""Restarts openbox, optionally starting another window manager."""
ob.openbox.restart(other)