2020-08-29 16:54:04 +02:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
[ -z "$1" ] && exit # If $1 is left, hovers in the bottom left, if right, the bottom right
|
|
|
|
current=$(xdotool getwindowfocus)
|
2021-02-18 15:54:42 +01:00
|
|
|
dims="$(xrandr --screen 0 | grep ' connected' | grep -v '^\s*$' | sed 's/ primary//' | cut -d ' ' -f3)"
|
|
|
|
horizontal_offset="$( echo "$dims" | cut -d '+' -f2 )"
|
|
|
|
mouse_location_horizontal="$(xdotool getmouselocation | grep -Po 'x:\d{1,5}' | tr -d 'x:')"
|
|
|
|
#var passed is an accumulator for screens that fit the current mouse location or less
|
|
|
|
for screen in $horizontal_offset; do
|
|
|
|
[ "$screen" -lt "$mouse_location_horizontal" ] && passed="$(printf '%s\n%s\n' "$passed" "$screen")"
|
|
|
|
done
|
|
|
|
#take max of all screens to the left of mouse
|
|
|
|
offset_of_screen_mouse_is_on="$(echo "$passed" | sort -n | tail -n1)"
|
|
|
|
dim="$( echo "$dims" | grep "+$offset_of_screen_mouse_is_on+" )"
|
|
|
|
screenwidth="$( echo "$dim" | grep -Eo '^[0-9]{1,5}x' | tr -d 'x')"
|
|
|
|
screenheight="$( echo "$dim" | grep -Eo 'x[0-9]{1,5}+' | tr -d 'x+')"
|
|
|
|
|
|
|
|
#Adjust here for larger/smaller windows
|
|
|
|
newwidth=$(( 2 * screenwidth / 5))
|
|
|
|
newheight=$(( 2 * screenheight / 5))
|
|
|
|
#fit your borderwidth setup of your WM or windows could bleed over to other display
|
|
|
|
borderwidth=2
|
2020-08-29 16:54:04 +02:00
|
|
|
|
|
|
|
case "$1" in
|
2021-02-18 15:54:42 +01:00
|
|
|
left) horizontal=$(( borderwidth ))
|
|
|
|
vertical=$(( screenheight - newheight - 2 * borderwidth )) ;;
|
|
|
|
right) horizontal=$(( screenwidth - newwidth - 2 * borderwidth ))
|
|
|
|
vertical=$(( screenheight - newheight - 2 * borderwidth )) ;;
|
2020-08-29 16:54:04 +02:00
|
|
|
esac
|
2021-02-18 15:54:42 +01:00
|
|
|
|
|
|
|
xdotool windowsize "$current" $newwidth $newheight
|
|
|
|
xdotool windowmove "$current" $horizontal $vertical
|