Relatedly: making "safe" keybinding choices as an application developer has been a problem for a long time. Especially when compiz was the new hotness, many application shortcuts needed to be rebound by the end user, because the authors had chosen ones that were now in conflict, especially ones involving Ctrl and Alt together.

Before that, Mozilla had gone through something with the Mozilla Suite, where seemingly every contributor wanted to ship their new feature with a keybinding for it, which meant there was an internal friction. But product leads and code reviewers were also burdened with respecting platform conventions, too. Eventually, there came a separate approval process for any proposed shortcut, with specific people tasked with managing allocations (and reclaiming past ones—this project management approach is what eventually led to Firefox).

The headache persists, because there tends to be no pattern for the assignment of shortcuts. When Unity was introduced, I'd hoped that they'd seize the opportunity of a clean break to reconcile problem, but that didn't happen.

Here is the scheme I've adopted:

1. If we pull back our scope a bit from the application, then operations on the window itself are performed with Super. (It helps that this key usually has Windows iconography on it).

2. Finally, if we pull all the way back, operations to be handled by the environment/desktop/graphical shell/what-have-you are performed with Alt+Super.

The implication of 1 is that to move a window around without having to drag its title bar, you'd use Super along with a mousedown anywhere in the window, rather than Alt+mousedown. It also means that the shortcut to close the current window is not Alt+F4, but instead it can be remapped to Super+F4. Same goes with Alt+Tab, which becomes Super+Tab. This is jarring at first and perhaps controversial. But even when I wanted to abandon my own scheme because of how bothersome this stuff felt at first, I found that after one day of use, I had become accustomed to it. So switching is really not as bothersome as kneejerk might have you believe.

Flipping between virtual desktops is Alt+Super+arrow rather than Ctrl+Alt+arrow (or other combinations that might be in use) and revealing the desktop by hiding all windows is Alt+Super+D. I have global launchers set up like this, too. E.g., Alt+Super+T brings up a new GNOME Terminal window.

What this means is that any combination of Ctrl or Alt or Ctrl+Alt (along with Ctrl+Shift, Alt+Shift, and Ctrl+Alt+Shift) in the keybindspace are reserved for use by the application. Go wild.

I put this scheme into place once whenever I buy a new machine or otherwise do a new system install, and then never have to worry about it again. The important thing to note that it entirely comes down to remapping the default "global" shortcuts so that the desktop/WM is not stomping on the application keybindspace. This is very easy—it doesn't involve trawling through dozens of apps' settings panels or config files so they comply; you remap the "global" desktop/WM shortcuts and you're done.

The result of adopting a scheme like this is zero conflicts, ever, and you end up feeling like you have more space. It might sound so cumbersome as to be unworkable, but don't underestimate the advantages of what a clean break, once-and-for-all decision like this brings around.