From 72c42e6b0a7093cb38a01b3680d1edd2313b7155 Mon Sep 17 00:00:00 2001 From: Spencer Janssen Date: Wed, 7 May 2008 03:11:27 +0000 Subject: [PATCH] Add a binding for Gnome's "Run Application" dialog --- XMonad/Config/Gnome.hs | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/XMonad/Config/Gnome.hs b/XMonad/Config/Gnome.hs index 5aa2f3e9..2b7105ec 100644 --- a/XMonad/Config/Gnome.hs +++ b/XMonad/Config/Gnome.hs @@ -14,12 +14,15 @@ module XMonad.Config.Gnome ( -- * Usage -- -- $usage - gnomeConfig + gnomeConfig, + gnomeRun ) where import XMonad import XMonad.Config.Desktop +import qualified Data.Map as M + -- $usage -- To use this module, start with the following @~\/.xmonad\/xmonad.hs@: -- @@ -29,4 +32,23 @@ import XMonad.Config.Desktop -- > main = xmonad gnomeConfig -- -gnomeConfig = desktopConfig { terminal = "gnome-terminal" } +gnomeConfig = desktopConfig + { terminal = "gnome-terminal" + , keys = \c -> gnomeKeys c `M.union` keys desktopConfig c } + +gnomeKeys (XConfig {modMask = modm}) = M.fromList $ + [ ((modm, xK_p), gnomeRun) ] + +-- | Launch the "Run Application" dialog. gnome-panel must be running for this +-- to work. +gnomeRun :: X () +gnomeRun = withDisplay $ \dpy -> do + rw <- asks theRoot + gnome_panel <- getAtom "_GNOME_PANEL_ACTION" + panel_run <- getAtom "_GNOME_PANEL_ACTION_RUN_DIALOG" + + io $ allocaXEvent $ \e -> do + setEventType e clientMessage + setClientMessageEvent e rw gnome_panel 32 panel_run 0 + sendEvent dpy rw False structureNotifyMask e + sync dpy False