diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Xmobar/App/Config.hs | 1 | ||||
| -rw-r--r-- | src/Xmobar/App/Opts.hs | 4 | ||||
| -rw-r--r-- | src/Xmobar/Config/Parse.hs | 5 | ||||
| -rw-r--r-- | src/Xmobar/Config/Types.hs | 1 | ||||
| -rw-r--r-- | src/Xmobar/Draw/Cairo.hs | 1 | 
5 files changed, 10 insertions, 2 deletions
diff --git a/src/Xmobar/App/Config.hs b/src/Xmobar/App/Config.hs index a284973..5c2f362 100644 --- a/src/Xmobar/App/Config.hs +++ b/src/Xmobar/App/Config.hs @@ -67,6 +67,7 @@ defaultConfig =             , signal = SignalChan Nothing             , textOutput = False             , textOutputFormat = Plain +           , dpi = 96.0             }  -- | Return the path to the xmobar data directory.  This directory is diff --git a/src/Xmobar/App/Opts.hs b/src/Xmobar/App/Opts.hs index 3a6b4e7..bc01435 100644 --- a/src/Xmobar/App/Opts.hs +++ b/src/Xmobar/App/Opts.hs @@ -52,6 +52,7 @@ data Opts = Help            | Position String            | WmClass String            | WmName String +          | Dpi String         deriving (Show, Eq)  options :: [OptDescr Opts] @@ -95,6 +96,8 @@ options =        "On which X screen number to start"      , Option "p" ["position"] (ReqArg Position "position")        "Specify position of xmobar. Same syntax as in config file" +    , Option "D" ["dpi"] (ReqArg Dpi "dpi") +      "The DPI scaling factor. Default 96.0"      ]  getOpts :: [String] -> IO ([Opts], [String]) @@ -161,6 +164,7 @@ doOpts conf (o:oo) =                        Right x -> doOpts' (conf {commands = commands conf ++ x})                        Left e -> putStr (e ++ usage) >> exitWith (ExitFailure 1)      Position s -> readPosition s +    Dpi d -> doOpts' (conf {dpi = read d})    where readCom c str =            case readStr str of              [x] -> Right x diff --git a/src/Xmobar/Config/Parse.hs b/src/Xmobar/Config/Parse.hs index 23de4db..0b41267 100644 --- a/src/Xmobar/Config/Parse.hs +++ b/src/Xmobar/Config/Parse.hs @@ -72,7 +72,7 @@ parseConfig defaultConfig =                <|?> pAllDesktops <|?> pOverrideRedirect <|?> pPickBroadest                <|?> pLowerOnStart <|?> pPersistent <|?> pIconRoot                <|?> pCommands <|?> pSepChar <|?> pAlignSep <|?> pTemplate -              <|?> pVerbose <|?> pSignal +              <|?> pVerbose <|?> pSignal <|?> pDpi        fields    = [ "font", "additionalFonts", "bgColor", "fgColor"                    , "wmClass", "wmName", "sepChar" @@ -81,7 +81,7 @@ parseConfig defaultConfig =                    , "allDesktops", "overrideRedirect", "pickBroadest"                    , "hideOnStart", "lowerOnStart", "persistent", "iconRoot"                    , "alpha", "commands", "verbose", "signal", "textOutput" -                  , "textOutputFormat" +                  , "textOutputFormat", "dpi"                    ]        pTextOutput = readField textOutput "textOutput" @@ -112,6 +112,7 @@ parseConfig defaultConfig =        pIconRoot = readField iconRoot "iconRoot"        pAlpha = readField alpha "alpha"        pVerbose = readField verbose "verbose" +      pDpi = readField dpi "dpi"        pSignal = field signal "signal" $          fail "signal is meant for use with Xmobar as a library.\n It is not meant for use in the configuration file." diff --git a/src/Xmobar/Config/Types.hs b/src/Xmobar/Config/Types.hs index ea7b958..785b55b 100644 --- a/src/Xmobar/Config/Types.hs +++ b/src/Xmobar/Config/Types.hs @@ -85,6 +85,7 @@ data Config =             , template :: String     -- ^ The output template             , verbose :: Bool        -- ^ Emit additional debug messages             , signal :: SignalChan   -- ^ Channel to send signals to xmobar +           , dpi :: Double          -- ^ DPI scaling factor for fonts             } deriving (Read, Show)  -- | The position datatype diff --git a/src/Xmobar/Draw/Cairo.hs b/src/Xmobar/Draw/Cairo.hs index d9f7ced..dfcfd14 100644 --- a/src/Xmobar/Draw/Cairo.hs +++ b/src/Xmobar/Draw/Cairo.hs @@ -172,6 +172,7 @@ drawSegments dctx surf = do        conf = T.dcConfig dctx        sWidth = foldl (\a (_,_,w) -> a + w) 0    ctx <- Pango.cairoCreateContext Nothing +  Pango.cairoContextSetResolution ctx $ C.dpi conf    llyts <- mapM (withRenderinfo ctx dctx) left    rlyts <- mapM (withRenderinfo ctx dctx) right    clyts <- mapM (withRenderinfo ctx dctx) center  | 
