X-Git-Url: https://iankelling.org/git/?p=distro-setup;a=blobdiff_plain;f=i3-mouse-warp;fp=i3-mouse-warp;h=99cdacf5f001046ca8ceb70defe6d23088be3b6f;hp=0000000000000000000000000000000000000000;hb=d67edcdca8795a4bca116aa532d02dda246a6f53;hpb=a9e3d60b4254cd5c6216c4b3e7f8cd5cc5107fad diff --git a/i3-mouse-warp b/i3-mouse-warp new file mode 100755 index 0000000..99cdacf --- /dev/null +++ b/i3-mouse-warp @@ -0,0 +1,31 @@ +#!/bin/bash +set -e; . /usr/local/lib/bash-bear; set +e + +## based on: +## https://github.com/i3/i3/issues/2971 + +window=$(xdotool getwindowfocus) + +# this brings in variables WIDTH and HEIGHT +eval "$(xdotool getwindowgeometry --shell $window)" + + +if (( HEIGHT > 100 )); then + TX=$(( WIDTH / 2)) + TY=$(( HEIGHT / 2)) + + xdotool mousemove -window $window $TX $TY + # iank, original says "Check for height of 100 assumes that anything + # less than that means no window", and this condition is for "when I + # am navigating to a screen that does not have an open window on it". I don't think +else + rect=$(i3-msg -t get_workspaces | jq -r '.[] | select(.focused==true).rect') + + x=$(jq -r '.x' <<< $rect) + y=$(jq -r '.y' <<< $rect) + w=$(jq -r '.width' <<< $rect) + h=$(jq -r '.height' <<< $rect) + TX=$(( x + w / 2)) + TY=$(( y + h / 2)) + xdotool mousemove -window $window $TX $TY +fi