From 1cc4f0c1924e20fad7018307c549cee445afbaf7 Mon Sep 17 00:00:00 2001 From: jao Date: Sat, 1 Dec 2018 19:13:08 +0000 Subject: Directory layout directly usable by xmobar executable --- src/Bottom.hs | 83 ------------------------------------------------------- src/Config.hs | 71 ----------------------------------------------- src/MPD.hs | 27 ++++++++++++++++++ src/Mpris.hs | 20 ++++++++++++++ src/Top.hs | 46 ++++++++++++++++++++++++++++++ src/lib/Bottom.hs | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/lib/Config.hs | 71 +++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 247 insertions(+), 154 deletions(-) delete mode 100644 src/Bottom.hs delete mode 100644 src/Config.hs create mode 100644 src/MPD.hs create mode 100644 src/Mpris.hs create mode 100644 src/Top.hs create mode 100644 src/lib/Bottom.hs create mode 100644 src/lib/Config.hs (limited to 'src') diff --git a/src/Bottom.hs b/src/Bottom.hs deleted file mode 100644 index 1c70548..0000000 --- a/src/Bottom.hs +++ /dev/null @@ -1,83 +0,0 @@ -module Bottom (config) where - -import Xmobar -import Config - -uptime p = Uptime (p <~> [ "-t" , " ", "-m", "3", "-c", "0", "-S" - , "On" , "-L", "10", "-H", "100"]) 600 - -weather st = - Weather st ["-t", "° % ()" - , "-L","10", "-H", "25", "--normal", "black", - "--high", "lightgoldenrod4", "--low", "darkseagreen4"] 18000 - -batt p = - BatteryN ["BAT0"] - ((p <~> ["-t", "%" - , "-S", "Off", "-d", "0", "-m", "3" - , "-L", "10", "-H", "80", "-p", "3"]) - ++ [ "--" - , "-i", "", "-O", " " - , "-o", " " - , "-H", "16", "-L", "10" - , "-h", "sienna4", "-l", "gray20"]) 50 "b0" - -coreTemp p = - CoreTemp (p <~> ["-t", "° °" - , "-L", "50", "-H", "75", "-d", "0"]) 50 - -diskU p = - DiskU [("dm-1", "") , ("/media/sdb", " s ")] - (p <~> ["-L", "20", "-H", "70", "-m", "1", "-p", "3"]) - 20 - -diskIO p = - DiskIO [("dm-1", "↑ ")] - (p <~> ["-L", "20", "-H", "5000", "-m", "5", "-p", "3"]) 10 - -mbox = MBox [ ("I", "inbox", "darkseagreen4") - , ("B", "bigml.spool", "sienna4") - , ("S", "bigsup.spool", "sienna4") - , ("b", "bugml.spool", "sienna4") - , ("G", "geiser.spool", "darkseagreen4") - , ("X", "xmobar.spool", "darkseagreen4") - , ("g", "gnu.spool", "") - , ("k", "books.spool", "") - , ("h", "hacking.spool", "") - , ("c", "computers.spool", "") - , ("w", "words.spool", "") - , ("t", "think.spool", "") - ] ["-d", "/home/jao/var/mail", "-p", " ", "-s", ""] "mbox" - - -masterVol = - Volume "default" "Master" - ["-t", " " - , "--", "-C", "black", "-c", "sienna4", "-O", "" - , "-o", "×"] 10 - -captureVol = Volume "default" "Capture" ["-t", ""] 10 - -kbd = Kbd [("us", ""), ("us(intl)", "*")] - -brightness = Brightness ["--", "-D", "intel_backlight"] 10 - -memory = Memory ["-t"," M", "-p", "2"] 20 - -config cs p = (baseConfig p) { - position = BottomSize C 100 24 - , textOffset = 17 - , commands = [ Run (uptime p) - , Run brightness - , Run (weather "EGPH") -- LEGE, LEBL, KCV0 - , Run memory - , Run (batt p) - , Run (coreTemp p) - , Run (diskU p) - , Run (diskIO p) - , Run mbox - , Run masterVol - , Run captureVol - , Run kbd - ] ++ cs -} diff --git a/src/Config.hs b/src/Config.hs deleted file mode 100644 index 94b9211..0000000 --- a/src/Config.hs +++ /dev/null @@ -1,71 +0,0 @@ -module Config (Palette, baseConfig, palette, (<~>)) where - -import System.Environment (lookupEnv) - -import Xmobar - -data Palette = Palette { pNormal :: String - , pLow :: String - , pHigh :: String - , pFont :: String - , pBorder :: String - , pForeground :: String - , pBackground :: String - , pAlpha :: Int - } - -lightTheme :: IO Bool -lightTheme = fmap (== (Just "light")) (lookupEnv "JAO_COLOR_SCHEME") - -lightPalette :: Palette -lightPalette = Palette { pNormal = "black" - , pLow = "#4d4d4d" - , pHigh = "#a0522d" - , pFont = "xft:Source Code Pro Medium-9" - , pBorder = "grey70" - , pForeground = "#000000" - , pBackground = "white" - , pAlpha = 0 - } - -darkPalette :: Palette -darkPalette = Palette { pNormal = "black" - , pLow = "#4d4d4d" - , pHigh = "#a0522d" - , pFont = "xft:NotoMono-9,xft:Inconsolata-11" - , pBorder = "black" - , pForeground = "grey50" - , pBackground = "black" - , pAlpha = 102 - } - -palette :: IO Palette -palette = do - light <- lightTheme - if light then return lightPalette else return darkPalette - -baseConfig :: Palette -> Config -baseConfig p = defaultConfig { - font = pFont p - , borderColor = pBorder p - , fgColor = (pForeground p) - , bgColor = (pBackground p) - , border = FullBM 1 - , alpha = (pAlpha p) - , additionalFonts = [] - , overrideRedirect = True - , lowerOnStart = True - , allDesktops = True - , hideOnStart = False - , persistent = True - , sepChar = "|" - , alignSep = "{}" - } - -(<~>) :: Palette -> [String] -> [String] -(<~>) p args = concat [ args - , [ "--low", (pLow p) - , "--normal", (pNormal p) - , "--high", (pHigh p) - ] - ] diff --git a/src/MPD.hs b/src/MPD.hs new file mode 100644 index 0000000..d237867 --- /dev/null +++ b/src/MPD.hs @@ -0,0 +1,27 @@ +import Xmobar +import Config (palette) +import qualified Bottom (config) + +mpd = MPD [ "-W", "12", "-b", "░", "-f", "▒", "-t" + , " "] 10 + +autoMPD = AutoMPD [ "-T", "160", "-E", "...", "-W", "10", "-t" + , " / \ + \</fc></fn> \ + \<fn=0><album></fn> \ + \<fn=0><fc=dodgerblue4><artist></fc> \ + \<fc=burlywood4><composer></fc> <date></fn>"] + + +config p = (Bottom.config [(Run mpd), (Run autoMPD)] p) { + template = "|kbd||default:Master| |default:Capture| \ + \|mpd| |autompd| {} |mbox| \ + \|EGPH| \ + \|diskio| |disku| · |bright| · |coretemp| \ + \|memory| · |uptime| |b0| " + , additionalFonts = ["xft:Hack-7"] + , textOffsets = [17] + } + +main :: IO () +main = palette >>= xmobar . config diff --git a/src/Mpris.hs b/src/Mpris.hs new file mode 100644 index 0000000..09c155d --- /dev/null +++ b/src/Mpris.hs @@ -0,0 +1,20 @@ +import Xmobar +import Config (palette) +import qualified Bottom (config) + +mpris = + Mpris2 "spotify" -- "clementine" -- + ["-t", " <tracknumber>\ + \ <title> <fc=sienna4><artist></fc>\ + \ <album> <length>" + , "-T", "180", "-E", "...", "-M", "100", "-x", ""] 10 + +config p = (Bottom.config [Run mpris] p) { + template = "|kbd||default:Master| |default:Capture| \ + \|mpris2| {} |mbox| \ + \|EGPH| \ + \|diskio| |disku| · |bright| · |coretemp| \ + \|memory| · |uptime| |b0| " + } +main :: IO () +main = palette >>= xmobar . config diff --git a/src/Top.hs b/src/Top.hs new file mode 100644 index 0000000..c14b56a --- /dev/null +++ b/src/Top.hs @@ -0,0 +1,46 @@ +import Xmobar +import Config + +topProc p = TopProc (p <~> ["-t" , "<mboth3> <mboth2> <mboth1> \ + \· <both3> <both2> <both1>" + , "-w", "10", "-L" , "10", "-H", "80"]) 15 + +wireless p = Wireless "wlan0" (p <~> ["-t" , "<essid> <quality>" + , "-W", "5", "-M", "15" , "-m", "2" + , "-L", "20", "-H", "80"]) 20 + +multiCPU p = MultiCpu (p <~> ["-t", "<autototal>" + , "-S", "on", "-b", " ", "-f", "*" + , "-c", " " , "-L", "30", "-H", "70" + , "-p", "3", "-a", "l"]) 10 + +cpuFreq p = CpuFreq (p <~> ["-t" , "<cpu0> <cpu1> <cpu2> <cpu3>" + , "-L", "1", "-H", "2", "-S", "Off" , "-d", "2"]) 50 + +dynNetwork p = DynNetwork (p <~> ["-t", "↑ <tx> ↓ <rx>" + , "-L", "20", "-H", "1024000" + , "-m", "5", "-W", "10", "-S", "Off"]) 10 + +network p = Network "tun0" ["-t", "<dev>:", "-x", ""] 20 + +config p = (baseConfig p) { + position = Static {xpos=1, ypos=1, width=1920, height=24} + , textOffset = 16 + , commands = [ Run (topProc p) + , Run (wireless p) + , Run (multiCPU p) + , Run (cpuFreq p) + , Run (dynNetwork p) + , Run (network p) + , Run XMonadLog + , Run (DateZone "%H" "en_US" "US/Pacific" "laTime" 10) + , Run (Date "%R" "datetime" 10) + ] + , template = " |top| {|XMonadLog|}\ + \ |cpufreq| |multicpu| |dynnetwork|\ + \ <action=`wicd-client -n`>|tun0||wlan0wi|</action>\ + \ |datetime| |laTime| " +} + +main :: IO () +main = palette >>= xmobar . config diff --git a/src/lib/Bottom.hs b/src/lib/Bottom.hs new file mode 100644 index 0000000..1c70548 --- /dev/null +++ b/src/lib/Bottom.hs @@ -0,0 +1,83 @@ +module Bottom (config) where + +import Xmobar +import Config + +uptime p = Uptime (p <~> [ "-t" , "<days> <hours>", "-m", "3", "-c", "0", "-S" + , "On" , "-L", "10", "-H", "100"]) 600 + +weather st = + Weather st ["-t", "<tempC>° <rh>% <windKmh> <skyCondition> (<hour>)" + , "-L","10", "-H", "25", "--normal", "black", + "--high", "lightgoldenrod4", "--low", "darkseagreen4"] 18000 + +batt p = + BatteryN ["BAT0"] + ((p <~> ["-t", "<left>%<acstatus>" + , "-S", "Off", "-d", "0", "-m", "3" + , "-L", "10", "-H", "80", "-p", "3"]) + ++ [ "--" + , "-i", "", "-O", " <timeleft> <watts>" + , "-o", " <timeleft> <watts>" + , "-H", "16", "-L", "10" + , "-h", "sienna4", "-l", "gray20"]) 50 "b0" + +coreTemp p = + CoreTemp (p <~> ["-t", "<core1>° <core2>°" + , "-L", "50", "-H", "75", "-d", "0"]) 50 + +diskU p = + DiskU [("dm-1", "<used>") , ("/media/sdb", " s <used>")] + (p <~> ["-L", "20", "-H", "70", "-m", "1", "-p", "3"]) + 20 + +diskIO p = + DiskIO [("dm-1", "↑ <read> ↓ <write>")] + (p <~> ["-L", "20", "-H", "5000", "-m", "5", "-p", "3"]) 10 + +mbox = MBox [ ("I", "inbox", "darkseagreen4") + , ("B", "bigml.spool", "sienna4") + , ("S", "bigsup.spool", "sienna4") + , ("b", "bugml.spool", "sienna4") + , ("G", "geiser.spool", "darkseagreen4") + , ("X", "xmobar.spool", "darkseagreen4") + , ("g", "gnu.spool", "") + , ("k", "books.spool", "") + , ("h", "hacking.spool", "") + , ("c", "computers.spool", "") + , ("w", "words.spool", "") + , ("t", "think.spool", "") + ] ["-d", "/home/jao/var/mail", "-p", " ", "-s", ""] "mbox" + + +masterVol = + Volume "default" "Master" + ["-t", "<status> <volume>" + , "--", "-C", "black", "-c", "sienna4", "-O", "" + , "-o", "×"] 10 + +captureVol = Volume "default" "Capture" ["-t", "<volume>"] 10 + +kbd = Kbd [("us", ""), ("us(intl)", "*")] + +brightness = Brightness ["--", "-D", "intel_backlight"] 10 + +memory = Memory ["-t","<available> M", "-p", "2"] 20 + +config cs p = (baseConfig p) { + position = BottomSize C 100 24 + , textOffset = 17 + , commands = [ Run (uptime p) + , Run brightness + , Run (weather "EGPH") -- LEGE, LEBL, KCV0 + , Run memory + , Run (batt p) + , Run (coreTemp p) + , Run (diskU p) + , Run (diskIO p) + , Run mbox + , Run masterVol + , Run captureVol + , Run kbd + ] ++ cs +} diff --git a/src/lib/Config.hs b/src/lib/Config.hs new file mode 100644 index 0000000..94b9211 --- /dev/null +++ b/src/lib/Config.hs @@ -0,0 +1,71 @@ +module Config (Palette, baseConfig, palette, (<~>)) where + +import System.Environment (lookupEnv) + +import Xmobar + +data Palette = Palette { pNormal :: String + , pLow :: String + , pHigh :: String + , pFont :: String + , pBorder :: String + , pForeground :: String + , pBackground :: String + , pAlpha :: Int + } + +lightTheme :: IO Bool +lightTheme = fmap (== (Just "light")) (lookupEnv "JAO_COLOR_SCHEME") + +lightPalette :: Palette +lightPalette = Palette { pNormal = "black" + , pLow = "#4d4d4d" + , pHigh = "#a0522d" + , pFont = "xft:Source Code Pro Medium-9" + , pBorder = "grey70" + , pForeground = "#000000" + , pBackground = "white" + , pAlpha = 0 + } + +darkPalette :: Palette +darkPalette = Palette { pNormal = "black" + , pLow = "#4d4d4d" + , pHigh = "#a0522d" + , pFont = "xft:NotoMono-9,xft:Inconsolata-11" + , pBorder = "black" + , pForeground = "grey50" + , pBackground = "black" + , pAlpha = 102 + } + +palette :: IO Palette +palette = do + light <- lightTheme + if light then return lightPalette else return darkPalette + +baseConfig :: Palette -> Config +baseConfig p = defaultConfig { + font = pFont p + , borderColor = pBorder p + , fgColor = (pForeground p) + , bgColor = (pBackground p) + , border = FullBM 1 + , alpha = (pAlpha p) + , additionalFonts = [] + , overrideRedirect = True + , lowerOnStart = True + , allDesktops = True + , hideOnStart = False + , persistent = True + , sepChar = "|" + , alignSep = "{}" + } + +(<~>) :: Palette -> [String] -> [String] +(<~>) p args = concat [ args + , [ "--low", (pLow p) + , "--normal", (pNormal p) + , "--high", (pHigh p) + ] + ] -- cgit v1.2.3