繁体   English   中英

XMonad不会使用mod4Mask生成任何东西

[英]XMonad won't spawn anything with mod4Mask

我在Arch论坛上看到了一些类似的问题,但是我还没有找到解决方案。

所以我在Fedora 17 x64上运行XFCE4中的XMonad 0.1,我也安装了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 ,这也是我的默认mod键。 gvim的第二个绑定工作得很好。 问题是dmenu的第一个绑定什么都不做。 什么奇怪的是,如果我改变mod4Mask (用于dmenu)到mod1Mask然后它工作。 此外,如果我从终端运行它,dmenu工作正常。

编辑:mod4Mask和P似乎没有产生/做任何事情。

有任何想法吗? 这个配置对我来说似乎很好,我不知道它为什么不起作用。

我不知道出了什么问题,但我有一些调试建议。

  1. 我有过这样的情况,我认为我正在运行我当前的自定义xmonad.hs,但我确实在运行以前的版本或默认版本。 通过对xmonad.hs进行一些其他更改并验证它是否有效来对此进行排除。

  2. 尝试将mod4Mask p映射到其他东西,看看是否有效。

  3. 使用xev,按mod4Mask + p,并验证它确实生成了您期望的事件。 与mod4Mask + v比较,看看除了从p到v的变化之外是否存在任何差异。

  4. 确保你没有NumLock或Fn或类似的东西! (我想,NumLock会将你的p改为数字。)

你用的是哪种键盘? 我们? 英国? 别的什么?

XFCE将Mod4-p绑定到此文件中的某些内容

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

通过在该文件中搜索“Super”,我找到了两行<Super> -p。 一个似乎是“空”而另一个执行“xfce4-display-settings --minimal”来设置外部显示输出。

我将该文件中的两个更改都更改为使用o而不是p然后退出XFCE并重新登录。现在Mod4-p在XMonad中工作!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM