--- /dev/null
+#!/usr/bin/env python3
+
+import sys
+import os
+from i3ipc import Connection, Event
+from pprint import pprint
+
+
+def find_parent(i3, window_id):
+ """
+ Find the parent of a given window id
+ """
+
+ def finder(con, parent, gp):
+ if con.id == window_id:
+ return (parent, gp)
+ for node in con.nodes:
+ res = finder(node, con, parent)
+ if res:
+ return res
+ return None
+
+ return finder(i3.get_tree(), None, None)
+
+
+def focus_hook(i3, e):
+ """
+ Set the layout/split for the currently
+ focused window to either vertical or
+ horizontal, depending on its width/height
+ """
+
+ if os.path.isfile("/tmp/iank-i3-no-auto"):
+ return
+
+ # debugging
+ #pprint(vars(e))
+
+ parent, gp = find_parent(i3, e.container.id)
+
+ # This gets rid of tabbed container with single windows.
+ #if (parent and gp and parent.layout == 'tabbed' and len(parent.nodes) == 1):
+ # This gets rid of all single window containers.
+ if (parent and gp and len(parent.nodes) == 1):
+ i3.command('mark i3ha')
+ i3.command('focus parent')
+ i3.command('focus parent')
+ i3.command('mark i3hb')
+ i3.command('[con_mark="i3ha"] focus')
+ i3.command('move window to mark i3hb')
+ i3.command('unmark i3ha')
+ i3.command('unmark i3hb')
+
+def main():
+ i3 = Connection()
+ i3.on(Event.WINDOW_FOCUS, focus_hook)
+ i3.main()
+
+
+if __name__ == "__main__":
+ main()