diff options
author | Jochen Keil <jochen.keil@gmail.com> | 2012-08-08 19:54:22 +0200 |
---|---|---|
committer | Jochen Keil <jochen.keil@gmail.com> | 2012-08-09 10:43:39 +0200 |
commit | 77ce9cbe7f8371aadf24713a6d700a436d983eaf (patch) | |
tree | 3a959d4785734a9e4c79b6cd846a571361e29c92 /src/Xmobar.hs | |
parent | a52c4a076807ae04db67894aebd741924ff9f926 (diff) | |
download | xmobar-77ce9cbe7f8371aadf24713a6d700a436d983eaf.tar.gz xmobar-77ce9cbe7f8371aadf24713a6d700a436d983eaf.tar.bz2 |
Move signal handler and data types to own module
This is necessary to make SignalType available for other modules without
import loops. This also decoupels the modules and their functionality a
bit more so this is generally a cleaner solution.
Diffstat (limited to 'src/Xmobar.hs')
-rw-r--r-- | src/Xmobar.hs | 25 |
1 files changed, 1 insertions, 24 deletions
diff --git a/src/Xmobar.hs b/src/Xmobar.hs index 0b744de..6c2965c 100644 --- a/src/Xmobar.hs +++ b/src/Xmobar.hs @@ -39,7 +39,7 @@ import Control.Arrow ((&&&)) import Control.Monad.Reader import Control.Concurrent import Control.Concurrent.STM -import Control.Exception hiding (handle) +import Control.Exception (catch, SomeException(..)) import Data.Bits import Config @@ -70,11 +70,6 @@ data XConf = runX :: XConf -> X () -> IO () runX xc f = runReaderT f xc -data WakeUp = WakeUp deriving (Show,Typeable) -instance Exception WakeUp - -data SignalType = Wakeup | Reposition | ChangeScreen - -- | Starts the main event loop and threads startLoop :: XConf -> [[(Maybe ThreadId, TVar String)]] -> IO () startLoop xcfg@(XConf _ _ w _ _) vs = do @@ -162,24 +157,6 @@ eventLoop tv xc@(XConf d _ w fs cfg) signal = do return (ocfg {position = OnScreen 1 o}) --- | Signal handling -setupSignalHandler :: IO (MVar SignalType) -setupSignalHandler = do - tid <- newEmptyMVar - installHandler sigUSR2 (Catch $ updatePosHandler tid) Nothing - installHandler sigUSR1 (Catch $ changeScreenHandler tid) Nothing - return tid - -updatePosHandler :: MVar SignalType -> IO () -updatePosHandler sig = do - putMVar sig Reposition - return () - -changeScreenHandler :: MVar SignalType -> IO () -changeScreenHandler sig = do - putMVar sig ChangeScreen - return () - -- $command -- | Runs a command as an independent thread and returns its thread id |