I use Karabiner-Elements for key remapping. Specifically, I remap my capslock key to both Esc (when pressed and released) and ctrl ( when held). Since this frees my ctrl key, I remap ctrl to be my hyper key (cmd+ctrl+option+shift).
Hammerspoon is used for both window management and app management. I also use it to achieve Caffeine's functionality.