xdotool にマウス クリックを転送させるには、--window
パラメーターを使用して正しいウィンドウをターゲットにしていることを確認する必要があります。たとえば、ウィンドウ ID が 79693135 の場合、xdotool click --window 79693135 3
まさに希望どおりに動作します。
次の基本xmonad.hs
は、キーボードレス マウス ジェスチャを適切に機能させるためにこれを行う方法を示しています。
import XMonad
import qualified XMonad.Actions.CycleWS as Workspace
import XMonad.Actions.MouseGestures ( mouseGesture, Direction2D(..) )
import qualified XMonad.Util.EZConfig as EZ
import XMonad.Util.Run ( safeSpawn )
import qualified Data.Map as Map
mouseGestureButton :: Button
mouseGestureButton = button3 -- right click
sendMouseClickToWindow :: Window -> X ()
sendMouseClickToWindow win =
safeSpawn
"xdotool" ["click", "--window", show win, show mouseGestureButton]
myMouseGestures :: [([Direction2D], Window -> X ())]
myMouseGestures =
[ ([R], const Workspace.nextWS) -- move to the next workspace
, ([L], const Workspace.prevWS) -- move to the previous workspace
, ([], sendMouseClickToWindow)
]
addMouseGestures :: XConfig a -> XConfig a
addMouseGestures =
flip EZ.additionalMouseBindings
[((0, mouseGestureButton), mouseGesture $ Map.fromList myMouseGestures)]
main = xmonad $ addMouseGestures def
NB: これにボタン 1 を使用することはお勧めできません。これは、ボタン 1 で通常使用されるテキストの選択やその他のマウスドラッグ機能に干渉するためです。