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的建议打字过程中关注的焦点。这就是为什么当这个窗口出现时我试图将鼠标移动到屏幕的上部。
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
类似的测序。
谢谢,会试试看。我看到'liftX',但没有设法通过'UpdatePointer'正确使用它。 – Dmitriusan
@Dmitriusan随意打开一个新问题,提供您尝试的细节以及出错的细节。 –
看起来像您建议编译的代码,但是当触发管理钩时,'放弃UpperLeft'不会被执行(游标不会移动)。你有什么想法可能是错误的,或者我应该开一个新的问题? – Dmitriusan