2

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

0