summaryrefslogtreecommitdiffhomepage
path: root/src/Xmobar/X11
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2018-11-25 22:24:17 +0000
committerjao <jao@gnu.org>2018-11-25 22:24:17 +0000
commitd1fa2bd306cf847311b3cf02e8f2de8bab8ee115 (patch)
tree06e1fed10e6a5d3e4aab5a0f9eddef4e2ab7f9df /src/Xmobar/X11
parentbc27a68eb346b5e73c530f0f9c3e62e56517e225 (diff)
downloadxmobar-d1fa2bd306cf847311b3cf02e8f2de8bab8ee115.tar.gz
xmobar-d1fa2bd306cf847311b3cf02e8f2de8bab8ee115.tar.bz2
Xmobar.X11.Actions
Diffstat (limited to 'src/Xmobar/X11')
-rw-r--r--src/Xmobar/X11/Actions.hs34
-rw-r--r--src/Xmobar/X11/Bitmap.hs2
-rw-r--r--src/Xmobar/X11/Draw.hs2
-rw-r--r--src/Xmobar/X11/Parsers.hs2
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