#!/bin/sh if [ "$1" = "-h" ]; then printf "usage: %s [RESIZE_PERC] [MODE]\n" "$(basename "$0")" printf "\n" printf "MODE can be tr (for top-right) or empty (for center)\n" exit 2 fi con=$(swq current con) if [ "$(echo "$con" | jq -r '.type')" = "con" ]; then printf "not a floating container\n" exit 1 fi ws=$(swq current workspace) ws_width=$(echo "$ws" | jq -r '.rect.width') ws_height=$(echo "$ws" | jq -r '.rect.height') if [ -n "$1" ]; then perc="$1" con_width=$(awk "BEGIN{print int($ws_width * $perc)}") con_height=$(awk "BEGIN{print int($ws_height * $perc)}") else con_width=$(echo "$con" | jq -r '.window_rect.width') con_height=$(echo "$con" | jq -r '.window_rect.height') fi if [ -n "$2" ]; then case "$2" in tl) # top-left tar_x=0 tar_y=0 ;; tr) # top-right tar_x=$(awk "BEGIN{print int($ws_width - $con_width)}") tar_y=0 ;; bl) # bottom-left tar_x=0 tar_y=$(awk "BEGIN{print int($ws_height - $con_height)}") ;; br) # bottom-right tar_x=$(awk "BEGIN{print int($ws_width - $con_width)}") tar_y=$(awk "BEGIN{print int($ws_height - $con_height)}") ;; esac else # center center_x=$(awk "BEGIN{print int($ws_width/2)}") center_y=$(awk "BEGIN{print int($ws_height/2)}") echo "center: $center_x x $center_y" tar_x=$(awk "BEGIN{print int($center_x - ($con_width / 2))}") tar_y=$(awk "BEGIN{print int($center_y - ($con_height / 2))}") fi echo "ws: $ws_width x $ws_height" echo "con: $con_width x $con_height" echo "moveto: $tar_x x $tar_y" swaymsg resize set "$con_width" "$con_height" swaymsg move position "$tar_x" "$tar_y"