Я пытаюсь заставить 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,
user464014
источник