From 42c4e2f22f2c58b53d5c44b91e36358b5d94b009 Mon Sep 17 00:00:00 2001 From: ndwarshuis Date: Sun, 16 Feb 2020 01:01:24 -0500 Subject: [PATCH] ADD power prompt --- xmonad.hs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/xmonad.hs b/xmonad.hs index 5fd339d..e959d56 100644 --- a/xmonad.hs +++ b/xmonad.hs @@ -10,7 +10,7 @@ import System.Exit import System.IO import Data.List (sortBy) -import Data.Maybe (isJust) +import Data.Maybe (fromMaybe, isJust) import Data.Ord (comparing) import XMonad @@ -156,6 +156,23 @@ hotPromptTheme = myPromptTheme , position = Top } + +-- TODO is there a better way to get the prompt to say what I want? +data PowerPrompt = PowerPrompt + +instance XPrompt PowerPrompt where + showXPrompt PowerPrompt = "Select Option: " + +myPowerPrompt = mkXPrompt PowerPrompt conf comps + $ fromMaybe (return ()) + . (`lookup` commands) + where + comps = (mkComplFunFromList' (map fst commands)) + conf = hotPromptTheme + commands = + map (\cmd -> (cmd, spawn $ "systemctl " ++ cmd)) + [ "poweroff", "suspend", "reboot", "hibernate"] + -- osd -- getOffset :: X Int @@ -293,6 +310,7 @@ myKeys c = , ("M-M1-.", addName "backlight max" $ spawn "adj_backlight max") , ("M-", addName "restart xmonad" $ spawn "killall xmobar; xmonad --restart") , ("M-S-", addName "recompile xmonad" $ spawn "killall xmobar; xmonad --recompile && xmonad --restart") + , ("M-p", addName "power menu" myPowerPrompt) , ("M-", addName "quit xmonad" $ confirmPrompt hotPromptTheme "Quit XMonad?" $ io (exitWith ExitSuccess))