Port virtual desktops user action menu to VirtualDesktop

VirtualDesktop objects are more reliable than int-based desktop ids.

In order to make the desktop action menus more extensible and easier to work with, this change splits the single ShowOnDesktopActionData struct into multiple specialized structs.

Merge request reports

Loading