'Shrink current window down
Will shrink all secondary clients below the specified index in order.
Each client will attempt to shrink as much as it is able before the
next client is resized.
Any amount that was unable to be applied to the clients is returned.'

def shrink_down(self, cidx, amt):

    left = amt
    for idx in range((cidx + 1), len(self.relative_sizes)):
        left -= (left - self.shrink(idx, left))
    return left
