2017-12-12 00:48:56 +01:00
|
|
|
{-# LANGUAGE FlexibleContexts #-}
|
|
|
|
|
|
|
|
module StatusBar (
|
|
|
|
StatusBar.modify
|
|
|
|
) where
|
|
|
|
|
|
|
|
import Data.List
|
|
|
|
import Data.Monoid
|
|
|
|
import Solarized as S
|
|
|
|
import XMonad.Core
|
|
|
|
import XMonad.Hooks.DynamicBars (dynStatusBarStartup,dynStatusBarEventHook,multiPP)
|
|
|
|
import XMonad.Hooks.DynamicLog
|
|
|
|
import XMonad.ManageHook
|
|
|
|
import XMonad.Util.Run
|
|
|
|
|
|
|
|
-- Type constructors
|
|
|
|
import GHC.IO.Handle (Handle)
|
|
|
|
|
|
|
|
modify :: XConfig l -> XConfig l
|
|
|
|
modify conf = conf
|
|
|
|
{ startupHook = do
|
|
|
|
startupHook conf
|
|
|
|
dynStatusBarStartup runXmobar killXmobar
|
|
|
|
, handleEventHook = handleEventHook conf <+> dynStatusBarEventHook runXmobar killXmobar
|
|
|
|
, logHook = do
|
|
|
|
logHook conf
|
|
|
|
multiPP currentPP otherPP
|
|
|
|
}
|
|
|
|
|
|
|
|
runXmobar :: ScreenId -> IO Handle
|
|
|
|
runXmobar (S id) = spawnPipe
|
|
|
|
$ "/run/current-system/sw/bin/xmobar --screen="
|
|
|
|
<> show id
|
2020-09-25 11:13:26 +02:00
|
|
|
<> " /home/e/.xmonad/xmobarrc"
|
2017-12-12 00:48:56 +01:00
|
|
|
|
|
|
|
killXmobar :: IO ()
|
|
|
|
-- killXmobar = spawn "/run/current-system/sw/bin/pkill xmobar"
|
|
|
|
killXmobar = return ()
|
|
|
|
|
|
|
|
otherPP = currentPP
|
2017-12-13 09:36:17 +01:00
|
|
|
{ ppCurrent = xmobarColor S.foreground S.background
|
|
|
|
, ppVisible = xmobarColor S.foreground S.background
|
|
|
|
, ppHidden = xmobarColor S.foreground S.background
|
|
|
|
, ppHiddenNoWindows = xmobarColor S.backgroundhl S.background
|
2017-12-12 00:48:56 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
currentPP = def
|
|
|
|
{ ppCurrent = xmobarColor' S.orange
|
|
|
|
, ppVisible = xmobarColor' S.yellow -- other screen
|
|
|
|
, ppHidden = xmobarColor' S.foreground -- other workspaces with windows
|
|
|
|
, ppHiddenNoWindows = xmobarColor' S.foregroundll -- other workspaces
|
|
|
|
, ppSep = " "
|
|
|
|
, ppWsSep = " "
|
|
|
|
, ppLayout = printLayout
|
|
|
|
, ppTitle = printTitle
|
|
|
|
}
|
|
|
|
where xmobarColor' fg = xmobarColor fg S.base03
|
|
|
|
|
|
|
|
printLayout s | "Mirror ResizableTall" `isSuffixOf` s = "[ — ]"
|
|
|
|
printLayout s | "ResizableTall" `isSuffixOf` s = "[ | ]"
|
|
|
|
printLayout "Full" = "[ F ]"
|
|
|
|
printLayout l = "[" ++ l ++ "]"
|
|
|
|
|
|
|
|
printTitle t = let t' = shorten 120 t
|
|
|
|
in xmobarColor' S.foregroundll "« "
|
|
|
|
++ xmobarColor' S.foregroundhl t'
|
|
|
|
++ xmobarColor' S.foregroundll " »"
|
|
|
|
|
|
|
|
|