diff options
-rw-r--r-- | Operations.hs | 10 | ||||
-rw-r--r-- | TODO | 1 |
2 files changed, 10 insertions, 1 deletions
diff --git a/Operations.hs b/Operations.hs index b80d16f..ef630db 100644 --- a/Operations.hs +++ b/Operations.hs @@ -142,10 +142,16 @@ withServerX f = withDisplay $ \dpy -> do -- | Explicitly set the keyboard focus to the given window setFocus :: Window -> X () setFocus w = do + -- Remove the border for the window no longer in focus. + ws <- gets workspace + whenJust (W.peek ws) (\oldw -> setBorder oldw 0xdddddd) + -- Set focus to the given window. withDisplay $ \d -> io $ setInputFocus d w revertToPointerRoot 0 -- This does not use 'windows' intentionally. 'windows' calls refresh, -- which means infinite loops. modify (\s -> s { workspace = W.raiseFocus w (workspace s) }) + -- Set new border for raised window. + setBorder w 0xff0000 -- | Set the focus to the window on top of the stack, or root setTopFocus :: X () @@ -155,6 +161,10 @@ setTopFocus = do Just new -> setFocus new Nothing -> gets theRoot >>= setFocus +-- | Set the border color for a particular window. +setBorder :: Window -> Pixel -> X () +setBorder w p = withDisplay $ \d -> io $ setWindowBorder d w p + -- | raise. focus to window at offset 'n' in list. -- The currently focused window is always the head of the list raise :: Ordering -> X () @@ -24,6 +24,5 @@ - make focus remain between workspace switches - change focus in the StackSet structure on EnterNotify - let mod+enter demote a master window - - borders (low priority, maybe wait until 0.2) * Tile vertically/ resize height. |