Add a binding for Gnome's "Run Application" dialog

This commit is contained in:
Spencer Janssen
2008-05-07 03:11:27 +00:00
parent 2a2c33b37f
commit 72c42e6b0a

View File

@@ -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