tile provides a way to interactively cycle through pre-defined custom layout definitions à la XMonad. Inspiration was taken from here, but this is pretty much a complete rewrite. This package differs from others like workgroups2, perspective and eyebrowse in that it is only concerned with window configurations, and not necessarily what is contained in each window.
The author’s configuration can be found here. Check it out for some ideas about how to customize tile.