.files/nix/configurations/vanadium/home/xmobar/xmobar.hs

91 lines
2.6 KiB
Haskell

import Xmobar
import Data.Function ((&))
import Data.List (intercalate)
config :: Config
config =
defaultConfig
{
-- as docked
overrideRedirect = False
-- For framework 13
, dpi = 150
, font = "Iosevka 8"
, fgColor = "#FFFFFF"
, bgColor = "#000000"
, position = BottomH 24
, textOffset = 2
, commands =
[ Run $ DateZone "%a %d %H:%M:%S" "" "" "hereClock" (1 &second)
, Run $ DateZone "%H:%M" "" "America/Aruba" "arubaClock" (10 &second)
, Run $ DateZone "%H:%M" "" "Europe/Dublin" "dublinClock" (10 &second)
, Run $ DateZone "%H:%M" "" "Europe/Paris" "cetClock" (10 &second)
, Run $ DateZone "%H:%M" "" "Asia/Taipei" "tstClock" (10 &second)
, Run $
Com
"tomorrow"
[ "--target", "2025-08-14"
, "--target", "2025-08-21"
]
""
(60 &minute)
, Run $
Battery
[ "-t", "<left> (<timeleft>"
, "-H", "70"
, "-L", "20"
, "-h", "green"
, "-n", "orange"
, "-l", "red"
, "--"
, "-P"
, "-A", "10"
-- TODO: File a bug upstream about notify-send
-- https://codeberg.org/xmobar/xmobar/issues/746
, "-a", "notify-send -u critical \"Battery Low\" \"Please charge your battery\""
]
(6 &second)
, Run $ Com "powerprofilesctl" ["get"] "" (6 &second)
, Run XMonadLog
, Run $
Weather
"RCSS"
[ "-t", "<station>: <tempC>°C"
, "-L","10", "-H", "25"
, "--normal", "white"
, "--high", "orange"
, "--low", "blue"
]
(15 &minute)
]
, template =
let
greyFg x = "<fc=#c9c9c9>" <> x <> "</fc>"
in
" %XMonadLog% "
<> alignSep config
<> intercalate "|"
[ (unwords . map greyFg)
[ "[AUA: %arubaClock%]"
, "[DUB: %dublinClock%]"
, "[CDG: %cetClock%]"
, "[TPE: %tstClock%]"
]
<> " "
, " %RCSS% "
, " %battery%, %powerprofilesctl%) "
, " %hereClock% (%tomorrow%) "
]
}
second :: Int -> Int
second = (* 10)
minute :: Int -> Int
minute = (* 60) . second
main :: IO ()
main = xmobar config