From f3ef72bbe33f508362c3a3a0c11d64bf0b609cf7 Mon Sep 17 00:00:00 2001 From: ndwarshuis Date: Sun, 15 Mar 2020 15:10:25 -0400 Subject: [PATCH] ADD xmobar screensaver plugin --- bin/xmobar.hs | 7 ++++++- lib/Xmobar/Screensaver.hs | 34 ++++++++++++++++++++++++++++++++++ my-xmonad.cabal | 3 +++ 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 lib/Xmobar/Screensaver.hs diff --git a/bin/xmobar.hs b/bin/xmobar.hs index 7cfbefa..2284e8a 100644 --- a/bin/xmobar.hs +++ b/bin/xmobar.hs @@ -1,3 +1,5 @@ +import Xmobar.Screensaver + import Xmobar import XMonad (getXMonadDir) @@ -23,7 +25,8 @@ myTemplate :: String myTemplate = concat [ "%UnsafeStdinReader%" , " }{ " - , "%wlp0s20f3wi%" + , "%screensaver%" + , sep, "%wlp0s20f3wi%" , sep, "%alsa:default:Master%" , sep, "%battery%" , sep, "%bright%" @@ -104,6 +107,8 @@ config confDir = defaultConfig { , Run $ Date "%Y-%m-%d %H:%M" "date" 10 + , Run $ Screensaver ("\xf108", fgColor0, fgColor1) 10 + , Run UnsafeStdinReader ] } diff --git a/lib/Xmobar/Screensaver.hs b/lib/Xmobar/Screensaver.hs new file mode 100644 index 0000000..97923ea --- /dev/null +++ b/lib/Xmobar/Screensaver.hs @@ -0,0 +1,34 @@ +module Xmobar.Screensaver where + +-- import Control.Monad + +import Graphics.X11.Xlib.Display +import Graphics.X11.XScreenSaver + +import Xmobar + +data Screensaver = Screensaver (String, String, String) Int + deriving (Read, Show) + +instance Exec Screensaver where + alias (Screensaver _ _) = "screensaver" + run (Screensaver opts _) = run' opts + rate (Screensaver _ r) = r + +-- TODO make this respond to events rather than polling +run' :: (String, String, String) -> IO String +run' (text, colorOn, colorOff) = do + dpy <- openDisplay "" + xssi <- xScreenSaverQueryInfo dpy + print "hi" + closeDisplay dpy + return $ case xssi of + Just x -> wrapColor text + $ case xssi_state x of + ScreenSaverDisabled -> colorOff + _ -> colorOn + Nothing -> "N/A" + where + -- TODO not DRY + wrapColor s c = "" ++ s ++ "" + diff --git a/my-xmonad.cabal b/my-xmonad.cabal index 6f9c793..0b584d9 100644 --- a/my-xmonad.cabal +++ b/my-xmonad.cabal @@ -7,8 +7,10 @@ library hs-source-dirs: lib exposed-modules: SendXMsg , ACPI + , Xmobar.Screensaver build-depends: base , X11 >= 1.9.1 + , xmobar ghc-options: -Wall -Werror -fno-warn-missing-signatures default-language: Haskell2010 @@ -31,6 +33,7 @@ executable xmobar build-depends: base , xmonad >= 0.13 , xmobar + , my-xmonad default-language: Haskell2010 ghc-options: -Wall -Werror -fno-warn-missing-signatures -threaded