diff options
| -rw-r--r-- | readme.md | 1 | ||||
| -rw-r--r-- | src/Main.hs | 11 | 
2 files changed, 12 insertions, 0 deletions
| @@ -394,6 +394,7 @@ xmobar --help):        -A alpha      --alpha=alpha          The transparency: 0 is transparent, 255 (the default) is opaque        -o            --top                  Place xmobar at the top of the screen        -b            --bottom               Place xmobar at the bottom of the screen +      -p            --position=position    Specify position, same as in config file        -d            --dock                 Try to start xmobar as a dock        -a alignsep   --alignsep=alignsep    Separators for left, center and right text                                             alignment. Default: '}{' diff --git a/src/Main.hs b/src/Main.hs index 209eee1..0596600 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -38,6 +38,7 @@ import System.Environment  import System.FilePath ((</>))  import System.Posix.Files  import Control.Monad (unless, liftM) +import Text.Read (readMaybe)  import Signal (setupSignalHandler) @@ -133,6 +134,7 @@ data Opts = Help            | Template   String            | OnScr      String            | IconRoot   String +          | Position   String         deriving Show  options :: [OptDescr Opts] @@ -166,6 +168,8 @@ options =        "Add to the list of commands to be executed"      , Option "x" ["screen"] (ReqArg OnScr "screen")        "On which X screen number to start" +    , Option "p" ["position"] (ReqArg Position "position") +      "Specify position of xmobar. Same syntax as in config file"      ]  getOpts :: [String] -> IO ([Opts], [String]) @@ -219,6 +223,7 @@ doOpts conf (o:oo) =      AddCommand s -> case readCom 'C' s of                        Right x -> doOpts' (conf {commands = commands conf ++ x})                        Left e -> putStr (e ++ usage) >> exitWith (ExitFailure 1) +    Position s -> readPosition s    where readCom c str =            case readStr str of              [x] -> Right x @@ -226,3 +231,9 @@ doOpts conf (o:oo) =                          "specified with the -" ++ c:" option\n")          readStr str = [x | (x,t) <- reads str, ("","") <- lex t]          doOpts' opts = doOpts opts oo +        readPosition string =  +            case readMaybe string of +                Just x  -> doOpts' (conf { position = x }) +                Nothing -> do +                    putStrLn "Can't parse position option, ignoring" +                    doOpts' conf | 
