UniqueContext object
- core stack functionality
- manage parts like dnd, input event and cursor handling
  without knowing any detail about the different parts
- reactor for unique context events

UniqueWindow object
- core window functionality
- decorations (window borders, overlays)
- properties (title, type, icon)
- constraints (min/max size, resize step)
- options (keep position, size, stacking)
- state (iconified, maximized, minimized, shaded)
- window groups and relationships
- has an UniqueInputChannel for input events
- reactor for unique window events


UniqueDevice
- listents to input events
- dispatches events to one or more UniqueInputSwitch
+ currently there's one instance for each these device classes
  - pointer     motion and button events, cursor acceleration
  - wheel       wheel events
  - keyboard    key events


UniqueInputSwitch
- bundles devices into a logical group, listening to them
- dispatches events to the selected UniqueInputChannel
- each device class has its own channel selection
- automatic channel selection by pre-processing events (focus follows mouse etc.)
- fixed channel selection (grabbing) for whole device or selected events
- implicit grabbing for keyboard and pointer


UniqueInputChannel
- each UniqueWindow has one channel to receive input events
- window decorations can have additional channels
- StReT regions can be assigned a channel for each device class
- automatic channel selection is based on these assignments
- reactor for dispatching input events received from UniqueInputSwitch


UniqueCursor part
- switches or updates shapes
- manages the StReT region
- listens to pointer devices to update the cursor position

UniqueCursorShape object
- one global fallback shape
- optionally one shape per window
- builtin cursor animation


UniqueDND part
- dnd context manager

UniqueDNDContext object
- created by application starting the drag


UniqueDecoration object
- created for each decoration added to a window
- manages stret region(s) attached to the frame
+ there can be several uses of this object
  - border
  - shadow
  - glass ?
  - flames :->

