MATE는 GNOME2의 포크 일 뿐이므로, mateconftool-2 -s /desktop/mate/session/required_components/windowmanager xmonad --type string
명령을 사용하여 창 관리자를 다른 (즉, xmonad)로 교체 할 수 있습니다. 이것은 XMonad가 MATE에 로그인 할 때 시작된다는 의미에서 작동하지만 xmonad가 패널이나 뭔가를 타일링하려고하는 것처럼 보입니다. 패널 중 하나가 그대로 있으면 안되는 모든 공간이 채워지고 시스템은 완전히 사용할 수 없습니다 (재부팅 할 시간).Mate DE with Xmonad
내 xmonad.hs :
{-# LANGUAGE OverloadedStrings #-}
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.SetWMName
import Control.Monad
import qualified XMonad.StackSet as W
import XMonad.Util.EZConfig
import qualified XMonad.Actions.FlexibleResize as Flex
import XMonad.Hooks.EwmhDesktops
import XMonad.Config.Desktop
import XMonad.Hooks.ManageDocks
import XMonad.Layout.NoBorders
import XMonad.Layout.LayoutHints
import XMonad.Util.Run (safeSpawn)
import System.Environment (getEnvironment)
main = xmonad mateConfig
mateConfig = desktopConfig
{ logHook = spawn "wmname LG3D"
, manageHook = myManageHook <+> manageHook mateConfig
, workspaces = ["1", "2", "3", "4", "5", "="]
, modMask = mod4Mask
, terminal = "gnome-terminal"
, startupHook = takeTopFocus >> setWMName "LG3D"
, handleEventHook = fullscreenEventHook
--, layoutHook = layoutHints $ avoidStruts (noBorders Full) ||| Mirror (Tall (1 (3/100) (1/2)))
, layoutHook = avoidStruts ((noBorders Full) ||| Mirror (Tall 1 (3/100) (1/2)))
}
`additionalKeys` [ ((mod4Mask, xK_d), spawn "dmenu_run -fn \"Ubuntu_Mono-13:Normal\" -nb black -nf skyblue -sb skyblue -sf black")
,((mod4Mask, xK_v), spawn "gvim")
,((mod4Mask, xK_x), spawn "gvim ~/.xmonad/xmonad.hs")
,((mod4Mask, xK_p), spawn "gnome-terminal")
-- ,((0 , xF86XK_AudioPlay), spawn "echo \"PLAY\" > ~/Desktop/hi")
]
`additionalMouseBindings` [ ((mod4Mask, button3), (\w -> focus w >> Flex.mouseResizeWindow w))
]
myManageHook = composeAll
[ className =? "Amarok" --> doShift "="
, manageDocks
]
{--- DBus Stuff-}
-- | 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>=2.26: to start xmonad with a command as such:
--
-- > mateconftool-2 -s /desktop/mate/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=string"
,"--dest=org.mate.SessionManager"
,"/org/mate/SessionManager"
,"org.mate.SessionManager.RegisterClient"
,"string:xmonad"
,"string:"++sessionId]
atom_WM_TAKE_FOCUS ::
X Atom
atom_WM_TAKE_FOCUS =
getAtom "WM_TAKE_FOCUS"
takeFocusX ::
Window
-> X()
takeFocusX w =
withWindowSet . const $ do
dpy <- asks display
wmtakef <- atom_WM_TAKE_FOCUS
wmprot <- atom_WM_PROTOCOLS
protocols <- io $ getWMProtocols dpy w
when (wmtakef `elem` protocols) $
io . allocaXEvent $ \ev -> do
setEventType ev clientMessage
setClientMessageEvent ev w wmprot 32 wmtakef currentTime
sendEvent dpy w False noEventMask ev
takeTopFocus ::
X()
takeTopFocus =
withWindowSet $ maybe (setFocusX =<< asks theRoot) takeFocusX . W.peek
내 유일한 가설은 xmonad 제대로 패널을 무시되지 않는 것입니다.
나는 12.04
편집에서 업그레이드 우분투 64 12.10을 사용하고 있습니다 : 나는 xmonad.hs에 manageHooks에 className =? "mate-panel" --> doIgnore
를 추가했습니다. 차이 없음.
고맙습니다! 타일링 창 관리자의 효율성으로 데스크탑 환경의 편안함! 이것은 대단하다! configs를 많이 고마워, 나는 어떤 haskell 몰라 그리고 좀 게으른 =) – Lesik2008