2012-10-27 4 views
3

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를 추가했습니다. 차이 없음.

답변

0

아, 찾았습니다. 나는 mateConfig 섹션의 manageHook 부분에서 바보 같은 실수를 저질 렀습니다. manageHook = myManageHook <+> manageHook mateConfig 줄은 mateConfig를 참조하기 때문에 실제로 의미가 없습니다. mateConfig는 여전히이 줄에서 정의되고 있습니다. 실제로는 manageHook = myManageHook <+> manageHook desktopConfig이어야합니다. mateConfig는 desktopConfig 여야합니다.

또한 logHook, handleEventHook 등 ... <+> *Hook desktopConfig 부분이 누락되어 전체 항목이 손상됩니다.

1

저는 XMonad로 MATE를 실행하고 있습니다. 구성을 확인하십시오. 이 부분은 repo

+0

고맙습니다! 타일링 창 관리자의 효율성으로 데스크탑 환경의 편안함! 이것은 대단하다! configs를 많이 고마워, 나는 어떤 haskell 몰라 그리고 좀 게으른 =) – Lesik2008

관련 문제