mirror of
https://github.com/xmonad/xmonad.git
synced 2025-07-30 19:51:52 -07:00
47 lines
1.8 KiB
Plaintext
47 lines
1.8 KiB
Plaintext
- Tasks blocking xmonad 0.1
|
|
- Move the multi-screen handling from XState to StackSet (see notes below)
|
|
- Fix the missing windows on workspace switch bug
|
|
|
|
- Clean up focus and mouse related issues. During 'refresh', xmonad should
|
|
ignore EnterNotify events (by changing selectInput for the duration).
|
|
- let mod+enter demote a master window
|
|
|
|
- Xinerama bugs:
|
|
- Closing the last window in a workspace moves focus to another Xinerama
|
|
screen.
|
|
- Focus goes to other Xinerama screen when changing to empty window and
|
|
create new window.
|
|
- Focus doesn't always follow mouse or mouse click across Xinerama screens;
|
|
sometimes focus will only switch with key command to switch to that
|
|
screen.
|
|
|
|
- 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.
|
|
|
|
- Notes on new StackSet:
|
|
|
|
The actors: screens, workspaces, windows
|
|
|
|
Invariants:
|
|
- There is exactly one screen in focus at any given time.
|
|
- A screen views exactly one workspace.
|
|
- A workspace is visible on one or zero screens.
|
|
- A workspace has zero or more windows.
|
|
- A workspace has either one or zero windows in focus. Zero if the
|
|
workspace has no windows, one in all other cases.
|
|
- A window is a member of only one workspace.
|