X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=scripts%2Fwindowplacement.py;h=e7ba187ded2741ddb230748e5ce71b899227a55a;hb=ffea5b55912ea936c84ce3d17577e9532a81cae4;hp=81d260e8188a65bef75f01aaeb2bdaf4b4caf469;hpb=5face4c6f35172761367f63ac0b6eaf62d84e532;p=chaz%2Fopenbox diff --git a/scripts/windowplacement.py b/scripts/windowplacement.py index 81d260e8..e7ba187d 100644 --- a/scripts/windowplacement.py +++ b/scripts/windowplacement.py @@ -1,8 +1,18 @@ ############################################################################ ### Window placement algorithms, choose one of these and ebind it to the ### ### ob.EventAction.PlaceWindow event. ### +### ### +### Also see historyplacement.py for the history placement module which ### +### provides an algorithm that can be used in place of, or alongside, ### +### these. ### ############################################################################ +############################################################################## +### Options for the windowplacement module: ### +### ### +### ### +############################################################################## + import otk import ob import random @@ -10,12 +20,12 @@ import random _rand = random.Random() def random(data): + """Place windows randomly around the screen.""" if not data.client: return + if data.client.positionRequested(): return client_area = data.client.area() frame_size = data.client.frame.size() screen_area = ob.openbox.screen(data.screen).area() - print str(screen_area.x()) + " " + str(screen_area.y()) + " " + \ - str(screen_area.width()) + " " + str(screen_area.height()) width = screen_area.width() - (client_area.width() + frame_size.left + frame_size.right) height = screen_area.height() - (client_area.height() + @@ -25,4 +35,27 @@ def random(data): y = _rand.randrange(screen_area.y(), height-1) data.client.move(x, y) +_cascade_x = 0 +_cascade_y = 0 + +def cascade(data): + """Place windows in a cascading order from top-left to bottom-right.""" + if not data.client: return + if data.client.positionRequested(): return + client_area = data.client.area() + frame_size = data.client.frame.size() + screen_area = ob.openbox.screen(data.screen).area() + width = screen_area.width() - (client_area.width() + + frame_size.left + frame_size.right) + height = screen_area.height() - (client_area.height() + + frame_size.top + frame_size.bottom) + global _cascade_x, _cascade_y + if _cascade_x < screen_area.x() or _cascade_y < screen_area.y() or \ + _cascade_x >= width or _cascade_y >= height: + _cascade_x = screen_area.x() + _cascade_y = screen_area.y() + data.client.move(_cascade_x, _cascade_y) + _cascade_x += frame_size.top + _cascade_y += frame_size.top + print "Loaded windowplacement.py"