You can always monitor the root viewport using it's resize signal. Then calculate what you need from that. It depends though a lot on how you have your project setup, the implementation is up to you.
A simple example:
get_tree().get_root().connect("size_changed", self, "resized")
# Do resizing calculations here using new size information.