summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2018-11-25 23:43:41 +0000
committerjao <jao@gnu.org>2018-11-25 23:43:41 +0000
commit24c84e47177b6ebbe3df99db53220def6c0951ec (patch)
tree76ab584623118b7dde610c94639d44951cf83b6e /src
parent54cf675f1299a74466950be240a708a762335d5d (diff)
downloadxmobar-24c84e47177b6ebbe3df99db53220def6c0951ec.tar.gz
xmobar-24c84e47177b6ebbe3df99db53220def6c0951ec.tar.bz2
Xmobar.System.Utils, Xmobar.X11.Events
Diffstat (limited to 'src')
-rw-r--r--src/Xmobar/App/EventLoop.hs4
-rw-r--r--src/Xmobar/Plugins/BufferedPipeReader.hs2
-rw-r--r--src/Xmobar/Plugins/CommandReader.hs2
-rw-r--r--src/Xmobar/Plugins/DateZone.hs1
-rw-r--r--src/Xmobar/Plugins/EWMH.hs2
-rw-r--r--src/Xmobar/Plugins/Kbd.hs2
-rw-r--r--src/Xmobar/Plugins/Locks.hs2
-rw-r--r--src/Xmobar/Plugins/MBox.hs3
-rw-r--r--src/Xmobar/Plugins/Mail.hs3
-rw-r--r--src/Xmobar/Plugins/MarqueePipeReader.hs4
-rw-r--r--src/Xmobar/Plugins/Monitors/Common.hs2
-rw-r--r--src/Xmobar/Plugins/PipeReader.hs2
-rw-r--r--src/Xmobar/Plugins/StdinReader.hs4
-rw-r--r--src/Xmobar/Plugins/XMonadLog.hs2
-rw-r--r--src/Xmobar/Run/Commands.hs14
-rw-r--r--src/Xmobar/System/Utils.hs (renamed from src/Xmobar/Utils.hs)30
-rw-r--r--src/Xmobar/X11/Events.hs36
17 files changed, 67 insertions, 48 deletions
diff --git a/src/Xmobar/App/EventLoop.hs b/src/Xmobar/App/EventLoop.hs
index 8da617b..0d96578 100644
--- a/src/Xmobar/App/EventLoop.hs
+++ b/src/Xmobar/App/EventLoop.hs
@@ -36,18 +36,18 @@ import Data.Bits
import Data.Map hiding (foldr, map, filter)
import Data.Maybe (fromJust, isJust)
-import Xmobar.Utils
import Xmobar.System.Signal
import Xmobar.Config.Types
-import Xmobar.X11.Actions
import Xmobar.Run.Commands
import Xmobar.Run.Runnable
+import Xmobar.X11.Actions
import Xmobar.X11.Parsers
import Xmobar.X11.Window
import Xmobar.X11.Text
import Xmobar.X11.Draw
import Xmobar.X11.Bitmap as Bitmap
import Xmobar.X11.Types
+import Xmobar.X11.Events(nextEvent')
#ifdef XFT
import Graphics.X11.Xft
diff --git a/src/Xmobar/Plugins/BufferedPipeReader.hs b/src/Xmobar/Plugins/BufferedPipeReader.hs
index 65ecea2..ee02355 100644
--- a/src/Xmobar/Plugins/BufferedPipeReader.hs
+++ b/src/Xmobar/Plugins/BufferedPipeReader.hs
@@ -20,10 +20,10 @@ import Control.Concurrent.STM
import System.IO
import System.IO.Unsafe(unsafePerformIO)
-import Xmobar.Utils(hGetLineSafe)
import Xmobar.Run.Commands
import Xmobar.System.Signal
import Xmobar.System.Environment
+import Xmobar.System.Utils(hGetLineSafe)
data BufferedPipeReader = BufferedPipeReader String [(Int, Bool, String)]
deriving (Read, Show)
diff --git a/src/Xmobar/Plugins/CommandReader.hs b/src/Xmobar/Plugins/CommandReader.hs
index 69c8e0c..4e39d72 100644
--- a/src/Xmobar/Plugins/CommandReader.hs
+++ b/src/Xmobar/Plugins/CommandReader.hs
@@ -17,7 +17,7 @@ module Xmobar.Plugins.CommandReader(CommandReader(..)) where
import System.IO
import Xmobar.Run.Commands
-import Xmobar.Utils (hGetLineSafe)
+import Xmobar.System.Utils (hGetLineSafe)
import System.Process(runInteractiveCommand, getProcessExitCode)
data CommandReader = CommandReader String String
diff --git a/src/Xmobar/Plugins/DateZone.hs b/src/Xmobar/Plugins/DateZone.hs
index 7215713..c2e80da 100644
--- a/src/Xmobar/Plugins/DateZone.hs
+++ b/src/Xmobar/Plugins/DateZone.hs
@@ -23,7 +23,6 @@
module Xmobar.Plugins.DateZone (DateZone(..)) where
import Xmobar.Run.Commands
-import Xmobar.Utils(tenthSeconds)
#ifdef DATEZONE
import Control.Concurrent.STM
diff --git a/src/Xmobar/Plugins/EWMH.hs b/src/Xmobar/Plugins/EWMH.hs
index 4a443d6..5b68620 100644
--- a/src/Xmobar/Plugins/EWMH.hs
+++ b/src/Xmobar/Plugins/EWMH.hs
@@ -29,7 +29,7 @@ import Codec.Binary.UTF8.String as UTF8
#define UTF8
#endif
import Foreign.C (CChar, CLong)
-import Xmobar.Utils (nextEvent')
+import Xmobar.X11.Events (nextEvent')
import Data.List (intersperse, intercalate)
diff --git a/src/Xmobar/Plugins/Kbd.hs b/src/Xmobar/Plugins/Kbd.hs
index f4dad36..6654163 100644
--- a/src/Xmobar/Plugins/Kbd.hs
+++ b/src/Xmobar/Plugins/Kbd.hs
@@ -21,7 +21,7 @@ import Graphics.X11.Xlib
import Graphics.X11.Xlib.Extras
import Xmobar.Run.Commands
-import Xmobar.Utils (nextEvent')
+import Xmobar.X11.Events (nextEvent')
import Xmobar.System.Kbd
diff --git a/src/Xmobar/Plugins/Locks.hs b/src/Xmobar/Plugins/Locks.hs
index 19bce20..25d2946 100644
--- a/src/Xmobar/Plugins/Locks.hs
+++ b/src/Xmobar/Plugins/Locks.hs
@@ -21,7 +21,7 @@ import Control.Monad
import Graphics.X11.Xlib.Extras
import Xmobar.Run.Commands
import Xmobar.System.Kbd
-import Xmobar.Utils (nextEvent')
+import Xmobar.X11.Events (nextEvent')
data Locks = Locks
deriving (Read, Show)
diff --git a/src/Xmobar/Plugins/MBox.hs b/src/Xmobar/Plugins/MBox.hs
index 4bd0ebd..7eaa998 100644
--- a/src/Xmobar/Plugins/MBox.hs
+++ b/src/Xmobar/Plugins/MBox.hs
@@ -18,7 +18,8 @@ module Xmobar.Plugins.MBox (MBox(..)) where
import Prelude
import Xmobar.Run.Commands
#ifdef INOTIFY
-import Xmobar.Utils (changeLoop, expandHome)
+
+import Xmobar.System.Utils (changeLoop, expandHome)
import Control.Monad (when)
import Control.Concurrent.STM
diff --git a/src/Xmobar/Plugins/Mail.hs b/src/Xmobar/Plugins/Mail.hs
index d59e70d..e67817b 100644
--- a/src/Xmobar/Plugins/Mail.hs
+++ b/src/Xmobar/Plugins/Mail.hs
@@ -17,7 +17,8 @@ module Xmobar.Plugins.Mail(Mail(..)) where
import Xmobar.Run.Commands
#ifdef INOTIFY
-import Xmobar.Utils (expandHome, changeLoop)
+
+import Xmobar.System.Utils (expandHome, changeLoop)
import Control.Monad
import Control.Concurrent.STM
diff --git a/src/Xmobar/Plugins/MarqueePipeReader.hs b/src/Xmobar/Plugins/MarqueePipeReader.hs
index a48e81c..a139aba 100644
--- a/src/Xmobar/Plugins/MarqueePipeReader.hs
+++ b/src/Xmobar/Plugins/MarqueePipeReader.hs
@@ -16,8 +16,8 @@ module Xmobar.Plugins.MarqueePipeReader where
import System.IO (openFile, IOMode(ReadWriteMode), Handle)
import Xmobar.System.Environment
-import Xmobar.Utils(tenthSeconds, hGetLineSafe)
-import Xmobar.Run.Commands(Exec(alias, start))
+import Xmobar.Run.Commands(Exec(alias, start), tenthSeconds)
+import Xmobar.System.Utils(hGetLineSafe)
import System.Posix.Files (getFileStatus, isNamedPipe)
import Control.Concurrent(forkIO, threadDelay)
import Control.Concurrent.STM (TChan, atomically, writeTChan, tryReadTChan, newTChan)
diff --git a/src/Xmobar/Plugins/Monitors/Common.hs b/src/Xmobar/Plugins/Monitors/Common.hs
index f683874..383a0f1 100644
--- a/src/Xmobar/Plugins/Monitors/Common.hs
+++ b/src/Xmobar/Plugins/Monitors/Common.hs
@@ -76,7 +76,7 @@ import Text.ParserCombinators.Parsec
import System.Console.GetOpt
import Control.Exception (SomeException,handle)
-import Xmobar.Utils
+import Xmobar.Run.Commands
-- $monitor
diff --git a/src/Xmobar/Plugins/PipeReader.hs b/src/Xmobar/Plugins/PipeReader.hs
index f18b9cb..d7b6a56 100644
--- a/src/Xmobar/Plugins/PipeReader.hs
+++ b/src/Xmobar/Plugins/PipeReader.hs
@@ -15,8 +15,8 @@
module Xmobar.Plugins.PipeReader(PipeReader(..)) where
import System.IO
-import Xmobar.Utils(hGetLineSafe)
import Xmobar.Run.Commands(Exec(..))
+import Xmobar.System.Utils(hGetLineSafe)
import Xmobar.System.Environment(expandEnv)
import System.Posix.Files
import Control.Concurrent(threadDelay)
diff --git a/src/Xmobar/Plugins/StdinReader.hs b/src/Xmobar/Plugins/StdinReader.hs
index 1d56ca8..7f5f2ae 100644
--- a/src/Xmobar/Plugins/StdinReader.hs
+++ b/src/Xmobar/Plugins/StdinReader.hs
@@ -23,9 +23,9 @@ import System.Posix.Process
import System.Exit
import System.IO
import Control.Exception (SomeException(..), handle)
-import Xmobar.X11.Actions (stripActions)
-import Xmobar.Utils (hGetLineSafe)
import Xmobar.Run.Commands
+import Xmobar.X11.Actions (stripActions)
+import Xmobar.System.Utils (hGetLineSafe)
data StdinReader = StdinReader | UnsafeStdinReader
deriving (Read, Show)
diff --git a/src/Xmobar/Plugins/XMonadLog.hs b/src/Xmobar/Plugins/XMonadLog.hs
index 26b6162..8261980 100644
--- a/src/Xmobar/Plugins/XMonadLog.hs
+++ b/src/Xmobar/Plugins/XMonadLog.hs
@@ -27,7 +27,7 @@ import Codec.Binary.UTF8.String as UTF8
#define UTF8
#endif
import Foreign.C (CChar)
-import Xmobar.Utils (nextEvent')
+import Xmobar.X11.Events (nextEvent')
import Xmobar.X11.Actions (stripActions)
data XMonadLog = XMonadLog
diff --git a/src/Xmobar/Run/Commands.hs b/src/Xmobar/Run/Commands.hs
index 198edee..2aac344 100644
--- a/src/Xmobar/Run/Commands.hs
+++ b/src/Xmobar/Run/Commands.hs
@@ -17,7 +17,7 @@
--
-----------------------------------------------------------------------------
-module Xmobar.Run.Commands (Command (..), Exec (..)) where
+module Xmobar.Run.Commands (Command (..), Exec (..), tenthSeconds) where
import Prelude
import Control.Exception (handle, SomeException(..))
@@ -25,9 +25,19 @@ import Data.Char
import System.Process
import System.Exit
import System.IO (hClose)
+import Control.Concurrent
import Xmobar.System.Signal
-import Xmobar.Utils (hGetLineSafe, tenthSeconds)
+import Xmobar.System.Utils (hGetLineSafe)
+
+-- | Work around to the Int max bound: since threadDelay takes an Int, it
+-- is not possible to set a thread delay grater than about 45 minutes.
+-- With a little recursion we solve the problem.
+tenthSeconds :: Int -> IO ()
+tenthSeconds s | s >= x = do threadDelay (x * 100000)
+ tenthSeconds (s - x)
+ | otherwise = threadDelay (s * 100000)
+ where x = (maxBound :: Int) `div` 100000
class Show e => Exec e where
alias :: e -> String
diff --git a/src/Xmobar/Utils.hs b/src/Xmobar/System/Utils.hs
index a2da606..d4bdd78 100644
--- a/src/Xmobar/Utils.hs
+++ b/src/Xmobar/System/Utils.hs
@@ -17,22 +17,16 @@
------------------------------------------------------------------------------
-module Xmobar.Utils
- (expandHome, changeLoop, hGetLineSafe, nextEvent', tenthSeconds)
+module Xmobar.System.Utils (expandHome, changeLoop, hGetLineSafe)
where
import Control.Monad
-import Control.Concurrent
import Control.Concurrent.STM
-import System.Posix.Types (Fd(..))
import System.Environment
import System.FilePath
import System.IO
-import Graphics.X11.Xlib (
- Display(..), XEventPtr, nextEvent, pending, connectionNumber)
-
#if defined XFT || defined UTF8
import qualified System.IO as S (hGetLine)
#endif
@@ -58,25 +52,3 @@ changeLoop s f = atomically s >>= go
new <- s
guard (new /= old)
return new)
-
--- | A version of nextEvent that does not block in foreign calls.
-nextEvent' :: Display -> XEventPtr -> IO ()
-nextEvent' d p = do
- pend <- pending d
- if pend /= 0
- then nextEvent d p
- else do
- threadWaitRead (Fd fd)
- nextEvent' d p
- where
- fd = connectionNumber d
-
-
--- | Work around to the Int max bound: since threadDelay takes an Int, it
--- is not possible to set a thread delay grater than about 45 minutes.
--- With a little recursion we solve the problem.
-tenthSeconds :: Int -> IO ()
-tenthSeconds s | s >= x = do threadDelay (x * 100000)
- tenthSeconds (s - x)
- | otherwise = threadDelay (s * 100000)
- where x = (maxBound :: Int) `div` 100000
diff --git a/src/Xmobar/X11/Events.hs b/src/Xmobar/X11/Events.hs
new file mode 100644
index 0000000..4334f6b
--- /dev/null
+++ b/src/Xmobar/X11/Events.hs
@@ -0,0 +1,36 @@
+------------------------------------------------------------------------------
+-- |
+-- Module: Xmobar.X11.Events
+-- Copyright: (c) 2018 Jose Antonio Ortega Ruiz
+-- License: BSD3-style (see LICENSE)
+--
+-- Maintainer: jao@gnu.org
+-- Stability: unstable
+-- Portability: portable
+-- Created: Sun Nov 25, 2018 23:24
+--
+--
+-- Utilities or event handling
+--
+------------------------------------------------------------------------------
+
+
+module Xmobar.X11.Events(nextEvent') where
+
+import Control.Concurrent
+import System.Posix.Types (Fd(..))
+
+import Graphics.X11.Xlib (
+ Display(..), XEventPtr, nextEvent, pending, connectionNumber)
+
+-- | A version of nextEvent that does not block in foreign calls.
+nextEvent' :: Display -> XEventPtr -> IO ()
+nextEvent' d p = do
+ pend <- pending d
+ if pend /= 0
+ then nextEvent d p
+ else do
+ threadWaitRead (Fd fd)
+ nextEvent' d p
+ where
+ fd = connectionNumber d