Я пытаюсь заставить xmonad фокусировать окно под указателем, когда мышь перемещается, независимо от того, какое окно сфокусировано. Это было решено в этом вопросе ; Тем не менее, предоставленное решение предлагает использовать XMonad.Actions.UpdateFocus
что не работает. Я решил, что я просто переписал бы функциональность UpdateFocus
, но я не уверен, как заставить движение мыши / зависать для этого.
Я провел некоторые эксперименты самостоятельно и обнаружил, что MotionEvents не передаются в eventHook, если мышь находится над окном, которое интересуется своими собственными событиями мыши. Примеры таких окон включают gnome-Terminal и Nautilus. Существует тема рассылки, обсуждающая эту проблему. Вот код, который я использовал для экспериментов.
focusOnMouseMove :: Event -> X All
focusOnMouseMove (MotionEvent { ev_x = x, ev_y = y, ev_window = root }) = do
return (debugPrint ((show x) ++ " " ++ (show y)) (All True))
-- later in my config
rootMask = rootMask defaultConfig .|. pointerMotionMask,
clientMask = clientMask defaultConfig .|. pointerMotionMask,
startupHook = adjustEventInput,
handleEventHook = myEventHook,