There's no constraints on desktop and monitor names, therefore, using a
desktop or monitor name as descriptor is ambiguous.
We put an end to this ambiguity by introducing desktop and monitor IDs.
`bspc query -{M,D}` now yields IDs instead of names.
Fixes#397.
It is now easy to access any attribute by piping the output of
`query -T` to a JSON extractor/filter.
E.g.:
bspc query -T -d DESKTOP_SEL | jq -r .layout
And it also makes `restore -T` more robust.
Because many clients (e.g. termite) prevent us (maybe unknowingly) from
capturing motion events on their windows, we're forced to create a
window for this sole purpose.
Grabbing the pointer isn't an option, because it forces us to consider
some of the enter notify events we should be ignoring.
- Expand `underlying_monitor` into `monitor_from_client` to avoid
passing a NULL pointer to `translate_client`.
- Remove the `fit_monitor` setting (use the `--center` rule effect
instead).
- Don't remap a window in it's last location (node invisibility would be
the proper way to do this).
- Call `translate_client` after configure requests.