dynamically calculate workspace position