clicksnap update
parent
4acafa349d
commit
9907437d5a
|
@ -1,17 +1,32 @@
|
|||
#!/bin/bash
|
||||
## clicksnap - click on the appropriate area of the window to snap it in a given direction.
|
||||
# Works with active and inactive windows
|
||||
### clicksnap - click on the appropriate area of the window to snap it in a given direction.
|
||||
# Works with active and inactive windows
|
||||
# Author: Daniel Napora <napcok@gmail.com>
|
||||
# https://maboxlinux.org
|
||||
#
|
||||
#
|
||||
#
|
||||
#
|
||||
##
|
||||
### Configuration
|
||||
# Gap between windows
|
||||
GAP="32"
|
||||
# TITLEBAR HEIGHT - no idea how to find it from cli
|
||||
TITLEBAR_HEIGHT="20"
|
||||
# Activate moved windows?
|
||||
activate_window="false"
|
||||
### End Configuration
|
||||
|
||||
eval $(xdotool getmouselocation --shell)
|
||||
Mouse_x="$X"
|
||||
Mouse_y="$Y"
|
||||
|
||||
HEX_ID=$(printf '0x%x\n' $WINDOW)
|
||||
|
||||
CHILD_ID=$(xwininfo -id $HEX_ID -children|grep "\"" | awk '{print $1}')
|
||||
|
||||
if xwininfo -id $CHILD_ID -wm |grep Undecorated ; then # Undecorated
|
||||
T="0"
|
||||
else # Decorated
|
||||
T="$TITLEBAR_HEIGHT"
|
||||
fi
|
||||
|
||||
eval $(xdotool getwindowgeometry --shell $WINDOW)
|
||||
Win_x="$X"
|
||||
Win_y="$Y"
|
||||
|
@ -36,61 +51,26 @@ OFF_Y="${OFFSET#*,}"
|
|||
|
||||
case $POS_CODE in
|
||||
00) # top-left
|
||||
WIDTH=$((AVAIL_X/2))
|
||||
HEIGHT=$((AVAIL_Y/2-OFF_Y/2))
|
||||
X=$((0+OFF_X))
|
||||
Y=$((0+OFF_Y))
|
||||
;;
|
||||
W=$((AVAIL_X/2-GAP)) H=$((AVAIL_Y/2-T-GAP)) X=$((0+OFF_X+GAP/2)) Y=$((0+OFF_Y+GAP/2));;
|
||||
10) # top
|
||||
WIDTH=$((AVAIL_X))
|
||||
HEIGHT=$((AVAIL_Y/2-OFF_Y/2))
|
||||
X=$((0+OFF_X))
|
||||
Y=$((0+OFF_Y))
|
||||
;;
|
||||
W=$((AVAIL_X-GAP)) H=$((AVAIL_Y/2-T-GAP)) X=$((0+OFF_X+GAP/2)) Y=$((0+OFF_Y+GAP/2));;
|
||||
20) # top-right
|
||||
WIDTH=$((AVAIL_X/2))
|
||||
HEIGHT=$((AVAIL_Y/2-OFF_Y/2))
|
||||
X=$((AVAIL_X/2+OFF_X))
|
||||
Y=$((0+OFF_Y))
|
||||
;;
|
||||
W=$((AVAIL_X/2-GAP)) H=$((AVAIL_Y/2-T-GAP)) X=$((AVAIL_X/2+OFF_X+GAP/2)) Y=$((0+OFF_Y+GAP/2));;
|
||||
01) # left
|
||||
WIDTH=$((AVAIL_X/2))
|
||||
HEIGHT=$((AVAIL_Y-OFF_Y/2))
|
||||
X=$((0+OFF_X))
|
||||
Y=$((0+OFF_Y))
|
||||
;;
|
||||
W=$((AVAIL_X/2-GAP)) H=$((AVAIL_Y-T-GAP)) X=$((0+OFF_X+GAP/2)) Y=$((0+OFF_Y+GAP/2));;
|
||||
11) # center
|
||||
WIDTH=$((AVAIL_X/2-OFF_X))
|
||||
HEIGHT=$((AVAIL_Y/2-OFF_Y))
|
||||
X=$((AVAIL_X/4+OFF_X/2))
|
||||
Y=$((AVAIL_Y/4+OFF_Y/2));;
|
||||
W=$((AVAIL_X/8*6-OFF_X)) H=$((AVAIL_Y/8*6-T)) X=$((AVAIL_X/8+OFF_X/2)) Y=$((AVAIL_Y/8+OFF_Y/2));;
|
||||
21) # right
|
||||
WIDTH=$((AVAIL_X/2))
|
||||
HEIGHT=$((AVAIL_Y-OFF_Y/2))
|
||||
X=$((AVAIL_X/2+OFF_X))
|
||||
Y=$((0+OFF_Y))
|
||||
;;
|
||||
W=$((AVAIL_X/2-GAP)) H=$((AVAIL_Y-T-GAP)) X=$((AVAIL_X/2+OFF_X+GAP/2)) Y=$((0+OFF_Y+GAP/2));;
|
||||
02) # bottom-left
|
||||
WIDTH=$((AVAIL_X/2))
|
||||
HEIGHT=$((AVAIL_Y/2-OFF_Y/2))
|
||||
X=$((0+OFF_X))
|
||||
Y=$((AVAIL_Y/2+OFF_Y))
|
||||
;;
|
||||
W=$((AVAIL_X/2-GAP)) H=$((AVAIL_Y/2-T-GAP)) X=$((0+OFF_X+GAP/2)) Y=$((AVAIL_Y/2+OFF_Y+GAP/2));;
|
||||
12) # bottom
|
||||
WIDTH=$((AVAIL_X))
|
||||
HEIGHT=$((AVAIL_Y/2-OFF_Y/2))
|
||||
X=$((0+OFF_X))
|
||||
Y=$((AVAIL_Y/2+OFF_Y))
|
||||
;;
|
||||
W=$((AVAIL_X-GAP)) H=$((AVAIL_Y/2-T-GAP)) X=$((0+OFF_X+GAP/2)) Y=$((AVAIL_Y/2+OFF_Y+GAP/2));;
|
||||
22) # bottom-right
|
||||
WIDTH=$((AVAIL_X/2))
|
||||
HEIGHT=$((AVAIL_Y/2-OFF_Y/2))
|
||||
X=$((AVAIL_X/2+OFF_X))
|
||||
Y=$((AVAIL_Y/2+OFF_Y))
|
||||
;;
|
||||
W=$((AVAIL_X/2-GAP)) H=$((AVAIL_Y/2-T-GAP)) X=$((AVAIL_X/2+OFF_X+GAP/2)) Y=$((AVAIL_Y/2+OFF_Y+GAP/2));;
|
||||
esac
|
||||
|
||||
|
||||
xdotool windowsize $WINDOW $WIDTH $HEIGHT
|
||||
xdotool windowsize $WINDOW $W $H
|
||||
xdotool windowmove $WINDOW $X $Y
|
||||
if [ $activate_window == "true" ]; then xdotool windowactivate $WINDOW; fi
|
||||
|
|
Loading…
Reference in New Issue