mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 03:20:21 -07:00
config-mate
Initial support for the Mate desktop environment (http://mate-desktop.org). Based on existing Gnome 2 support, since Mate is a maintained fork of Gnome 2.
This commit is contained in:
parent
56c6b9fef5
commit
7d4a083906
85
XMonad/Config/Mate.hs
Normal file
85
XMonad/Config/Mate.hs
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
{-# OPTIONS_GHC -fno-warn-missing-signatures #-}
|
||||||
|
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
-- |
|
||||||
|
-- Module : XMonad.Config.Mate
|
||||||
|
-- Copyright : (c) Brandon S Allbery KF8NH, 2014
|
||||||
|
-- License : BSD
|
||||||
|
--
|
||||||
|
-- Maintainer : allbery.b@gmail.com
|
||||||
|
-- Stability : unstable
|
||||||
|
-- Portability : unportable
|
||||||
|
--
|
||||||
|
-- This module provides a config suitable for use with the MATE desktop
|
||||||
|
-- environment.
|
||||||
|
--
|
||||||
|
-----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
module XMonad.Config.Mate (
|
||||||
|
-- * Usage
|
||||||
|
-- $usage
|
||||||
|
mateConfig,
|
||||||
|
mateRun,
|
||||||
|
mateRegister
|
||||||
|
) where
|
||||||
|
|
||||||
|
import XMonad
|
||||||
|
import XMonad.Config.Desktop
|
||||||
|
import XMonad.Util.Run (safeSpawn)
|
||||||
|
|
||||||
|
import qualified Data.Map as M
|
||||||
|
|
||||||
|
import System.Environment (getEnvironment)
|
||||||
|
|
||||||
|
-- $usage
|
||||||
|
-- To use this module, start with the following @~\/.xmonad\/xmonad.hs@:
|
||||||
|
--
|
||||||
|
-- > import XMonad
|
||||||
|
-- > import XMonad.Config.Mate
|
||||||
|
-- >
|
||||||
|
-- > main = xmonad gnomeConfig
|
||||||
|
--
|
||||||
|
-- For examples of how to further customize @gnomeConfig@ see "XMonad.Config.Desktop".
|
||||||
|
|
||||||
|
mateConfig = desktopConfig
|
||||||
|
{ terminal = "mate-terminal"
|
||||||
|
, keys = mateKeys <+> keys desktopConfig
|
||||||
|
, startupHook = mateRegister >> startupHook desktopConfig }
|
||||||
|
|
||||||
|
mateKeys (XConfig {modMask = modm}) = M.fromList $
|
||||||
|
[ ((modm, xK_p), mateRun)
|
||||||
|
, ((modm .|. shiftMask, xK_q), spawn "mate-session-save --logout-dialog") ]
|
||||||
|
|
||||||
|
-- | Launch the "Run Application" dialog. gnome-panel must be running for this
|
||||||
|
-- to work.
|
||||||
|
mateRun :: X ()
|
||||||
|
mateRun = withDisplay $ \dpy -> do
|
||||||
|
rw <- asks theRoot
|
||||||
|
mate_panel <- getAtom "_MATE_PANEL_ACTION"
|
||||||
|
panel_run <- getAtom "_MATE_PANEL_ACTION_RUN_DIALOG"
|
||||||
|
|
||||||
|
io $ allocaXEvent $ \e -> do
|
||||||
|
setEventType e clientMessage
|
||||||
|
setClientMessageEvent e rw mate_panel 32 panel_run 0
|
||||||
|
sendEvent dpy rw False structureNotifyMask e
|
||||||
|
sync dpy False
|
||||||
|
|
||||||
|
-- | Register xmonad with mate. 'dbus-send' must be in the $PATH with which
|
||||||
|
-- xmonad is started.
|
||||||
|
--
|
||||||
|
-- This action reduces a delay on startup only only if you have configured
|
||||||
|
-- mate-session to start xmonad with a command such as (check local
|
||||||
|
-- documentation):
|
||||||
|
--
|
||||||
|
-- > gconftool-2 -s /desktop/gnome/session/required_components/windowmanager xmonad --type string
|
||||||
|
mateRegister :: MonadIO m => m ()
|
||||||
|
mateRegister = io $ do
|
||||||
|
x <- lookup "DESKTOP_AUTOSTART_ID" `fmap` getEnvironment
|
||||||
|
whenJust x $ \sessionId -> safeSpawn "dbus-send"
|
||||||
|
["--session"
|
||||||
|
,"--print-reply=literal"
|
||||||
|
,"--dest=org.mate.SessionManager"
|
||||||
|
,"/org/mate/SessionManager"
|
||||||
|
,"org.mate.SessionManager.RegisterClient"
|
||||||
|
,"string:xmonad"
|
||||||
|
,"string:"++sessionId]
|
@ -151,6 +151,7 @@ library
|
|||||||
XMonad.Config.Droundy
|
XMonad.Config.Droundy
|
||||||
XMonad.Config.Gnome
|
XMonad.Config.Gnome
|
||||||
XMonad.Config.Kde
|
XMonad.Config.Kde
|
||||||
|
XMonad.Config.Mate
|
||||||
XMonad.Config.Sjanssen
|
XMonad.Config.Sjanssen
|
||||||
XMonad.Config.Xfce
|
XMonad.Config.Xfce
|
||||||
XMonad.Hooks.CurrentWorkspaceOnTop
|
XMonad.Hooks.CurrentWorkspaceOnTop
|
||||||
|
Loading…
x
Reference in New Issue
Block a user