]> Dogcows Code - chaz/openbox/blobdiff - scripts/builtins.py
add a -single argument which only runs on a single screen
[chaz/openbox] / scripts / builtins.py
index 3571e0178114a09b6c10e82bacbc4dce0f35a1e1..9020859efc42b34b1e9135a95a86bbd199b9232d 100644 (file)
@@ -86,11 +86,6 @@ def lower_win(data):
     screen = Openbox_screen(openbox, OBClient_screen(client))
     OBScreen_restack(screen, 0, client)
 
-def focusraise(data):
-    """Focuses and raises the window on which the event occured"""
-    focus(data)
-    raise_win(data)
-
 def toggle_shade(data):
     """Toggles the shade status of the window on which the event occured"""
     client = Openbox_findClient(openbox, data.window())
@@ -109,6 +104,96 @@ def unshade(data):
     client = Openbox_findClient(openbox, data.window())
     if not client: return
     OBClient_shade(client, 0)
+
+def change_desktop(data, num):
+    """Switches to a specified desktop"""
+    root = ScreenInfo_rootWindow(OBDisplay_screenInfo(data.screen()))
+    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(openbox, data.screen())
+    d = OBScreen_desktop(screen)
+    n = OBScreen_numDesktops(screen)
+    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(openbox, data.screen())
+    d = OBScreen_desktop(screen)
+    n = OBScreen_numDesktops(screen)
+    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"""
+    root = ScreenInfo_rootWindow(OBDisplay_screenInfo(data.screen()))
+    client = Openbox_findClient(openbox, data.window())
+    if client:
+        window = OBClient_window(client)
+        send_client_msg(root, OBProperty_net_wm_desktop, 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."""
+    client = Openbox_findClient(openbox, data.window())
+    if not client: return
+    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
+    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."""
+    client = Openbox_findClient(openbox, data.window())
+    if not client: return
+    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
+    send_to_desktop(data, d)
+    if follow:
+        change_desktop(data, d)
+
+def state_above(data, add=2):
+    """Toggles, adds or removes the 'above' state on a window."""
+    client = Openbox_findClient(openbox, data.window())
+    if not client: return
+    root = ScreenInfo_rootWindow(OBDisplay_screenInfo(data.screen()))
+    window = OBClient_window(client)
+    send_client_msg(root, OBProperty_net_wm_state, window, add,
+                    OBProperty_net_wm_state_above)
+    
+def state_below(data, add=2):
+    """Toggles, adds or removes the 'below' state on a window."""
+    client = Openbox_findClient(openbox, data.window())
+    if not client: return
+    root = ScreenInfo_rootWindow(OBDisplay_screenInfo(data.screen()))
+    window = OBClient_window(client)
+    print OBProperty_net_wm_state_below
+    send_client_msg(root, OBProperty_net_wm_state, window, add,
+                    OBProperty_net_wm_state_below)
     
 #########################################
 ### Convenience functions for scripts ###
This page took 0.021056 seconds and 4 git commands to generate.