Sophie

Sophie

distrib > Fedora > 14 > i386 > by-pkgid > 97b7e04d4a67814e1160568251f09714 > files > 539

ghc-xmonad-contrib-devel-0.9.1-8.fc14.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--Rendered using the Haskell Html Library v0.2-->
<HTML
><HEAD
><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"
><TITLE
>XMonad.Util.Loggers</TITLE
><LINK HREF="haddock.css" REL="stylesheet" TYPE="text/css"
><SCRIPT SRC="haddock-util.js" TYPE="text/javascript"
></SCRIPT
><SCRIPT TYPE="text/javascript"
>window.onload = function () {setSynopsis("mini_XMonad-Util-Loggers.html")};</SCRIPT
></HEAD
><BODY
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="topbar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><IMG SRC="haskell_icon.gif" WIDTH="16" HEIGHT="16" ALT=" "
></TD
><TD CLASS="title"
>xmonad-contrib-0.9.1: Third party extensions for xmonad</TD
><TD CLASS="topbut"
><A HREF="src/XMonad-Util-Loggers.html"
>Source code</A
></TD
><TD CLASS="topbut"
><A HREF="index.html"
>Contents</A
></TD
><TD CLASS="topbut"
><A HREF="doc-index.html"
>Index</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="modulebar"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD
><FONT SIZE="6"
>XMonad.Util.Loggers</FONT
></TD
><TD ALIGN="right"
><TABLE CLASS="narrow" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="infohead"
>Portability</TD
><TD CLASS="infoval"
>unportable</TD
></TR
><TR
><TD CLASS="infohead"
>Stability</TD
><TD CLASS="infoval"
>unstable</TD
></TR
><TR
><TD CLASS="infohead"
>Maintainer</TD
><TD CLASS="infoval"
>&lt;byorgey@gmail.com&gt;</TD
></TR
></TABLE
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="section4"
><B
>Contents</B
></TD
></TR
><TR
><TD
><DL
><DT
><A HREF="#1"
>Usage
</A
></DT
><DT
><A HREF="#2"
>System Loggers
</A
></DT
><DT
><A HREF="#3"
>XMonad Loggers
</A
></DT
><DT
><A HREF="#4"
>Formatting Utilities
</A
></DT
></DL
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Description</TD
></TR
><TR
><TD CLASS="doc"
>A collection of simple logger functions and formatting utilities
 which can be used in the <TT
><A HREF="XMonad-Hooks-DynamicLog.html#v%3AppExtras"
>ppExtras</A
></TT
> field of
 a pretty-printing status logger format. See <A HREF="XMonad-Hooks-DynamicLog.html"
>XMonad.Hooks.DynamicLog</A
>
 for more information.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
>Synopsis</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="decl"
><SPAN CLASS="keyword"
>type</SPAN
> <A HREF="#t%3ALogger"
>Logger</A
> = <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AX"
>X</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>)</TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AaumixVolume"
>aumixVolume</A
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Abattery"
>battery</A
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3Adate"
>date</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AloadAvg"
>loadAvg</A
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmaildirNew"
>maildirNew</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AFilePath"
>FilePath</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AmaildirUnread"
>maildirUnread</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AFilePath"
>FilePath</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AlogCmd"
>logCmd</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AlogFileCount"
>logFileCount</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AFilePath"
>FilePath</A
> -&gt; (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
>) -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AlogCurrent"
>logCurrent</A
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AlogLayout"
>logLayout</A
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AlogTitle"
>logTitle</A
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AonLogger"
>onLogger</A
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>) -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AwrapL"
>wrapL</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AfixedWidthL"
>fixedWidthL</A
> :: <A HREF="XMonad-Util-Font.html#t%3AAlign"
>Align</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AlogSp"
>logSp</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3ApadL"
>padL</A
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AshortenL"
>shortenL</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AdzenColorL"
>dzenColorL</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3AxmobarColorL"
>xmobarColorL</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
></TR
><TR
><TD CLASS="s8"
></TD
></TR
><TR
><TD CLASS="decl"
><A HREF="#v%3A%3C%24%3E"
>(&lt;$&gt;)</A
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AFunctor"
>Functor</A
> f =&gt; (a -&gt; b) -&gt; f a -&gt; f b</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="1"
><A NAME="1"
>Usage
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Use this module by importing it into your <TT
>~/.xmonad/xmonad.hs</TT
>:
</P
><PRE
> import XMonad.Util.Loggers
</PRE
><P
>Then, add one or more loggers to the
 <TT
><A HREF="XMonad-Hooks-DynamicLog.html#v%3AppExtras"
>ppExtras</A
></TT
> field of your
 XMonad.Hooks.DynamicLoc.PP, possibly with extra formatting .
 For example:
</P
><PRE
>   -- display load averages and a pithy quote along with xmonad status.
   , logHook = dynamicLogWithPP $ defaultPP {
                  ppExtras = [ padL loadAvg, logCmd &quot;fortune -n 40 -s&quot; ]
                }
   -- gives something like &quot; 3.27 3.52 3.26 Drive defensively.  Buy a tank.&quot;
</PRE
><P
>See the formatting section below for another example using
 a <TT
>where</TT
> block to define some formatted loggers for a top-level
 <TT
>myLogHook</TT
>.
</P
><P
>Loggers are named either for their function, as in <TT
><A HREF="XMonad-Util-Loggers.html#v%3Abattery"
>battery</A
></TT
>,
 <TT
><A HREF="XMonad-Util-Loggers.html#v%3AaumixVolume"
>aumixVolume</A
></TT
>, and <TT
><A HREF="XMonad-Util-Loggers.html#v%3AmaildirNew"
>maildirNew</A
></TT
>, or are prefixed with &quot;log&quot; when
 making use of other functions or by analogy with the pp* functions.
 For example, the logger version of <TT
><A HREF="XMonad-Hooks-DynamicLog.html#v%3AppTitle"
>ppTitle</A
></TT
>
 is <TT
><A HREF="XMonad-Util-Loggers.html#v%3AlogTitle"
>logTitle</A
></TT
>, and <TT
><A HREF="XMonad-Util-Loggers.html#v%3AlogFileCount"
>logFileCount</A
></TT
> loggerizes the result of file
 counting code.
</P
><P
>Formatting utility names are generally as short as possible and
 carry the suffix &quot;L&quot;. For example, the logger version of
 <TT
><A HREF="XMonad-Hooks-DynamicLog.html#v%3Ashorten"
>shorten</A
></TT
> is <TT
><A HREF="XMonad-Util-Loggers.html#v%3AshortenL"
>shortenL</A
></TT
>.
</P
><P
>Of course, there is nothing really special about these so-called
 &quot;loggers&quot;: they are just <TT
>X (Maybe String)</TT
> actions.  So you can
 use them anywhere you would use an <TT
>X (Maybe String)</TT
>, not just
 with DynamicLog.
</P
><P
>Additional loggers welcome!
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><SPAN CLASS="keyword"
>type</SPAN
> <A NAME="t:Logger"
><A NAME="t%3ALogger"
></A
></A
><B
>Logger</B
> = <A HREF="/usr/share/doc/ghc/html/libraries/xmonad-0.9.1/XMonad-Core.html#t%3AX"
>X</A
> (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Maybe.html#t%3AMaybe"
>Maybe</A
> <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>)</TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#Logger"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><TT
><A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TT
> is just a convenient synonym for <TT
>X (Maybe String)</TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="2"
><A NAME="2"
>System Loggers
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:aumixVolume"
><A NAME="v%3AaumixVolume"
></A
></A
><B
>aumixVolume</B
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#aumixVolume"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Get the current volume with <TT
>aumix</TT
>. <A HREF="http://jpj.net/~trevor/aumix.html"
>http://jpj.net/~trevor/aumix.html</A
>
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:battery"
><A NAME="v%3Abattery"
></A
></A
><B
>battery</B
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#battery"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Get the battery status (percent charge and charging/discharging
   status). This is an ugly hack and may not work for some people.
   At some point it would be nice to make this more general/have
   fewer dependencies (assumes <TT
>/usr/bin/acpi</TT
> and <TT
>sed</TT
> are installed.)
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:date"
><A NAME="v%3Adate"
></A
></A
><B
>date</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#date"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Get the current date and time, and format them via the
   given format string.  The format used is the same as that used
   by the C library function strftime; for example,
   <TT
>date &quot;%a %b %d&quot;</TT
> might display something like <TT
>Tue Feb 19</TT
>.
   For more information see something like
   <A HREF="http://www.cplusplus.com/reference/clibrary/ctime/strftime.html"
>http://www.cplusplus.com/reference/clibrary/ctime/strftime.html</A
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:loadAvg"
><A NAME="v%3AloadAvg"
></A
></A
><B
>loadAvg</B
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#loadAvg"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Get the load average.  This assumes that you have a
   utility called <TT
>/usr/bin/uptime</TT
> and that you have <TT
>sed</TT
>
   installed; these are fairly common on GNU/Linux systems but it
   would be nice to make this more general.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:maildirNew"
><A NAME="v%3AmaildirNew"
></A
></A
><B
>maildirNew</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AFilePath"
>FilePath</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#maildirNew"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Get a count of new mails in a maildir.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:maildirUnread"
><A NAME="v%3AmaildirUnread"
></A
></A
><B
>maildirUnread</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AFilePath"
>FilePath</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#maildirUnread"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Get a count of unread mails in a maildir. For maildir format
 details, to write loggers for other classes of mail, see
 <A HREF="http://cr.yp.to/proto/maildir.html"
>http://cr.yp.to/proto/maildir.html</A
> and <TT
><A HREF="XMonad-Util-Loggers.html#v%3AlogFileCount"
>logFileCount</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:logCmd"
><A NAME="v%3AlogCmd"
></A
></A
><B
>logCmd</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#logCmd"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Create a <TT
><A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TT
> from an arbitrary shell command.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:logFileCount"
><A NAME="v%3AlogFileCount"
></A
></A
><B
>logFileCount</B
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#logFileCount"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/System-IO.html#t%3AFilePath"
>FilePath</A
></TD
><TD CLASS="rdoc"
>directory in which to count files
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Bool.html#t%3ABool"
>Bool</A
></TD
><TD CLASS="rdoc"
>predicate to match if file should be counted
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
>Get a count of filtered files in a directory.
 See <TT
><A HREF="XMonad-Util-Loggers.html#v%3AmaildirUnread"
>maildirUnread</A
></TT
> and <TT
><A HREF="XMonad-Util-Loggers.html#v%3AmaildirNew"
>maildirNew</A
></TT
> source for usage examples.
</TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="3"
><A NAME="3"
>XMonad Loggers
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
>A very small sample of what you can log since you have access to X. For
 example you can loggerize the number of windows on each workspace, or
 titles on other workspaces, or the id of the previously focused workspace....
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:logCurrent"
><A NAME="v%3AlogCurrent"
></A
></A
><B
>logCurrent</B
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#logCurrent"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Get the name of the current workspace.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:logLayout"
><A NAME="v%3AlogLayout"
></A
></A
><B
>logLayout</B
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#logLayout"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Get the name of the current layout.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:logTitle"
><A NAME="v%3AlogTitle"
></A
></A
><B
>logTitle</B
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#logTitle"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Get the title (name) of the focused window.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="section1"
><A NAME="4"
><A NAME="4"
>Formatting Utilities
</A
></A
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Combine logger formatting functions to make your
 <TT
><A HREF="XMonad-Hooks-DynamicLog.html#v%3AppExtras"
>ppExtras</A
></TT
> more colorful and readable.
 (For convenience this module exports <TT
><A HREF="XMonad-Util-Loggers.html#v%3A%3C%24%3E"
>&lt;$&gt;</A
></TT
> to
 use instead of '.' or '$' in hard to read formatting lines.
 For example:
</P
><PRE
> myLogHook = dynamicLogWithPP defaultPP {
     -- skipped
     , ppExtras = [lLoad, lTitle, logSp 3, wrapL &quot;[&quot; &quot;]&quot; $ date &quot;%a %d %b&quot;]
     , ppOrder = \(ws,l,_,xs) -&gt; [l,ws] ++ xs
     }
   where
     -- lTitle = fixedWidthL AlignCenter &quot;.&quot; 99 . dzenColorL &quot;cornsilk3&quot; &quot;&quot; . padL . shortenL 80 $ logTitle
     -- or something like:
     lTitle = fixedWidthL AlignCenter &quot;.&quot; 99 &lt;$&gt; dzenColorL &quot;cornsilk3&quot; &quot;&quot; &lt;$&gt; padL . shortenL 80 $ logTitle

     lLoad = dzenColorL &quot;#6A5ACD&quot; &quot;&quot; . wrapL loadIcon &quot;   &quot; . padL $ loadAvg
     loadIcon = &quot; ^i(/home/me/.dzen/icons/load.xbm)&quot;
</PRE
><P
>Note: When applying <TT
><A HREF="XMonad-Util-Loggers.html#v%3AshortenL"
>shortenL</A
></TT
> or <TT
><A HREF="XMonad-Util-Loggers.html#v%3AfixedWidthL"
>fixedWidthL</A
></TT
> to logger strings
 containing colors or other formatting commands, apply the formatting
 <EM
>after</EM
> the length adjustment, or include &quot;invisible&quot; characters
 in the length specification, e.g. in the above '^fg(cornsilk3)' and
 '^fg()' yields 19 invisible and 80 visible characters.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:onLogger"
><A NAME="v%3AonLogger"
></A
></A
><B
>onLogger</B
> :: (<A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
>) -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#onLogger"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Use a string formatting function to edit a <TT
><A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TT
> string.
 For example, to create a tag function to prefix or label loggers,
 as in 'tag: output', use:
</P
><PRE
> tagL l = onLogger $ wrap (l ++ &quot;: &quot;) &quot;&quot;

    tagL &quot;bat&quot; battery
    tagL &quot;load&quot; loadAvg
</PRE
><P
>If you already have a (String -&gt; String) function you want to
 apply to a logger:
</P
><PRE
> revL = onLogger trim
</PRE
><P
>See formatting utility source code for more <TT
><A HREF="XMonad-Util-Loggers.html#v%3AonLogger"
>onLogger</A
></TT
> usage examples.
</P
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:wrapL"
><A NAME="v%3AwrapL"
></A
></A
><B
>wrapL</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#wrapL"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Wrap a logger's output in delimiters, unless it is <TT
>X (Nothing)</TT
>
 or <TT
>X (Just &quot;&quot;)</TT
>. Some examples:
</P
><PRE
>    wrapL &quot; | &quot; &quot; | &quot; (date &quot;%a %d %b&quot;) -- ' | Tue 19 Feb | '

    wrapL &quot;bat: &quot; &quot;&quot; battery            -- ' bat: battery_logger_output'
</PRE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:fixedWidthL"
><A NAME="v%3AfixedWidthL"
></A
></A
><B
>fixedWidthL</B
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#fixedWidthL"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="body"
><TABLE CLASS="vanilla" CELLSPACING="0" CELLPADDING="0"
><TR
><TD CLASS="arg"
>:: <A HREF="XMonad-Util-Font.html#t%3AAlign"
>Align</A
></TD
><TD CLASS="rdoc"
>AlignCenter, AlignRight, or AlignLeft
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
></TD
><TD CLASS="rdoc"
>String to cycle to pad missing logger output
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
></TD
><TD CLASS="rdoc"
>Fixed length to output (including invisible formatting characters)
</TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="arg"
>-&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="rdoc"
></TD
></TR
><TR
><TD CLASS="ndoc" COLSPAN="2"
><P
>Make a logger's output constant width by padding with the given string,
 <EM
>even if the logger is</EM
> <TT
>X (Nothing)</TT
> <EM
>or</EM
> <TT
>X (Just &quot;&quot;)</TT
>. Useful to
 reduce visual noise as a title logger shrinks and grows, to use a fixed
 width for a logger that sometimes becomes Nothing, or even to create
 fancy spacers or character based art effects.
</P
><P
>It fills missing logger output with a repeated character like &quot;.&quot;,
 &quot;:&quot; or pattern, like &quot; -.-&quot;. The cycling padding string is reversed on
 the left of the logger output. This is mainly useful with AlignCenter.
</P
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:logSp"
><A NAME="v%3AlogSp"
></A
></A
><B
>logSp</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#logSp"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Create a &quot;spacer&quot; logger, e.g. <TT
>logSp 3 -- loggerizes '   '</TT
>.
 For more complex &quot;spacers&quot;, use <TT
><A HREF="XMonad-Util-Loggers.html#v%3AfixedWidthL"
>fixedWidthL</A
></TT
> with <TT
>return Nothing</TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:padL"
><A NAME="v%3ApadL"
></A
></A
><B
>padL</B
> :: <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#padL"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Pad a logger's output with a leading and trailing space, unless it
 is <TT
>X (Nothing)</TT
> or <TT
>X (Just &quot;&quot;)</TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:shortenL"
><A NAME="v%3AshortenL"
></A
></A
><B
>shortenL</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Int.html#t%3AInt"
>Int</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#shortenL"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>Limit a logger's length, adding &quot;...&quot; if truncated.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:dzenColorL"
><A NAME="v%3AdzenColorL"
></A
></A
><B
>dzenColorL</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#dzenColorL"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Color a logger's output with dzen foreground and background colors.
</P
><PRE
>  dzenColorL &quot;green&quot; &quot;#2A4C3F&quot; battery
</PRE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:xmobarColorL"
><A NAME="v%3AxmobarColorL"
></A
></A
><B
>xmobarColorL</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Data-Char.html#t%3AString"
>String</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
> -&gt; <A HREF="XMonad-Util-Loggers.html#t%3ALogger"
>Logger</A
></TD
><TD CLASS="declbut"
><A HREF="src/XMonad-Util-Loggers.html#xmobarColorL"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
><P
>Color a logger's output with xmobar foreground and background colors.
</P
><PRE
>  xmobarColorL &quot;#6A5ACD&quot; &quot;gray6&quot; loadAverage
</PRE
></TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="topdecl"
><TABLE CLASS="declbar"
><TR
><TD CLASS="declname"
><A NAME="v:<$>"
><A NAME="v%3A%3C%24%3E"
></A
></A
><B
>(&lt;$&gt;)</B
> :: <A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#t%3AFunctor"
>Functor</A
> f =&gt; (a -&gt; b) -&gt; f a -&gt; f b</TD
><TD CLASS="declbut"
><A HREF="src/Data-Functor.html#%3C%24%3E"
>Source</A
></TD
></TR
></TABLE
></TD
></TR
><TR
><TD CLASS="doc"
>An infix synonym for <TT
><A HREF="/usr/share/doc/ghc/html/libraries/base-4.2.0.2/Control-Monad.html#v%3Afmap"
>fmap</A
></TT
>.
</TD
></TR
><TR
><TD CLASS="s15"
></TD
></TR
><TR
><TD CLASS="botbar"
>Produced by <A HREF="http://www.haskell.org/haddock/"
>Haddock</A
> version 2.6.1</TD
></TR
></TABLE
></BODY
></HTML
>