diff options
Diffstat (limited to 'src/Xmobar/X11')
| -rw-r--r-- | src/Xmobar/X11/Actions.hs | 34 | ||||
| -rw-r--r-- | src/Xmobar/X11/Bitmap.hs | 2 | ||||
| -rw-r--r-- | src/Xmobar/X11/Draw.hs | 2 | ||||
| -rw-r--r-- | src/Xmobar/X11/Parsers.hs | 2 | 
4 files changed, 37 insertions, 3 deletions
| diff --git a/src/Xmobar/X11/Actions.hs b/src/Xmobar/X11/Actions.hs new file mode 100644 index 0000000..03e58ad --- /dev/null +++ b/src/Xmobar/X11/Actions.hs @@ -0,0 +1,34 @@ +----------------------------------------------------------------------------- +-- | +-- Module      :  Xmobar.Actions +-- Copyright   :  (c) Alexander Polakov +-- License     :  BSD-style (see LICENSE) +-- +-- Maintainer  :  Jose A. Ortega Ruiz <jao@gnu.org> +-- Stability   :  unstable +-- Portability :  unportable +-- +----------------------------------------------------------------------------- + +module Xmobar.X11.Actions (Action(..), runAction, stripActions) where + +import System.Process (system) +import Control.Monad (void) +import Text.Regex (Regex, subRegex, mkRegex, matchRegex) +import Graphics.X11.Types (Button) + +data Action = Spawn [Button] String +                deriving (Eq) + +runAction :: Action -> IO () +runAction (Spawn _ s) = void $ system (s ++ "&") + +stripActions :: String -> String +stripActions s = case matchRegex actionRegex s of +  Nothing -> s +  Just _  -> stripActions strippedOneLevel +  where +      strippedOneLevel = subRegex actionRegex s "[action=\\1\\2]\\3[/action]" + +actionRegex :: Regex +actionRegex = mkRegex "<action=`?([^>`]*)`?( +button=[12345]+)?>(.+)</action>" diff --git a/src/Xmobar/X11/Bitmap.hs b/src/Xmobar/X11/Bitmap.hs index c0dba14..e323606 100644 --- a/src/Xmobar/X11/Bitmap.hs +++ b/src/Xmobar/X11/Bitmap.hs @@ -25,7 +25,7 @@ import System.FilePath ((</>))  import System.Mem.Weak ( addFinalizer )  import Xmobar.X11.ColorCache  import Xmobar.X11.Parsers (Widget(..)) -import Xmobar.Actions (Action) +import Xmobar.X11.Actions (Action)  #ifdef XPM  import Xmobar.X11.XPMFile(readXPMFile) diff --git a/src/Xmobar/X11/Draw.hs b/src/Xmobar/X11/Draw.hs index d0c78a8..781ced8 100644 --- a/src/Xmobar/X11/Draw.hs +++ b/src/Xmobar/X11/Draw.hs @@ -29,8 +29,8 @@ import Data.Map hiding (foldr, map, filter)  import Graphics.X11.Xlib hiding (textExtents, textWidth)  import Graphics.X11.Xlib.Extras -import Xmobar.Actions (Action(..))  import qualified Xmobar.X11.Bitmap as B +import Xmobar.X11.Actions (Action(..))  import Xmobar.X11.Types  import Xmobar.X11.XUtil  import Xmobar.Config diff --git a/src/Xmobar/X11/Parsers.hs b/src/Xmobar/X11/Parsers.hs index 8c1abac..c76110d 100644 --- a/src/Xmobar/X11/Parsers.hs +++ b/src/Xmobar/X11/Parsers.hs @@ -17,7 +17,7 @@  module Xmobar.X11.Parsers (parseString, Widget(..)) where  import Xmobar.Config -import Xmobar.Actions +import Xmobar.X11.Actions  import Control.Monad (guard, mzero)  import Text.ParserCombinators.Parsec | 
