Виждал съм няколко донякъде подобни проблема във форумите на Arch, но не можах да намеря решение за това.
Така че изпълнявам XMonad 0.1 в XFCE4 на Fedora 17 x64 и също имам инсталиран xmonad-contrib. Ето моя файл xmonad.hs:
import System.Posix.Env (getEnv)
import Data.Maybe (maybe)
import Control.Monad
import XMonad.Hooks.SetWMName
import qualified XMonad.StackSet as W
import XMonad.Util.EZConfig
import XMonad
import XMonad.Config.Desktop
import XMonad.Config.Gnome
import XMonad.Config.Kde
import XMonad.Config.Xfce
main = do
session <- getEnv "DESKTOP_SESSION"
xmonad $ xfceConfig --(maybe desktopConfig desktop session)
{
modMask = mod4Mask
, terminal = "gnome-terminal"
, logHook = takeTopFocus >> setWMName "LG3D"
}
`additionalKeys` [ ((mod4Mask, xK_p), spawn "dmenu_run")
,((mod4Mask, xK_v), spawn "gvim")
]
-----------------------------------------
------------Custom Keys------------------
-----------------------------------------
-----------------------------------------
------------Other horrible stuff---------
-----------------------------------------
desktop "gnome" = gnomeConfig
desktop "kde" = kde4Config
desktop "xfce" = xfceConfig
desktop "xmonad-gnome" = gnomeConfig
desktop _ = desktopConfig
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
Ще забележите, че в частта additionalKeys
имам 2 обвързвания. И двамата използват mod4Mask
, който също е моят ключ за модифициране по подразбиране. Второто обвързване, за gvim, работи перфектно. Проблемът е, че първото обвързване, за dmenu, просто не прави нищо. Странното е, че ако променя mod4Mask
(за dmenu) на mod1Mask
, тогава работи. Освен това dmenu работи добре, ако го стартирам от терминал.
РЕДАКТИРАНЕ: mod4Mask и P изглежда не създават / правят нищо.
Някакви идеи? Тази конфигурация ми изглежда добре, нямам представа защо не работи.