dots/scripts/Documents/Scripts/169resizeBSPWM.sh
2024-04-29 19:05:39 +02:00

39 lines
948 B
Bash
Executable file

#!/usr/bin/bash
# resize focused window to aspect ratio
# arguments: aspectX aspectY (default 16 9)
# dependencies: bc, jq
x=16
y=9
if [ $# -eq 2 ]; then
x=$1
y=$2
fi
node=($(bspc query -T -n | jq -r .client.tiledRectangle.width,.client.tiledRectangle.height,.id))
parent=($(bspc query -T -n @parent | jq -r .splitType,.firstChild.id))
# vertical split: adjust width
if [ "${parent[0]}" = "vertical" ]; then
width=$(printf "%.0f" $(echo "scale=4;${node[1]}*$x/$y" | bc))
# left window
if [ "${node[2]}" = "${parent[1]}" ]; then
bspc node -z right $((width-node[0])) 0
# right window
else
bspc node -z left $((node[0]-width)) 0
fi
# horizontal split: adjust height
else
height=$(printf "%.0f\n" $(echo "scale=4;${node[0]}*$y/$x" | bc))
# top window
if [ "${node[2]}" = "${parent[1]}" ]; then
bspc node -z bottom 0 $((height-node[1]))
# bottom window
else
bspc node -z top 0 $((node[1]-height))
fi
fi