]> Dogcows Code - chaz/openbox/blobdiff - scripts/focus.py
oops missing a */
[chaz/openbox] / scripts / focus.py
index de426c720a2484d05d869242bedd7e88fcaabc33..9eb6bfb8177c5391052d8a0b9085892c5f03c334 100644 (file)
@@ -2,26 +2,28 @@
 ###          Functions for helping out with your window focus.          ###
 ###########################################################################
 
-###########################################################################
-###         Options that affect the behavior of the focus module.       ###
-###########################################################################
-AVOID_SKIP_TASKBAR = 1
-"""Don't focus windows which have requested to not be displayed in taskbars.
-   You will still be able to focus the windows, but not through cycling, and
-   they won't be focused as a fallback if 'fallback' is enabled."""
-FALLBACK = 0
-"""Send focus somewhere when nothing is left with the focus, if possible."""
-###########################################################################
-
-###########################################################################
-###########################################################################
+import config, ob
 
-###########################################################################
-###      Internal stuff, should not be accessed outside the module.     ###
-###########################################################################
+export_functions = ()
 
-import ob
+config.add('focus',
+           'avoid_skip_taskbar',
+           'Avoid SkipTaskbar Windows',
+           "Don't focus windows which have requested to not be displayed " + \
+           "in taskbars. You will still be able to focus the windows, but " + \
+           "not through cycling, and they won't be focused as a fallback " + \
+           "if 'Focus Fallback' is enabled.",
+           'boolean',
+           1)
 
+config.add('focus',
+           'fallback',
+           'Focus Fallback',
+           "Send focus somewhere when nothing is left with the focus, if " + \
+           "possible.",
+           'boolean',
+           1)
+                    
 # maintain a list of clients, stacked in focus order
 _clients = []
 _skip = 0
@@ -30,7 +32,8 @@ def _focusable(client, desktop):
     if not client.normal(): return 0
     if not (client.canFocus() or client.focusNotify()): return 0
     if client.iconic(): return 0
-    if AVOID_SKIP_TASKBAR and client.skipTaskbar(): return 0
+    if config.get('focus', 'avoid_skip_taskbar') and \
+       client.skipTaskbar(): return 0
 
     desk = client.desktop()
     if not (desk == 0xffffffff or desk == desktop): return 0
@@ -48,25 +51,24 @@ def _remove(client):
     raise ValueError("_remove(x): x not in _clients list.")
 
 def _focused(data):
-    global _clients
+    global _clients, _skip
 
     if _skip:
-        global _skip
         _skip -= 1
         return
 
     if data.client:
-        print data.client.window()
         # move it to the top
         try:
             _remove(data.client)
         except ValueError: pass # happens if _focused comes before _newwindow
         _clients.insert(0, data.client)
-    elif FALLBACK:
+    elif config.get('focus', 'fallback'):
         # pass around focus
         desktop = ob.openbox.screen(data.screen).desktop()
         for c in _clients:
-            if _focusable(c, desktop) and c.focus():
+            if _focusable(c, desktop):
+                c.focus()
                 break
 
 def _newwindow(data):
This page took 0.021919 seconds and 4 git commands to generate.