From 0522766f38c55288c8b58bc1e878ea63c04f3965 Mon Sep 17 00:00:00 2001 From: ndwarshuis Date: Wed, 24 Nov 2021 01:22:03 -0500 Subject: [PATCH] FIX disconnecting screensaver client --- lib/Xmobar/Plugins/Screensaver.hs | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/lib/Xmobar/Plugins/Screensaver.hs b/lib/Xmobar/Plugins/Screensaver.hs index 4c9bf10..2a679c3 100644 --- a/lib/Xmobar/Plugins/Screensaver.hs +++ b/lib/Xmobar/Plugins/Screensaver.hs @@ -1,5 +1,3 @@ -{-# LANGUAGE LambdaCase #-} - -------------------------------------------------------------------------------- -- | Screensaver plugin -- @@ -11,14 +9,11 @@ module Xmobar.Plugins.Screensaver , ssAlias ) where -import Control.Concurrent -import Control.Monad - import Xmobar -import XMonad.Hooks.DynamicLog (xmobarColor) -import XMonad.Internal.DBus.Control +import XMonad.Internal.DBus.Common import XMonad.Internal.DBus.Screensaver +import Xmobar.Plugins.Common newtype Screensaver = Screensaver (String, String, String) deriving (Read, Show) @@ -26,14 +21,11 @@ ssAlias :: String ssAlias = "screensaver" instance Exec Screensaver where - alias (Screensaver _) = ssAlias - start (Screensaver (text, colorOn, colorOff)) cb = do - withDBusClient_ False $ \c -> do - matchSignal (cb . fmtState) c - cb . fmtState =<< callQuery c - forever (threadDelay 5000000) - where - fmtState = \case - Just s -> xmobarColor (if s then colorOn else colorOff) "" text - Nothing -> "N/A" + alias (Screensaver _) = ssAlias + start (Screensaver (text, colorOn, colorOff)) cb = do + withDBusClientConnection_ False $ \c -> do + matchSignal (cb . fmtState) c + cb . fmtState =<< callQuery c + where + fmtState = maybe "N/A" $ chooseColor text colorOn colorOff