#!/usr/bin/env bash # # inspired by sway_move from bob hepple # initialise() { PROG=$(basename $0) VERSION="1.0" ARGUMENTS="top-right|bottom-right|bottom-left" USAGE="move a floating window to the edges because sway lacks a way to do it!" case $1 in -h|--help) echo "$USAGE" exit 0 ;; 1*|2*|3*|4*|5*|6*|7*|8*|9*) command="$1" ;; *) echo "$PROG: bad argument" >&2 exit 1 ;; esac return 0 } initialise "$@" # win_dim=( $( swaymsg -t get_tree | # jq '.. | select(.type?) | select(.type=="floating_con") | select(.focused?)|.rect.width, .rect.height, .deco_rect.height' ) ) type=$( swaymsg -t get_tree | jq '.. | select(.focused?)|.type' | sed 's/"//g') case "$type" in "con") if [ $1 -ge 10 -a $1 -le 90 ] then width=${1}ppt echo swaymsg "resize set width ${width}" swaymsg "resize set width ${width}" else echo "invalid width $1" fi ;; "floating_con") width=$((${1} * 21)) height=$((${width} * 9 / 16)) echo swaymsg "resize set width ${width}px height ${height}px" swaymsg "resize set width ${width} height ${height}" ;; *) echo wrong type $type ;; esac