- tasks before 0.1: - tiling - Refactor to make user configuration reasonable. There should be one file (Config.hs) with all the knobs a user can twist. - Code clean up after tiling and StackSet changes - Make sure the quickchecks make sense with the new StackSet - think about the statusbar/multithreading. Three shared TVars: windowTitle :: TVar String workspace :: TVar Int statusText :: TVar String Three threads: Main thread, handles all of the events that it handles now. When necessary, it writes to workspace or windowTitle Status IO thread, the algorithm is something like this: forever $ do s <- getLine atomic (writeTVar statusText s) Statusbar drawing thread, waits for changes in all three TVars, and redraws whenever it finds a change. - tiling: - Layout calculation: the current algorithm is crude, windows overlap - make focus remain between workspace switches - change focus in the StackSet structure on EnterNotify - operations to change window order (like dwm's mod+enter) - add 'ratio' to XState, add bindings to change it on the fly - borders (low priority, maybe wait until 0.2) * Don't resize past end of screen * Tile vertically/ resize height.