configurable border colors

This also fixes a bug where xmonad was assuming a 24-bit display, and just
using, eg, 0xff0000 as an index into a colormap without querying the X server
to determine the proper pixel value for "red".
This commit is contained in:
Jason Creighton
2007-04-30 04:38:59 +00:00
parent 8097060259
commit bdbca84bcd
4 changed files with 17 additions and 7 deletions

View File

@@ -189,17 +189,18 @@ safeFocus w = do ws <- gets workspace
-- | Explicitly set the keyboard focus to the given window
setFocus :: Window -> X ()
setFocus w = do
ws <- gets workspace
XState { workspace = ws, display = dpy
, normalBorder = nbc, focusedBorder = fbc } <- get
-- clear mouse button grab and border on other windows
flip mapM_ (W.visibleWorkspaces ws) $ \n -> do
flip mapM_ (W.index n ws) $ \otherw -> do
setButtonGrab True otherw
setBorder otherw 0xdddddd
io $ setWindowBorder dpy otherw (color_pixel nbc)
withDisplay $ \d -> io $ setInputFocus d w revertToPointerRoot 0
setButtonGrab False w
setBorder w 0xff0000 -- make this configurable
io $ setWindowBorder dpy w (color_pixel fbc)
-- This does not use 'windows' intentionally. 'windows' calls refresh,
-- which means infinite loops.
@@ -213,10 +214,6 @@ 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 ()