Virtual desktops ....
I always thought this would be useful for switching
between different contexts, like work vs. personal,
but I’ve rarely used it in practice.
I'm a virtual desktop addict. If I may, I'd like to share how I use mine, so that you might perhaps find them more useful in your own work. I have dual monitors, and four virtual desktops (in XFCE, but that doesn't matter).
Originally, I used only two workspaces (email/reading, development), and this has evolved a bit over time into 4. What I like about using virtual desktops is that I have a spatial mental model of where each thing is, which helps me ensure I don't mix up dev/production, and helps me avoid alt-tabbing to find what I want. I make extensive use of my window manager's ability to maximize on the left or right half of a screen. (This would probably not work well for me with a single monitor, unless it were a large one.)
1: E-mail/calendar on the left monitor, automated build system output on the right. This is for things that are semi-important but which I don't want to regularly have interrupting me.
2: Web browser with the app I currently am developing, and my console window on the left monitor, full-screen IDE (PyCharm) on the right. (I also put emacs or a terminal on the right as well when writing extensively in those.) This workspace is where I spend more than 80% of my time.
3: Github on the right screen, for pull requests, code review, issue tracking. I use this for a context-switch from developing code to reviewing it. I'll also use this workspace when babysitting a code release, to help ensure that I don't mix up local stuff with remote stuff.
4: music player. I stream music, so I rarely need to look at this except to change channels.