Xmonad - 如何移动鼠标指针作为 ManageHook 的一部分?
Xmonad - How do I move mouse pointer as part of ManageHook?
给定此示例 myManageHook
。如何在 doIgnore
之后调用 UpdatePointer?我所有的尝试都导致类型不兼容。
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 弹出窗口 window 在键入时会失去焦点。这就是为什么当 window 出现时我试图将鼠标移动到屏幕的上部。
UPD 找到了包含 Idea 解决方法的相关线程 https://youtrack.jetbrains.com/issue/IDEA-112015#comment=27-2362253
您可以使用 liftX
将 X
动作变成 Query
动作。不过,您可能想使用 XMonad.Actions.Warp
而不是 X.A.UpdatePointer
;后者看起来可能有点太神奇了,无法在 manage hook 期间明智地开火。无论如何,一旦你看到如何提升 X
动作,你应该能够自己尝试一下。
因此,对于 banish
,您可以像这样使用 liftX
:
... --> (liftX (banish UpperLeft) >> doIgnore)
其他 X
动作可以用 doIgnore
类似地提升和排序。
给定此示例 myManageHook
。如何在 doIgnore
之后调用 UpdatePointer?我所有的尝试都导致类型不兼容。
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 弹出窗口 window 在键入时会失去焦点。这就是为什么当 window 出现时我试图将鼠标移动到屏幕的上部。
UPD 找到了包含 Idea 解决方法的相关线程 https://youtrack.jetbrains.com/issue/IDEA-112015#comment=27-2362253
您可以使用 liftX
将 X
动作变成 Query
动作。不过,您可能想使用 XMonad.Actions.Warp
而不是 X.A.UpdatePointer
;后者看起来可能有点太神奇了,无法在 manage hook 期间明智地开火。无论如何,一旦你看到如何提升 X
动作,你应该能够自己尝试一下。
因此,对于 banish
,您可以像这样使用 liftX
:
... --> (liftX (banish UpperLeft) >> doIgnore)
其他 X
动作可以用 doIgnore
类似地提升和排序。