diff --git a/src/Hlockx.hs b/src/Hlockx.hs index 91f5bea..f25d647 100644 --- a/src/Hlockx.hs +++ b/src/Hlockx.hs @@ -8,6 +8,8 @@ import XUtils import Control.Monad (unless) +import Foreign.C.Types (CUInt) + import Graphics.X11.Types import Graphics.X11.Xlib import Graphics.X11.Xlib.Extras @@ -15,8 +17,8 @@ import Graphics.X11.Xlib.Extras import System.Environment -hlockx :: Bool -> IO () -hlockx slock = do +hlockx :: Bool -> CUInt -> IO () +hlockx slock timeout = do progName <- getProgName pw <- getPasswordHash @@ -33,7 +35,7 @@ hlockx slock = do -- check if DPMS was enabled before enabling it (standby, suspend, off, wasEnabled) <- getCurrentDPMSStatus dpy _ <- dPMSEnable dpy - _ <- dPMSSetTimeouts dpy 0 0 2 + _ <- dPMSSetTimeouts dpy 0 0 timeout if slock then eventLoop dpy pw processInputSLock diff --git a/src/Main.hs b/src/Main.hs index 968135b..e2bec08 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -8,19 +8,24 @@ import Hlockx import Paths_hlockx (version) import Data.Version (showVersion) +import Foreign.C.Types (CUInt) + import System.Environment import System.Exit import System.IO import System.Console.GetOpt -data Options = Options { optSLock :: Bool } +data Options = Options { optSLock :: Bool + , optTimeout :: CUInt } startOptions :: Options #ifdef DEF_SLOCK -startOptions = Options { optSLock = True } +startOptions = Options { optSLock = True #else -startOptions = Options { optSLock = False } +startOptions = Options { optSLock = False #endif + , optTimeout = 2 + } options :: [ OptDescr (Options -> IO Options) ] options = @@ -38,6 +43,10 @@ options = hPutStrLn stderr (usageInfo prg options) exitWith ExitSuccess)) "Show help" + , Option "t" ["timeout"] + (ReqArg + (\arg opt -> return opt { optTimeout = read arg }) "Seconds") + "Set DPMS timeout (default: 2s)" , Option "s" ["slock"] (NoArg (\opt -> return opt { optSLock = True })) @@ -62,4 +71,4 @@ main = do -- Parse options, getting a list of option actions let (actions, _, _) = getOpt RequireOrder options args opts <- foldl (>>=) (return startOptions) actions - hlockx (optSLock opts) + hlockx (optSLock opts) (optTimeout opts)