summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--app/Configuration.hs70
-rw-r--r--app/Main.hs3
-rw-r--r--src/Xmobar.hs9
-rw-r--r--src/Xmobar/App/Defaults.hs71
-rw-r--r--src/Xmobar/App/EventLoop.hs2
-rw-r--r--src/Xmobar/App/Main.hs2
-rw-r--r--src/Xmobar/Config/Types.hs (renamed from src/Xmobar/Config.hs)59
-rw-r--r--src/Xmobar/X11/Draw.hs2
-rw-r--r--src/Xmobar/X11/Parsers.hs2
-rw-r--r--src/Xmobar/X11/Types.hs2
-rw-r--r--src/Xmobar/X11/Window.hs2
-rw-r--r--xmobar.cabal5
12 files changed, 125 insertions, 104 deletions
diff --git a/app/Configuration.hs b/app/Configuration.hs
index 1cf3ebf..6f6a0db 100644
--- a/app/Configuration.hs
+++ b/app/Configuration.hs
@@ -27,7 +27,7 @@ import Control.Monad.IO.Class (liftIO)
import System.Environment
import System.Posix.Files (fileExist)
-import qualified Xmobar.Config as C
+import qualified Xmobar as X
#if defined XFT || defined UTF8
import qualified System.IO as S (readFile,hGetLine)
@@ -50,7 +50,7 @@ stripComments =
-- | Parse the config, logging a list of fields that were missing and replaced
-- by the default definition.
-parseConfig :: String -> Either ParseError (C.Config,[String])
+parseConfig :: String -> Either ParseError (X.Config,[String])
parseConfig = runParser parseConf fields "Config" . stripComments
where
parseConf = do
@@ -61,7 +61,7 @@ parseConfig = runParser parseConf fields "Config" . stripComments
s <- getState
return (x,s)
- perms = permute $ C.Config
+ perms = permute $ X.Config
<$?> pFont <|?> pFontList <|?> pWmClass <|?> pWmName
<|?> pBgColor <|?> pFgColor
<|?> pPosition <|?> pTextOffset <|?> pTextOffsets
@@ -81,33 +81,33 @@ parseConfig = runParser parseConf fields "Config" . stripComments
, "alpha", "commands"
]
- pFont = strField C.font "font"
- pFontList = strListField C.additionalFonts "additionalFonts"
- pWmClass = strField C.wmClass "wmClass"
- pWmName = strField C.wmName "wmName"
- pBgColor = strField C.bgColor "bgColor"
- pFgColor = strField C.fgColor "fgColor"
- pBdColor = strField C.borderColor "borderColor"
- pSepChar = strField C.sepChar "sepChar"
- pAlignSep = strField C.alignSep "alignSep"
- pTemplate = strField C.template "template"
-
- pTextOffset = readField C.textOffset "textOffset"
- pTextOffsets = readIntList C.textOffsets "textOffsets"
- pIconOffset = readField C.iconOffset "iconOffset"
- pPosition = readField C.position "position"
- pHideOnStart = readField C.hideOnStart "hideOnStart"
- pLowerOnStart = readField C.lowerOnStart "lowerOnStart"
- pPersistent = readField C.persistent "persistent"
- pBorder = readField C.border "border"
- pBdWidth = readField C.borderWidth "borderWidth"
- pAllDesktops = readField C.allDesktops "allDesktops"
- pOverrideRedirect = readField C.overrideRedirect "overrideRedirect"
- pPickBroadest = readField C.pickBroadest "pickBroadest"
- pIconRoot = readField C.iconRoot "iconRoot"
- pAlpha = readField C.alpha "alpha"
-
- pCommands = field C.commands "commands" readCommands
+ pFont = strField X.font "font"
+ pFontList = strListField X.additionalFonts "additionalFonts"
+ pWmClass = strField X.wmClass "wmClass"
+ pWmName = strField X.wmName "wmName"
+ pBgColor = strField X.bgColor "bgColor"
+ pFgColor = strField X.fgColor "fgColor"
+ pBdColor = strField X.borderColor "borderColor"
+ pSepChar = strField X.sepChar "sepChar"
+ pAlignSep = strField X.alignSep "alignSep"
+ pTemplate = strField X.template "template"
+
+ pTextOffset = readField X.textOffset "textOffset"
+ pTextOffsets = readIntList X.textOffsets "textOffsets"
+ pIconOffset = readField X.iconOffset "iconOffset"
+ pPosition = readField X.position "position"
+ pHideOnStart = readField X.hideOnStart "hideOnStart"
+ pLowerOnStart = readField X.lowerOnStart "lowerOnStart"
+ pPersistent = readField X.persistent "persistent"
+ pBorder = readField X.border "border"
+ pBdWidth = readField X.borderWidth "borderWidth"
+ pAllDesktops = readField X.allDesktops "allDesktops"
+ pOverrideRedirect = readField X.overrideRedirect "overrideRedirect"
+ pPickBroadest = readField X.pickBroadest "pickBroadest"
+ pIconRoot = readField X.iconRoot "iconRoot"
+ pAlpha = readField X.alpha "alpha"
+
+ pCommands = field X.commands "commands" readCommands
staticPos = do string "Static"
wrapSkip (string "{")
@@ -148,7 +148,7 @@ parseConfig = runParser parseConf fields "Config" . stripComments
wrapSkip x = many space >> x >>= \r -> many space >> return r
sepEndSpc = mapM_ (wrapSkip . try . string)
fieldEnd = many $ space <|> oneOf ",}"
- field e n c = (,) (e C.defaultConfig) $
+ field e n c = (,) (e X.defaultConfig) $
updateState (filter (/= n)) >> sepEndSpc [n,"="] >>
wrapSkip c >>= \r -> fieldEnd >> return r
readField a n = field a n $ tillFieldEnd >>= read' n
@@ -173,7 +173,7 @@ commandsErr = "commands: this usually means that a command could not" ++
"\nwhich follows the offending one."
-- | Reads the configuration files or quits with an error
-readConfig :: FilePath -> String -> IO (C.Config,[String])
+readConfig :: FilePath -> String -> IO (X.Config,[String])
readConfig f usage = do
file <- liftIO $ fileExist f
s <- liftIO $ if file then readFileSafe f else error $
@@ -183,9 +183,9 @@ readConfig f usage = do
return $ parseConfig s
-- | Read default configuration file or load the default config
-readDefaultConfig :: String -> IO (C.Config,[String])
+readDefaultConfig :: String -> IO (X.Config,[String])
readDefaultConfig usage = do
- xdgConfigFile <- C.getXdgConfigFile
+ xdgConfigFile <- X.getXdgConfigFile
xdgConfigFileExists <- liftIO $ fileExist xdgConfigFile
home <- liftIO $ getEnv "HOME"
let defaultConfigFile = home ++ "/.xmobarrc"
@@ -194,4 +194,4 @@ readDefaultConfig usage = do
then readConfig xdgConfigFile usage
else if defaultConfigFileExists
then readConfig defaultConfigFile usage
- else return (C.defaultConfig,[])
+ else return (X.defaultConfig,[])
diff --git a/app/Main.hs b/app/Main.hs
index 0760d16..c37fb89 100644
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -24,8 +24,7 @@ import System.Environment (getArgs)
import Control.Monad (unless)
import Text.Read (readMaybe)
-import Xmobar (xmobar)
-import Xmobar.Config
+import Xmobar
import Paths_xmobar (version)
import Configuration (readConfig, readDefaultConfig)
diff --git a/src/Xmobar.hs b/src/Xmobar.hs
index 2b15835..dda56db 100644
--- a/src/Xmobar.hs
+++ b/src/Xmobar.hs
@@ -16,9 +16,11 @@
-----------------------------------------------------------------------------
module Xmobar (xmobar
+ , defaultConfig
+ , getXdgConfigFile
, Runnable (..)
, Exec (..)
- , module Xmobar.Config
+ , module Xmobar.Config.Types
, module Xmobar.Plugins.BufferedPipeReader
, module Xmobar.Plugins.CommandReader
, module Xmobar.Plugins.Date
@@ -40,7 +42,7 @@ module Xmobar (xmobar
import Xmobar.Run.Runnable
import Xmobar.Run.Commands
-import Xmobar.Config
+import Xmobar.Config.Types
import Xmobar.Plugins.BufferedPipeReader
import Xmobar.Plugins.CommandReader
import Xmobar.Plugins.Date
@@ -59,4 +61,5 @@ import Xmobar.Plugins.PipeReader
import Xmobar.Plugins.StdinReader
import Xmobar.Plugins.XMonadLog
-import Xmobar.App.Main (xmobar)
+import Xmobar.App.Main(xmobar)
+import Xmobar.App.Defaults(defaultConfig, getXdgConfigFile)
diff --git a/src/Xmobar/App/Defaults.hs b/src/Xmobar/App/Defaults.hs
new file mode 100644
index 0000000..ac3146c
--- /dev/null
+++ b/src/Xmobar/App/Defaults.hs
@@ -0,0 +1,71 @@
+------------------------------------------------------------------------------
+-- |
+-- Module: Xmobar.Config.Defaults
+-- Copyright: (c) 2018 Jose Antonio Ortega Ruiz
+-- License: BSD3-style (see LICENSE)
+--
+-- Maintainer: jao@gnu.org
+-- Stability: unstable
+-- Portability: portable
+-- Created: Sun Nov 25, 2018 22:26
+--
+--
+-- Default values for Xmobar configurations
+--
+------------------------------------------------------------------------------
+
+
+module Xmobar.App.Defaults (defaultConfig, getXdgConfigFile) where
+
+import System.Environment
+import System.Directory (getHomeDirectory)
+import System.FilePath ((</>))
+
+import Xmobar.Plugins.Date
+import Xmobar.Plugins.StdinReader
+import Xmobar.Config.Types
+import Xmobar.Run.Runnable
+
+-- | The default configuration values
+defaultConfig :: Config
+defaultConfig =
+ Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"
+ , additionalFonts = []
+ , wmClass = "xmobar"
+ , wmName = "xmobar"
+ , bgColor = "#000000"
+ , fgColor = "#BFBFBF"
+ , alpha = 255
+ , position = Top
+ , border = NoBorder
+ , borderColor = "#BFBFBF"
+ , borderWidth = 1
+ , textOffset = -1
+ , iconOffset = -1
+ , textOffsets = []
+ , hideOnStart = False
+ , lowerOnStart = True
+ , persistent = False
+ , allDesktops = True
+ , overrideRedirect = True
+ , pickBroadest = False
+ , iconRoot = "."
+ , commands = [ Run $ Date "%a %b %_d %Y * %H:%M:%S" "theDate" 10
+ , Run StdinReader]
+ , sepChar = "%"
+ , alignSep = "}{"
+ , template = "%StdinReader% }{ " ++
+ "<fc=#00FF00>%uname%</fc> * <fc=#FF0000>%theDate%</fc>"
+ }
+
+xdgConfigDir :: IO String
+xdgConfigDir = do env <- getEnvironment
+ case lookup "XDG_CONFIG_HOME" env of
+ Just val -> return val
+ Nothing -> fmap (</> ".config") getHomeDirectory
+
+xmobarConfigDir :: IO FilePath
+xmobarConfigDir = fmap (</> "xmobar") xdgConfigDir
+
+getXdgConfigFile :: IO FilePath
+getXdgConfigFile = fmap (</> "xmobarrc") xmobarConfigDir
diff --git a/src/Xmobar/App/EventLoop.hs b/src/Xmobar/App/EventLoop.hs
index 95ce129..c751511 100644
--- a/src/Xmobar/App/EventLoop.hs
+++ b/src/Xmobar/App/EventLoop.hs
@@ -36,9 +36,9 @@ import Data.Bits
import Data.Map hiding (foldr, map, filter)
import Data.Maybe (fromJust, isJust)
-import Xmobar.Config
import Xmobar.Utils
import Xmobar.System.Signal
+import Xmobar.Config.Types
import Xmobar.X11.Actions
import Xmobar.Run.Commands
import Xmobar.Run.Runnable
diff --git a/src/Xmobar/App/Main.hs b/src/Xmobar/App/Main.hs
index 329a4b5..b180e39 100644
--- a/src/Xmobar/App/Main.hs
+++ b/src/Xmobar/App/Main.hs
@@ -24,7 +24,7 @@ import Graphics.X11.Xlib
import Control.Concurrent.Async (Async, cancel)
import Control.Exception (bracket)
-import Xmobar.Config
+import Xmobar.Config.Types
import Xmobar.System.Signal (setupSignalHandler, withDeferSignals)
import Xmobar.Run.Template
import Xmobar.X11.Types
diff --git a/src/Xmobar/Config.hs b/src/Xmobar/Config/Types.hs
index a07af9e..ab85d5b 100644
--- a/src/Xmobar/Config.hs
+++ b/src/Xmobar/Config/Types.hs
@@ -8,30 +8,21 @@
-- Stability : unstable
-- Portability : unportable
--
--- The configuration module of Xmobar, a text based status bar
+-- The configuration types
--
-----------------------------------------------------------------------------
-module Xmobar.Config
+module Xmobar.Config.Types
( -- * Configuration
-- $config
Config (..)
, XPosition (..), Align (..), Border(..)
- , defaultConfig
- , getXdgConfigFile
) where
-import Xmobar.Plugins.Date
-import Xmobar.Plugins.StdinReader
-
-import System.Environment
-import System.Directory (getHomeDirectory)
-import System.FilePath ((</>))
-
import Xmobar.Run.Runnable (Runnable(..))
-- $config
--- Configuration data type and default configuration
+-- Configuration data type
-- | The configuration data type
data Config =
@@ -97,47 +88,3 @@ data Border = NoBorder
| BottomBM Int
| FullBM Int
deriving ( Read, Eq )
-
--- | The default configuration values
-defaultConfig :: Config
-defaultConfig =
- Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"
- , additionalFonts = []
- , wmClass = "xmobar"
- , wmName = "xmobar"
- , bgColor = "#000000"
- , fgColor = "#BFBFBF"
- , alpha = 255
- , position = Top
- , border = NoBorder
- , borderColor = "#BFBFBF"
- , borderWidth = 1
- , textOffset = -1
- , iconOffset = -1
- , textOffsets = []
- , hideOnStart = False
- , lowerOnStart = True
- , persistent = False
- , allDesktops = True
- , overrideRedirect = True
- , pickBroadest = False
- , iconRoot = "."
- , commands = [ Run $ Date "%a %b %_d %Y * %H:%M:%S" "theDate" 10
- , Run StdinReader]
- , sepChar = "%"
- , alignSep = "}{"
- , template = "%StdinReader% }{ " ++
- "<fc=#00FF00>%uname%</fc> * <fc=#FF0000>%theDate%</fc>"
- }
-
-xdgConfigDir :: IO String
-xdgConfigDir = do env <- getEnvironment
- case lookup "XDG_CONFIG_HOME" env of
- Just val -> return val
- Nothing -> fmap (</> ".config") getHomeDirectory
-
-xmobarConfigDir :: IO FilePath
-xmobarConfigDir = fmap (</> "xmobar") xdgConfigDir
-
-getXdgConfigFile :: IO FilePath
-getXdgConfigFile = fmap (</> "xmobarrc") xmobarConfigDir
diff --git a/src/Xmobar/X11/Draw.hs b/src/Xmobar/X11/Draw.hs
index 781ced8..246eb84 100644
--- a/src/Xmobar/X11/Draw.hs
+++ b/src/Xmobar/X11/Draw.hs
@@ -29,11 +29,11 @@ import Data.Map hiding (foldr, map, filter)
import Graphics.X11.Xlib hiding (textExtents, textWidth)
import Graphics.X11.Xlib.Extras
+import Xmobar.Config.Types
import qualified Xmobar.X11.Bitmap as B
import Xmobar.X11.Actions (Action(..))
import Xmobar.X11.Types
import Xmobar.X11.XUtil
-import Xmobar.Config
import Xmobar.X11.ColorCache
import Xmobar.X11.Window (drawBorder)
import Xmobar.X11.Parsers (Widget(..))
diff --git a/src/Xmobar/X11/Parsers.hs b/src/Xmobar/X11/Parsers.hs
index c76110d..258964a 100644
--- a/src/Xmobar/X11/Parsers.hs
+++ b/src/Xmobar/X11/Parsers.hs
@@ -16,7 +16,7 @@
module Xmobar.X11.Parsers (parseString, Widget(..)) where
-import Xmobar.Config
+import Xmobar.Config.Types
import Xmobar.X11.Actions
import Control.Monad (guard, mzero)
diff --git a/src/Xmobar/X11/Types.hs b/src/Xmobar/X11/Types.hs
index c5c7ade..f551c2a 100644
--- a/src/Xmobar/X11/Types.hs
+++ b/src/Xmobar/X11/Types.hs
@@ -23,7 +23,7 @@ import Data.Map
import Xmobar.X11.Bitmap
import Xmobar.X11.XUtil
-import Xmobar.Config
+import Xmobar.Config.Types
-- | The X type is a ReaderT
type X = ReaderT XConf IO
diff --git a/src/Xmobar/X11/Window.hs b/src/Xmobar/X11/Window.hs
index 78f4b26..23568ab 100644
--- a/src/Xmobar/X11/Window.hs
+++ b/src/Xmobar/X11/Window.hs
@@ -28,7 +28,7 @@ import Data.List (maximumBy)
import Data.Maybe (fromMaybe)
import System.Posix.Process (getProcessID)
-import Xmobar.Config
+import Xmobar.Config.Types
import Xmobar.X11.XUtil
-- $window
diff --git a/xmobar.cabal b/xmobar.cabal
index 69f8f4d..ea1bcdd 100644
--- a/xmobar.cabal
+++ b/xmobar.cabal
@@ -94,16 +94,17 @@ flag with_conduit
library
hs-source-dirs: src
- exposed-modules: Xmobar,
- Xmobar.Config
+ exposed-modules: Xmobar
other-modules: Xmobar.Utils,
+ Xmobar.Config.Types,
Xmobar.Run.Types,
Xmobar.Run.Template,
Xmobar.Run.Commands,
Xmobar.Run.Runnable
Xmobar.App.EventLoop,
Xmobar.App.Main,
+ Xmobar.App.Defaults,
Xmobar.System.StatFS,
Xmobar.System.Environment,
Xmobar.System.Localize,