mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 11:30:22 -07:00
Merge branch 'antoniotrkdz/mate-main-menu'
This commit is contained in:
commit
7dbedb17d6
@ -151,6 +151,8 @@
|
|||||||
remains the same but there are now `mateLogout` and `mateShutdown` actions
|
remains the same but there are now `mateLogout` and `mateShutdown` actions
|
||||||
available.
|
available.
|
||||||
|
|
||||||
|
- Add mod-d keybinding to open the Mate main menu.
|
||||||
|
|
||||||
* `XMonad.Actions.DynamicProjects`
|
* `XMonad.Actions.DynamicProjects`
|
||||||
|
|
||||||
- The `changeProjectDirPrompt` function respects the `complCaseSensitivity` field
|
- The `changeProjectDirPrompt` function respects the `complCaseSensitivity` field
|
||||||
|
@ -20,6 +20,7 @@ module XMonad.Config.Mate (
|
|||||||
-- $usage
|
-- $usage
|
||||||
mateConfig,
|
mateConfig,
|
||||||
mateRun,
|
mateRun,
|
||||||
|
matePanel,
|
||||||
mateRegister,
|
mateRegister,
|
||||||
mateLogout,
|
mateLogout,
|
||||||
mateShutdown,
|
mateShutdown,
|
||||||
@ -29,6 +30,8 @@ module XMonad.Config.Mate (
|
|||||||
import XMonad
|
import XMonad
|
||||||
import XMonad.Config.Desktop
|
import XMonad.Config.Desktop
|
||||||
import XMonad.Util.Run (safeSpawn)
|
import XMonad.Util.Run (safeSpawn)
|
||||||
|
import XMonad.Util.Ungrab
|
||||||
|
import Data.Char (toUpper)
|
||||||
|
|
||||||
import qualified Data.Map as M
|
import qualified Data.Map as M
|
||||||
|
|
||||||
@ -51,19 +54,27 @@ mateConfig = desktopConfig
|
|||||||
|
|
||||||
mateKeys (XConfig {modMask = modm}) = M.fromList $
|
mateKeys (XConfig {modMask = modm}) = M.fromList $
|
||||||
[ ((modm, xK_p), mateRun)
|
[ ((modm, xK_p), mateRun)
|
||||||
|
, ((modm, xK_d), unGrab >> matePanel "MAIN_MENU")
|
||||||
, ((modm .|. shiftMask, xK_q), mateLogout) ]
|
, ((modm .|. shiftMask, xK_q), mateLogout) ]
|
||||||
|
|
||||||
-- | Launch the "Run Application" dialog. mate-panel must be running for this
|
-- | Launch the "Run Application" dialog. mate-panel must be running for this
|
||||||
-- to work.
|
-- to work. partial application for existing keybinding compatibility.
|
||||||
mateRun :: X ()
|
mateRun :: X ()
|
||||||
mateRun = withDisplay $ \dpy -> do
|
mateRun = matePanel "RUN_DIALOG"
|
||||||
|
|
||||||
|
-- | Launch a panel action. Either the "Run Application" dialog ("run_dialog" parameter,
|
||||||
|
-- see above) or the main menu ("main_menu" parameter). mate-panel must be running
|
||||||
|
-- for this to work.
|
||||||
|
matePanel :: String -> X ()
|
||||||
|
matePanel action = withDisplay $ \dpy -> do
|
||||||
|
let panel = "_MATE_PANEL_ACTION"
|
||||||
rw <- asks theRoot
|
rw <- asks theRoot
|
||||||
mate_panel <- getAtom "_MATE_PANEL_ACTION"
|
mate_panel <- getAtom panel
|
||||||
panel_run <- getAtom "_MATE_PANEL_ACTION_RUN_DIALOG"
|
panel_action <- getAtom (panel ++ "_" ++ map toUpper action)
|
||||||
|
|
||||||
io $ allocaXEvent $ \e -> do
|
io $ allocaXEvent $ \e -> do
|
||||||
setEventType e clientMessage
|
setEventType e clientMessage
|
||||||
setClientMessageEvent e rw mate_panel 32 panel_run 0
|
setClientMessageEvent e rw mate_panel 32 panel_action 0
|
||||||
sendEvent dpy rw False structureNotifyMask e
|
sendEvent dpy rw False structureNotifyMask e
|
||||||
sync dpy False
|
sync dpy False
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user