Browse Source

initial commit

master
Daniel Napora 1 year ago
commit
38cd4de82c
  1. 18
      README.md
  2. 96
      clicksnap
  3. BIN
      clicksnap.png

18
README.md

@ -0,0 +1,18 @@
# clicksnap
clicksnap for Openbox - click on the appropriate area of the window to snap it in a given direction.
Works with active and inactive windows.
Add this mousebind action to context Frame:
<mousebind action="Press" button="C-Left">
<action name="UnmaximizeFull"/>
<action name="Execute">
<command>clicksnap</command>
</action>
</mousebind>
clicksnap is binded to Ctrl + Left Mouse Click
![clicksnap](clicksnap.png "clicksnap areas")

96
clicksnap

@ -0,0 +1,96 @@
#!/bin/bash
## clicksnap - click on the appropriate area of the window to snap it in a given direction.
# Works with active and inactive windows
#
#
#
#
##
activate_window="false"
eval $(xdotool getmouselocation --shell)
Mouse_x="$X"
Mouse_y="$Y"
eval $(xdotool getwindowgeometry --shell $WINDOW)
Win_x="$X"
Win_y="$Y"
Win_width="$WIDTH"
Win_height="$HEIGHT"
Rel_x="$((Mouse_x-Win_x))"
Rel_y="$((Mouse_y-Win_y))"
pos_x="$(((Mouse_x-Win_x)/(Win_width/3)))"
pos_y="$(((Mouse_y-Win_y)/(Win_height/3)))"
POS_CODE="$pos_x$pos_y"
OFFSET=$(wmctrl -d |grep "*" | awk -F' ' '{print $8}')
REALSIZE=$(wmctrl -d |grep "*" | awk -F' ' '{print $9}')
AVAIL_X="${REALSIZE%x*}"
AVAIL_Y="${REALSIZE#*x}"
OFF_X="${OFFSET%,*}"
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))
;;
10) # top
WIDTH=$((AVAIL_X))
HEIGHT=$((AVAIL_Y/2-OFF_Y/2))
X=$((0+OFF_X))
Y=$((0+OFF_Y))
;;
20) # top-right
WIDTH=$((AVAIL_X/2))
HEIGHT=$((AVAIL_Y/2-OFF_Y/2))
X=$((AVAIL_X/2+OFF_X))
Y=$((0+OFF_Y))
;;
01) # left
WIDTH=$((AVAIL_X/2))
HEIGHT=$((AVAIL_Y-OFF_Y/2))
X=$((0+OFF_X))
Y=$((0+OFF_Y))
;;
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));;
21) # right
WIDTH=$((AVAIL_X/2))
HEIGHT=$((AVAIL_Y-OFF_Y/2))
X=$((AVAIL_X/2+OFF_X))
Y=$((0+OFF_Y))
;;
02) # bottom-left
WIDTH=$((AVAIL_X/2))
HEIGHT=$((AVAIL_Y/2-OFF_Y/2))
X=$((0+OFF_X))
Y=$((AVAIL_Y/2+OFF_Y))
;;
12) # bottom
WIDTH=$((AVAIL_X))
HEIGHT=$((AVAIL_Y/2-OFF_Y/2))
X=$((0+OFF_X))
Y=$((AVAIL_Y/2+OFF_Y))
;;
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))
;;
esac
xdotool windowsize $WINDOW $WIDTH $HEIGHT
xdotool windowmove $WINDOW $X $Y
if [ $activate_window == "true" ]; then xdotool windowactivate $WINDOW; fi

BIN
clicksnap.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Loading…
Cancel
Save