Skip to content

Instantly share code, notes, and snippets.

@LeifW
Created June 13, 2018 07:34
Show Gist options
  • Save LeifW/1e37c058670a5b6721e5d7b0d8999970 to your computer and use it in GitHub Desktop.
Save LeifW/1e37c058670a5b6721e5d7b0d8999970 to your computer and use it in GitHub Desktop.
module Main where
import System.Taffybar
import System.Taffybar.Information.CPU
import System.Taffybar.Information.Memory
import System.Taffybar.SimpleConfig
import System.Taffybar.Widget
import System.Taffybar.Widget.Workspaces
import System.Taffybar.Widget.Battery
import System.Taffybar.Widget.SNITray
import System.Taffybar.Widget.Generic.PollingGraph
import System.Taffybar.Widget.Generic.PollingLabel
import Control.Monad.IO.Class (MonadIO)
import Graphics.UI.Gtk.Types
import Network.IWlib
import System.Log.Logger
memCallback = do
mi <- parseMeminfo
return [memoryUsedRatio mi]
cpuCallback = do
(userLoad, systemLoad, totalLoad) <- cpuLoad
return [totalLoad, systemLoad]
wifiInfo :: IO String
wifiInfo = do
WirelessInfo ssid strength <- getWirelessInfo "wlan0"
pure $ ssid ++ ": " ++ show strength ++ "%"
wifi :: MonadIO m => m Widget
wifi = pollingLabelNew "" 2.0 wifiInfo
--battery = batteryIconNew
logDebug = do
logger <- getLogger "System.Taffybar"
saveGlobalLogger $ setLevel DEBUG logger
{-
logger <- getLogger "System.Taffybar.Widget.Generic.AutoSizeImage"
saveGlobalLogger $ setLevel DEBUG logger
logger2 <- getLogger "StatusNotifier.Tray"
saveGlobalLogger $ setLevel DEBUG logger2
workspacesLogger <- getLogger "System.Taffybar.Widget.Workspaces"
saveGlobalLogger $ setLevel WARNING workspacesLogger
-}
main = do
--logDebug
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 "<span fgcolor='orange'>%a %b %_d %H:%M</span>" 1
workspaces = workspacesNew defaultWorkspacesConfig { showWorkspaceFn = hideEmpty }
--workspaces = workspacesNew defaultWorkspacesConfig { showWorkspaceFn = hideEmpty, getWindowIconPixbuf = const $ const $ pure Nothing }
windows = windowsNew defaultWindowsConfig
layout = layoutNew defaultLayoutConfig
note = notifyAreaNew defaultNotificationConfig
mpris = mpris2New
mem = pollingGraphNew memCfg 1 memCallback
cpu = pollingGraphNew cpuCfg 0.5 cpuCallback
--tray = sniTrayNew
tray = sniTrayThatStartsWatcherEvenThoughThisIsABadWayToDoIt
battery = textBatteryNew "$percentage$% : $time$"
--battery = batteryIconNew
--dyreTaffybarMain $ toTaffyConfig defaultSimpleTaffyConfig
simpleTaffybar defaultSimpleTaffyConfig
{ startWidgets = [ workspaces, layout, windows, note ]
--{ startWidgets = workspaces : map (>>= buildContentsBox) [ layout, windows, note ]
--, endWidgets = map (>>= buildContentsBox) [ clock, mem, cpu, wifi ]
, endWidgets = [ clock, battery, mem, cpu, wifi, mpris ]
--, barHeight = 20
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment