summaryrefslogtreecommitdiffstats
path: root/TODO
blob: cf0bedfe768dc20d289aaf8c7428ebfb67056856 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
- 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.

- 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:
    - StackSet currently holds one stack, it needs to hold two.  One stack
      contains focus info, the top of that stack is always the window that
      is in the foreground and has focus.

      The other stack keeps track of window layout order.  In tiling mode,
      the first window in the stack is in the master area.  In both tiling
      and full screen mode, window cycling follows the order in this stack.

    - Layout calculation: a simple function from number of windows to list
      of coordinates.

    - state components, key combos, etc. for changing the current layout
      scheme