#!/usr/bin/env bash winid=$(xdotool search --classname QuakeConsole) mongeom=$(herbstclient attr monitors.focus.geometry) monw=${mongeom%x*} monw=$(( monw - 4 )) curtag=$(herbstclient attr tags.focus.name) if [ -z "$winid" ]; then ( rules=( floating=on floating_geometry="${monw}x512+1+1" ) herbstclient rule once pid=$BASHPID maxage=10 "${rules[@]}" exec st -c QuakeConsole -n QuakeConsole -t QuakeConsole ) & else hcid=$(printf "0x%x" "$winid") visible=$(herbstclient attr clients."$hcid".visible) wintag=$(herbstclient attr clients."$hcid".tag) if [ "$visible" = "false" ] || [ "$wintag" != "$curtag" ]; then herbstclient chain , lock , set_attr clients."$hcid".floating_geometry "${monw}x512+1+1" , bring "$winid" , unlock else herbstclient set_attr clients."$hcid".minimized true fi fi