The traditional emacs solution is to move everything into emacs, and they actually follow through (emacs can, in fact, be a window manager, web browser, and terminal emulator).
That's how I use emacs every day. Once it is open, I rarely need to do anything outside of it. Code, compile, debug, web search, etc. It can handle everything I have thrown at it.
lol, emacs can do everything. Shame my wrists aren't compatible with it's keyboard command architecture.