X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=scripts%2Fbuiltins.py;h=d87bf3d84dae560f7fb6f42daea57f36f16f26c6;hb=bd748f74022019c4c9ee3e078afcef14cf47d370;hp=82f21aea1a4922b4e7f4b79d587ba01cd66b5e83;hpb=66921633e5e0c071f2ccfb36e6b9f533889af9d8;p=chaz%2Fopenbox diff --git a/scripts/builtins.py b/scripts/builtins.py index 82f21aea..d87bf3d8 100644 --- a/scripts/builtins.py +++ b/scripts/builtins.py @@ -105,7 +105,14 @@ def unshade(data): 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) @@ -113,9 +120,51 @@ def next_desktop(data, no_wrap=0): d = d + 1 elif not no_wrap: d = 0 - OBScreen_changeDesktop(screen, d) + 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) @@ -123,7 +172,9 @@ def prev_desktop(data, no_wrap=0): d = d - 1 elif not no_wrap: d = n - 1 - OBScreen_changeDesktop(screen, d) + send_to_desktop(data, d) + if follow: + change_desktop(data, d) ######################################### ### Convenience functions for scripts ###