blob: cf0bedfe768dc20d289aaf8c7428ebfb67056856 (
plain) (
blame)
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
|