Xmonad - 如何将鼠标指针作为ManageHook的一部分移动?

问题描述:

鉴于此示例myManageHook。如何在doIgnore之后致电UpdatePointer?我所有的尝试都导致类型不兼容。Xmonad - 如何将鼠标指针作为ManageHook的一部分移动?

myManageHook = composeAll . concat $ 
    [ 
     -- IntelliJ idea Tweaks 
     -- Manage idea completion window 
     , [ appName =? "sun-awt-X11-XWindowPeer" <&&> className =? "jetbrains-idea" --> doIgnore ] 
     , [ (className ~=? "jetbrains-") <&&> (title ~=? "Changes in") --> unfloat ] 
    ] 
    where 
     unfloat = ask >>= doF . W.sink 

我的问题是,IntelliJ IDEA的弹出窗口失去,如果我的鼠标指针位于在Dropbox的建议打字过程中关注的焦点。这就是为什么当这个窗口出现时我试图将鼠标移动到屏幕的上部。

enter image description here

UPD找到了解决方法有关线程理念https://youtrack.jetbrains.com/issue/IDEA-112015#comment=27-2362253

您可以使用liftX打开一个X行动统一到一个Query行动。不过,您可能想使用XMonad.Actions.Warp而不是X.A.UpdatePointer。后者看起来可能会在管理钩子时显得过火。无论如何,一旦你看到如何解除X的行为,你应该可以自己尝试一下。

所以,banish,你可以使用liftX这样的:

... --> (liftX (banish UpperLeft) >> doIgnore) 

其他X动作可以解除与doIgnore类似的测序。

+0

谢谢,会试试看。我看到'liftX',但没有设法通过'UpdatePointer'正确使用它。 – Dmitriusan

+0

@Dmitriusan随意打开一个新问题,提供您尝试的细节以及出错的细节。 –

+0

看起来像您建议编译的代码,但是当触发管理钩时,'放弃UpperLeft'不会被执行(游标不会移动)。你有什么想法可能是错误的,或者我应该开一个新的问题? – Dmitriusan