86 lines
2.0 KiB
Bash
Executable File
86 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Originally by https://github.com/windelicato/
|
|
|
|
size=${2:-'20'}
|
|
dir=$1
|
|
|
|
transplanter() {
|
|
bspc node ${dir} -p south && bspc node -n ${dir}
|
|
}
|
|
|
|
northplanter() {
|
|
bspc node north -p north && bspc node -n north
|
|
}
|
|
|
|
rootplanter() {
|
|
bspc node @/ -p ${dir} && bspc node -n @/ || bspc node -s next.local && bspc node -n @/
|
|
bspc node @/ -p cancel
|
|
}
|
|
|
|
bspc config pointer_follows_focus true
|
|
# Find current window mode
|
|
is_floating() {
|
|
bspc query -T -n | grep -q '"state":"floating"'
|
|
}
|
|
# If the window is floating, move it
|
|
if is_floating; then
|
|
#only parse input if window is floating,tiled windows accept input as is
|
|
case "$dir" in
|
|
west) switch="-x"
|
|
sign="-"
|
|
;;
|
|
east) switch="-x"
|
|
sign="+"
|
|
;;
|
|
north) switch="-y"
|
|
sign="-"
|
|
;;
|
|
*) switch="-y"
|
|
sign="+"
|
|
;;
|
|
esac
|
|
xdo move ${switch} ${sign}${size}
|
|
|
|
# Otherwise, window is tiled: switch with window in given direction
|
|
else
|
|
if [[ $(bspc query -N -n .local.\!floating | wc -l) != 2 ]]; then
|
|
case "$dir" in
|
|
north) northplanter || rootplanter
|
|
;;
|
|
*) transplanter || rootplanter
|
|
;;
|
|
esac
|
|
else
|
|
case "$dir" in
|
|
east) bspc node -s east || bspc query -N -n west.local || \
|
|
if bspc query -N -n south.local ; then
|
|
bspc node @/ -R 90
|
|
else
|
|
bspc node @/ -R 270
|
|
fi
|
|
;;
|
|
west) bspc node -s west || bspc query -N -n east.local || \
|
|
if bspc query -N -n north.local ; then
|
|
bspc node @/ -R 90
|
|
else
|
|
bspc node @/ -R 270
|
|
fi
|
|
;;
|
|
south) bspc node -s south || bspc query -N -n north.local || \
|
|
if bspc query -N -n west.local ; then
|
|
bspc node @/ -R 90
|
|
else
|
|
bspc node @/ -R 270
|
|
fi
|
|
;;
|
|
*) bspc node -s north || bspc query -N -n south.local || \
|
|
if bspc query -N -n west.local ; then
|
|
bspc node @/ -R 270
|
|
else
|
|
bspc node @/ -R 90
|
|
fi
|
|
;;
|
|
esac
|
|
fi
|
|
fi
|