### windowplacement module also apply!) ###
##############################################################################
IGNORE_REQUESTED_POSITIONS = 0
-"""When true, the placement algorithm will attempt to place windows even
- when they request a position (like XMMS). Note this only applies to
- normal windows, not to special cases like desktops and docks."""
+"""When non-zero, the placement algorithm will attempt to place windows even
+ when they request a position (like XMMS). Note this only applies to normal
+ windows, not to special cases like desktops and docks."""
+DONT_DUPLICATE = 1
+"""When non-zero, if 2 copies of the same match in history are to be placed
+ before one of them is closed (so it would be placed over-top of the last
+ one), this will cause the second window to not be placed via history, and
+ the FALLBACK will be used instead."""
FALLBACK = windowplacement.random
"""The window placement algorithm that will be used when history placement
does not have a place for the window."""
"""Set this to a function to have the function called before attempting to
place a window via history. If the function returns a non-zero, then an
attempt will be made to place the window. If it returns zero, the
- fallback method will be directly applied instead."""
+ FALLBACK method will be directly applied instead."""
FILENAME = 'historydb'
"""The name of the file where history data will be stored. The number of
the screen is appended onto this filename."""
self.role = role
self.x = x
self.y = y
+ self.placed = 0
def __eq__(self, other):
if self.appname == other.appname and \
self.appclass == other.appclass and \
def _load(data):
global _data
- file = open(os.environ['HOME']+'/.openbox/'+FILENAME+"."+str(data.screen),
- 'r')
- if file:
+ try:
+ file = open(os.environ['HOME'] + '/.openbox/' + FILENAME+"." +
+ str(data.screen), 'r')
# read data
for line in file.readlines():
line = line[:-1] # drop the '\n'
except ValueError: pass
except IndexError: pass
file.close()
+ except IOError: pass
def _save(data):
global _data
coords = _data[data.screen][i]
print "Found in history ("+str(coords.x)+","+\
str(coords.y)+")"
- data.client.move(coords.x, coords.y)
- return
+ if not (DONT_DUPLICATE and coords.placed):
+ data.client.move(coords.x, coords.y)
+ coords.placed = 1
+ return
+ else:
+ print "Already placed another window there"
else:
print "No match in history"
except TypeError: