+import ob # base module
import focus # add some default focus handling and cycling functions
import focusmodel # default focus models
import behavior # defines default behaviors for interaction with windows
import callbacks # a lib of functions that can be used as binding callbacks
import windowplacement # use a routine in here to place windows
+import historyplacement # history window placement
# try focus something when nothing is focused
-focus.fallback = 1
+focus.FALLBACK = 1
+# choose a default focus model
+focusmodel.setup_click_focus() # use focusmodel.setup_sloppy_focus() instead to
+ # make focus follow the cursor, or bind things
+ # in some way like these functions do to make
+ # your own custom focus model.
# set up the mouse buttons
-focusmodel.setup_sloppy_focus()
behavior.setup_window_clicks()
behavior.setup_window_buttons()
behavior.setup_scroll()
# my window placement algorithm
-ob.ebind(ob.EventAction.PlaceWindow, windowplacement.random)
+#ob.ebind(ob.EventAction.PlaceWindow, windowplacement.random)
+ob.ebind(ob.EventAction.PlaceWindow, historyplacement.place)
+# don't place terminals by history placement (xterm,aterm,rxvt)
+def histplace(data):
+ if data.client.appClass() == "XTerm": return 0
+ return 1
+historyplacement.CONFIRM_CALLBACK = histplace
+
# run xterm from root clicks
ob.mbind("Left", ob.MouseContext.Root, ob.MouseAction.Click,
ob.kbind(["A-F4"], ob.KeyContext.All, callbacks.close)
+ob.kbind(["W-d"], ob.KeyContext.All, callbacks.toggle_show_desktop)
+
+# focus bindings
+import stackedcycle # functions for doing stacked 'kde-style' cycling
+ob.kbind(["A-Tab"], ob.KeyContext.All, stackedcycle.next)
+ob.kbind(["A-S-Tab"], ob.KeyContext.All, stackedcycle.previous)
+
+# if you want linear cycling instead of stacked cycling, comment out the focus
+# bindings above, and use these instead.
+#import focuscycle # functions for doing linear cycling
+#focuscycle.RAISE_WINDOW = 0 # don't raise windows when they're activated
+#ob.kbind(["A-Tab"], ob.KeyContext.All, focuscycle.next)
+#ob.kbind(["A-S-Tab"], ob.KeyContext.All, focuscycle.previous)
+
# desktop changing bindings
ob.kbind(["C-1"], ob.KeyContext.All, lambda(d): callbacks.change_desktop(d, 0))
ob.kbind(["C-2"], ob.KeyContext.All, lambda(d): callbacks.change_desktop(d, 1))
ob.kbind(["C-3"], ob.KeyContext.All, lambda(d): callbacks.change_desktop(d, 2))
ob.kbind(["C-4"], ob.KeyContext.All, lambda(d): callbacks.change_desktop(d, 3))
ob.kbind(["C-A-Right"], ob.KeyContext.All,
- lambda(d): callbacks.next_desktop(d))
+ lambda(d): callbacks.right_desktop(d))
ob.kbind(["C-A-Left"], ob.KeyContext.All,
- lambda(d): callbacks.prev_desktop(d))
+ lambda(d): callbacks.left_desktop(d))
+ob.kbind(["C-A-Up"], ob.KeyContext.All,
+ lambda(d): callbacks.up_desktop(d))
+ob.kbind(["C-A-Down"], ob.KeyContext.All,
+ lambda(d): callbacks.down_desktop(d))
ob.kbind(["C-S-A-Right"], ob.KeyContext.All,
lambda(d): callbacks.send_to_next_desktop(d))