2017-10-18 43 views
1

鑑於此示例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

回答

1

您可以使用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