Estou tentando fazer o xmonad focar a janela abaixo do ponteiro quando o mouse é movido, independentemente de qual janela está focada. Isso foi abordado em esta questão ; no entanto, a solução fornecida sugere usar XMonad.Actions.UpdateFocus
, o que não funciona. Eu decidi que iria apenas reescrever a funcionalidade de UpdateFocus
, mas não tenho certeza de como obter um movimento de mouse / hover hook para fazer isso.
Eu fiz algumas experiências por conta própria, e descobri que os MotionEvents não estão sendo passados para o eventHook se o mouse estiver sobre uma janela que esteja interessada em seus próprios eventos de mouse. Exemplos de tais janelas incluem gnome-terminal e nautilus. Existe um tópico da lista de discussão que está discutindo esse problema. Aqui estava o código que usei para a experimentação.
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,