81 lines
2.3 KiB
Haskell
81 lines
2.3 KiB
Haskell
module Main where
|
|
|
|
import Data.Char (toLower)
|
|
import Data.List
|
|
import System.Directory
|
|
import System.FilePath.Posix
|
|
import System.Information.CPU
|
|
import System.Information.Memory
|
|
import System.Taffybar
|
|
import System.Taffybar.IconImages
|
|
import System.Taffybar.MPRIS2
|
|
import System.Taffybar.Pager
|
|
import System.Taffybar.SimpleClock
|
|
import System.Taffybar.Systray
|
|
import System.Taffybar.TaffyPager
|
|
import System.Taffybar.Widgets.PollingGraph
|
|
import System.Taffybar.WorkspaceHUD
|
|
|
|
memCallback = do
|
|
mi <- parseMeminfo
|
|
return [memoryUsedRatio mi]
|
|
|
|
cpuCallback = do
|
|
(_, systemLoad, totalLoad) <- cpuLoad
|
|
return [totalLoad, systemLoad]
|
|
|
|
resourcesDirectory file = ("/home" </> "imalison" </> ".lib" </> "resources" </> file)
|
|
|
|
fallbackIcons _ klass
|
|
| isInfixOf "URxvt" klass = IIFilePath $ resourcesDirectory "urxvt.png"
|
|
| otherwise = IIColor $ (0xFF, 0xFF, 0, 0xFF)
|
|
|
|
myGetIconInfo =
|
|
windowTitleClassIconGetter False fallbackIcons
|
|
|
|
main = do
|
|
let memCfg =
|
|
defaultGraphConfig
|
|
{graphDataColors = [(1, 0, 0, 1)], graphLabel = Just "mem"}
|
|
cpuCfg =
|
|
defaultGraphConfig
|
|
{ graphDataColors = [(0, 1, 0, 1), (1, 0, 1, 0.5)]
|
|
, graphLabel = Just "cpu"
|
|
}
|
|
let clock = textClockNew Nothing "%a %b %_d %r" 1
|
|
pagerConfig = defaultPagerConfig {useImages = True}
|
|
mpris = mpris2New
|
|
mem = pollingGraphNew memCfg 1 memCallback
|
|
cpu = pollingGraphNew cpuCfg 0.5 cpuCallback
|
|
tray = systrayNew
|
|
hudConfig =
|
|
defaultWorkspaceHUDConfig
|
|
{ underlineHeight = 3
|
|
, minWSWidgetSize = Nothing
|
|
, minIcons = 3
|
|
, getIconInfo = myGetIconInfo
|
|
, windowIconSize = 32
|
|
, widgetGap = 0
|
|
-- , widgetBuilder = buildBorderButtonController
|
|
, showWorkspaceFn = hideEmpty
|
|
, updateRateLimitMicroseconds = 100000
|
|
, updateIconsOnTitleChange = True
|
|
, updateOnWMIconChange = True
|
|
, debugMode = True
|
|
}
|
|
hudPagerConfig = hudFromPagerConfig pagerConfig
|
|
hud = taffyPagerHUDNew pagerConfig hudConfig
|
|
pager = taffyPagerNew pagerConfig
|
|
defaultTaffybar
|
|
defaultTaffybarConfig
|
|
{ startWidgets = [hud]
|
|
, endWidgets = [tray, clock, mem, cpu, mpris]
|
|
, monitorNumber = 1
|
|
, barPosition = Top
|
|
, barHeight = 40
|
|
}
|
|
|
|
-- Local Variables:
|
|
-- flycheck-ghc-args: ("-Wno-missing-signatures")
|
|
-- End:
|