summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/Phi/Widgets/Taskbar.hs116
-rw-r--r--src/Phi.hs8
2 files changed, 65 insertions, 59 deletions
diff --git a/lib/Phi/Widgets/Taskbar.hs b/lib/Phi/Widgets/Taskbar.hs
index 80a5cc7..d4cbca7 100644
--- a/lib/Phi/Widgets/Taskbar.hs
+++ b/lib/Phi/Widgets/Taskbar.hs
@@ -211,67 +211,73 @@ instance WidgetClass Taskbar where
renderText (desktopFont ds) (fromIntegral (dx - dlabelwidth desktop - gap desktop ds)) 0 (dlabelwidth desktop) h $ show (desktop+1)
restore
- _ -> return ()
- forM_ (zip [0..] desktopWindows) $ \(i, window) -> do
- let style = (if window == activeWindow then activeTaskStyle else normalTaskStyle) config
- (r, g, b, a) = taskColor style
- leftBorder = (borderLeft $ margin $ taskBorder style) + (borderWidth $ taskBorder style) + (borderLeft $ padding $ taskBorder style)
- rightBorder = (borderRight $ margin $ taskBorder style) + (borderWidth $ taskBorder style) + (borderRight $ padding $ taskBorder style)
- h' = h - (borderV $ margin $ taskBorder style)
- mstate = M.lookup window windowStates
- micons = M.lookup window windowIcons
- mscaledIconRef = M.lookup window windowScaledIcons
- x = dx + i*windowWidth
-
- case (mstate, micons, mscaledIconRef) of
- (Just state, Just icons, Just scaledIconRef) -> do
- save
- drawBorder (taskBorder style) x 0 windowWidth h
- clip
-
- setSourceRGBA r g b a
- renderText (taskFont style) (fromIntegral (x + leftBorder + h' + 3)) 0 (windowWidth - leftBorder - h' - 3 - rightBorder) h $ windowTitle state
-
- restore
+ forM_ (zip [0..] desktopWindows) $ \(i, window) -> do
+ let style = (if window == activeWindow then activeTaskStyle else normalTaskStyle) config
+ (r, g, b, a) = taskColor style
+ leftBorder = (borderLeft $ margin $ taskBorder style) + (borderWidth $ taskBorder style) + (borderLeft $ padding $ taskBorder style)
+ rightBorder = (borderRight $ margin $ taskBorder style) + (borderWidth $ taskBorder style) + (borderRight $ padding $ taskBorder style)
+ hd = h - (borderV $ margin $ desktopBorder ds) - 2*(borderWidth $ desktopBorder ds) - (borderV $ padding $ desktopBorder ds)
+ h' = hd - (borderV $ margin $ taskBorder style)
+ mstate = M.lookup window windowStates
+ micons = M.lookup window windowIcons
+ mscaledIconRef = M.lookup window windowScaledIcons
+ x = dx + i*windowWidth
- mscaledIcon <- liftIO $ readIORef scaledIconRef
- scaledIcon <- case mscaledIcon of
- Just (size, icon) | size == h' -> do
- return $ Just icon
- _ -> do
- case bestIcon icons of
- Just icon -> do
- scaledIcon <- liftIO $ createSimilarSurface icon ContentColorAlpha h' h'
- renderWith scaledIcon $ do
- imageW <- imageSurfaceGetWidth icon
- imageH <- imageSurfaceGetHeight icon
-
- let scalef = (fromIntegral h')/(fromIntegral $ max imageW imageH)
-
- case True of
- _ | imageH < imageW -> translate 0 (fromIntegral (imageW-imageH)*scalef/2)
- | otherwise -> translate (fromIntegral (imageH-imageW)*scalef/2) 0
+ case (mstate, micons, mscaledIconRef) of
+ (Just state, Just icons, Just scaledIconRef) -> do
+ save
+ translate 0 $ fromIntegral $ ((borderTop $ margin $ desktopBorder ds) + (borderWidth $ desktopBorder ds) + (borderTop $ padding $ desktopBorder ds))
+ save
+ drawBorder (taskBorder style) x 0 windowWidth hd
+ clip
+
+ setSourceRGBA r g b a
+ renderText (taskFont style) (fromIntegral (x + leftBorder + h' + 3)) 0 (windowWidth - leftBorder - h' - 3 - rightBorder) hd $ windowTitle state
+
+ restore
+
+ mscaledIcon <- liftIO $ readIORef scaledIconRef
+ scaledIcon <- case mscaledIcon of
+ Just (size, icon) | size == h' -> do
+ return $ Just icon
+ _ -> do
+ case bestIcon icons of
+ Just icon -> do
+ scaledIcon <- liftIO $ createSimilarSurface icon ContentColorAlpha h' h'
+ renderWith scaledIcon $ do
+ imageW <- imageSurfaceGetWidth icon
+ imageH <- imageSurfaceGetHeight icon
+
+ let scalef = (fromIntegral h')/(fromIntegral $ max imageW imageH)
+
+ case True of
+ _ | imageH < imageW -> translate 0 (fromIntegral (imageW-imageH)*scalef/2)
+ | otherwise -> translate (fromIntegral (imageH-imageW)*scalef/2) 0
+
+ downscaled scalef icon
+ paint
+ liftIO $ writeIORef scaledIconRef $ Just (h', scaledIcon)
+ return $ Just scaledIcon
- downscaled scalef icon
- paint
- liftIO $ writeIORef scaledIconRef $ Just (h', scaledIcon)
- return $ Just scaledIcon
+ Nothing -> return Nothing
+
+ case scaledIcon of
+ Just icon -> do
+ save
+ translate (fromIntegral $ x + leftBorder) (fromIntegral $ borderTop $ margin $ taskBorder style)
+ taskIconStyle style icon
+ paint
+ restore
- Nothing -> return Nothing
-
- case scaledIcon of
- Just icon -> do
- save
- translate (fromIntegral $ x + leftBorder) (fromIntegral $ borderTop $ margin $ taskBorder style)
- taskIconStyle style icon
- paint
+ Nothing ->
+ return ()
+
restore
-
- Nothing ->
- return ()
- _ -> return ()
+ _ -> return ()
+
+ _ -> return ()
return $ nwindows + length desktopWindows
diff --git a/src/Phi.hs b/src/Phi.hs
index 4749bde..e8a7c8b 100644
--- a/src/Phi.hs
+++ b/src/Phi.hs
@@ -14,7 +14,7 @@ main = do
runPhi defaultXConfig defaultPanelConfig { panelPosition = Bottom }
[theTaskbar, brightBorder [theSystray], brightBorder [theClock]]
where
- normalTaskBorder = BorderConfig (BorderWidth 2 (-3) 2 7) 1 (BorderWidth 0 5 0 5) (0.9, 0.9, 0.9, 0.8) (0.45, 0.45, 0.45, 1) 5 0
+ normalTaskBorder = BorderConfig (BorderWidth (-1) (-3) (-1) 7) 1 (BorderWidth 0 5 0 5) (0.9, 0.9, 0.9, 0.8) (0.45, 0.45, 0.45, 1) 5 0
activeTaskBorder = normalTaskBorder { borderColor = (1, 1, 1, 0.8)
, backgroundColor = (0, 0, 0, 1)
}
@@ -41,7 +41,7 @@ main = do
}
- theTaskbar = taskbar defaultTaskbarConfig { normalTaskStyle = taskStyle {taskIconStyle = desaturateIconStyle 0.6}
+ theTaskbar = taskbar defaultTaskbarConfig { normalTaskStyle = taskStyle {taskIconStyle = desaturateIconStyle 0.7}
, activeTaskStyle = taskStyle {taskBorder = activeTaskBorder}
, desktopStyle = Just (normalDesktopStyle, currentDesktopStyle)
}
@@ -49,7 +49,7 @@ main = do
theSystray = systray
theClock = clock defaultClockConfig { clockFormat = "<span font='Sans 8'>%R</span>\n<span font='Sans 6'>%A %d %B</span>"
- , lineSpacing = (-2)
+ , lineSpacing = (-3)
, clockSize = 75
}
- brightBorder = border $ BorderConfig (simpleBorderWidth 1) 1 (BorderWidth (-2) 3 0 3) (0.5, 0.5, 0.5, 0.65) (0.85, 0.85, 0.85, 0.8) 5 0
+ brightBorder = border normalDesktopBorder