Copyright | (c) glasser@mit.edu |
---|---|
License | BSD |
Maintainer | glasser@mit.edu |
Stability | stable |
Portability | unportable |
Safe Haskell | None |
Language | Haskell98 |
Handy wrapper for dzen. Requires dzen >= 0.2.4.
- dzenConfig :: DzenConfig -> String -> X ()
- type DzenConfig = (Int, [String]) -> X (Int, [String])
- timeout :: Rational -> DzenConfig
- font :: String -> DzenConfig
- xScreen :: ScreenId -> DzenConfig
- vCenter :: Int -> ScreenId -> DzenConfig
- hCenter :: Int -> ScreenId -> DzenConfig
- center :: Int -> Int -> ScreenId -> DzenConfig
- onCurr :: (ScreenId -> DzenConfig) -> DzenConfig
- x :: Int -> DzenConfig
- y :: Int -> DzenConfig
- addArgs :: [String] -> DzenConfig
- dzen :: String -> Int -> X ()
- dzenScreen :: ScreenId -> String -> Int -> X ()
- dzenWithArgs :: String -> [String] -> Int -> X ()
- seconds :: Rational -> Int
- chomp :: String -> String
- (>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c
Flexible interface
dzenConfig :: DzenConfig -> String -> X () Source #
dzenConfig config s
will display the string s
according to the
configuration config
. For example, to display the string "foobar"
with
all the default settings, you can simply call
dzenConfig return "foobar"
Or, to set a longer timeout, you could use
dzenConfig (timeout 10) "foobar"
You can combine configurations with the (>=>) operator. To display
"foobar"
for 10 seconds on the first screen, you could use
dzenConfig (timeout 10 >=> xScreen 0) "foobar"
As a final example, you could adapt the above to display "foobar"
for
10 seconds on the current screen with
dzenConfig (timeout 10 >=> onCurr xScreen) "foobar"
timeout :: Rational -> DzenConfig Source #
Set the timeout, in seconds. This defaults to 3 seconds if not specified.
font :: String -> DzenConfig Source #
Specify the font. Check out xfontsel to get the format of the String right; if your dzen supports xft, then you can supply that here, too.
xScreen :: ScreenId -> DzenConfig Source #
Start dzen2 on a particular screen. Only works with versions of dzen that support the "-xs" argument.
vCenter :: Int -> ScreenId -> DzenConfig Source #
vCenter height sc
sets the configuration to have the dzen bar appear
on screen sc
with height height
, vertically centered with respect to
the actual size of that screen.
hCenter :: Int -> ScreenId -> DzenConfig Source #
hCenter width sc
sets the configuration to have the dzen bar appear
on screen sc
with width width
, horizontally centered with respect to
the actual size of that screen.
center :: Int -> Int -> ScreenId -> DzenConfig Source #
center width height sc
sets the configuration to have the dzen bar
appear on screen sc
with width width
and height height
, centered
both horizontally and vertically with respect to the actual size of that
screen.
onCurr :: (ScreenId -> DzenConfig) -> DzenConfig Source #
Take a screen-specific configuration and supply it with the screen ID of the currently focused screen, according to xmonad. For example, show a 100-pixel wide bar centered within the current screen, you could use
dzenConfig (onCurr (hCenter 100)) "foobar"
Of course, you can still combine these with (>=>); for example, to center
the string "foobar"
both horizontally and vertically in a 100x14 box
using the lovely Terminus font, you could use
terminus = "-*-terminus-*-*-*-*-12-*-*-*-*-*-*-*" dzenConfig (onCurr (center 100 14) >=> font terminus) "foobar"
x :: Int -> DzenConfig Source #
Put the top of the dzen bar at a particular pixel.
y :: Int -> DzenConfig Source #
Put the left of the dzen bar at a particular pixel.
addArgs :: [String] -> DzenConfig Source #
Add raw command-line arguments to the configuration. These will be passed on verbatim to dzen2. The default includes no arguments.
Legacy interface
dzen :: String -> Int -> X () Source #
dzen str timeout
pipes str
to dzen2 for timeout
microseconds.
Example usage:
dzen "Hi, mom!" (5 `seconds`)
dzenScreen :: ScreenId -> String -> Int -> X () Source #
dzenScreen sc str timeout
pipes str
to dzen2 for timeout
microseconds, and on screen sc
.
Requires dzen to be compiled with Xinerama support.
dzenWithArgs :: String -> [String] -> Int -> X () Source #
dzen str args timeout
pipes str
to dzen2 for timeout
seconds, passing args
to dzen.
Example usage:
dzenWithArgs "Hi, dons!" ["-ta", "r"] (5 `seconds`)
Miscellaneous
seconds :: Rational -> Int Source #
Multiplies by ONE MILLION, for functions that take microseconds.
Use like:
(5.5 `seconds`)
In GHC 7 and later, you must either enable the PostfixOperators extension (by adding
{-# LANGUAGE PostfixOperators #-}
to the top of your file) or use seconds in prefix form:
seconds 5.5