Eu estou tentando fazer xmonad focar a janela sob o ponteiro quando o mouse é movido, independentemente de qual janela está focada. Isto foi abordado em essa 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 do mouse / gancho de navegação para fazer isso.
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 discussão de lista de discussão discutindo este 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,