You have to decide on xrandr
output how many monitors are attached while you start BSPWM.
BSPWM is tiling window manager and it does its job very good.
start_from=1
monitors_connected=$(bspc query -M | wc -l)
per_monitor=$(( 10 / monitors_connected ))
for monitor in $(bspc query -M); do
bspc monitor $monitor -d $(seq $start_from $(( start_from + per_monitor - 1)))
start_from=$(( start_from + per_monitor ))
done
In your case, it will put first 5 workspaces on the first monitor and other 5 on external monitor.
The code above you can include inside your bspwmrc before you start some status bar program.
while pgrep -x polybar >/dev/null; do sleep 1; done
xrandr -q | awk '/ connected / {print $1}' | while read -r monitor _; do
polybar -r "$monitor" &
done
so polybar for every connected monitor will run. If there is only one monitor, nothing will happen.