Skip to content

Instantly share code, notes, and snippets.

@zigdon
Created September 24, 2012 16:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zigdon/3776991 to your computer and use it in GitHub Desktop.
Save zigdon/3776991 to your computer and use it in GitHub Desktop.
Get confirmation when quitting xmonad by keybinding
diff --git a/xmonad/xmonad.hs b/xmonad/xmonad.hs
index a763df4..8f690fc 100644
--- a/xmonad/xmonad.hs
+++ b/xmonad/xmonad.hs
@@ -2,12 +2,24 @@ import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers
-import XMonad.Util.Run(spawnPipe)
+import XMonad.Util.Dmenu
import XMonad.Util.EZConfig(additionalKeys)
+import XMonad.Util.Run(spawnPipe)
+
+import System.Exit
import System.IO
+
+import Control.Monad
import Graphics.X11.ExtraTypes.XF86
+
import qualified XMonad.StackSet as W
+quitWithWarning :: X()
+quitWithWarning = do
+ let m = "confirm quit"
+ s <- dmenu [m]
+ when (m == s) (io exitSuccess)
+
avoidMaster :: W.StackSet i l a s sd -> W.StackSet i l a s sd
avoidMaster = W.modify' $ \c -> case c of
W.Stack t [] (r:rs) -> W.Stack t [r] rs
@@ -28,6 +40,7 @@ main = do
[ ((mod4Mask .|. shiftMask, xK_z), spawn "/usr/bin/gnome-screensaver-command -l")
, ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")
, ((mod4Mask .|. shiftMask, xK_i), spawn "/usr/bin/fetchotp -x")
+ , ((mod4Mask .|. shiftMask, xK_q), quitWithWarning)
, ((mod4Mask, xK_c), spawn "/home/zigdon/bin/clip-to-chrome.sh")
, ((0, xF86XK_AudioLowerVolume), spawn "/usr/bin/amixer set Master 2dB-")
, ((0, xF86XK_AudioRaiseVolume), spawn "/usr/bin/amixer set Master 2dB+")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment