The following is a rough breakdown of work needed to create a functional native Wayland toolkit.


Graphics
1

Basic drawing support using shared memory
2CPU rendering
3Unaccelerated VolatileImage support
4Accelerated rendering support (VolatileImage)
5GraphicsEnvironment/GraphicsDevice/etc, including multiple screen support
6HiDPI
7Top-level window transparency
8Image formats (native 64bits?), HDR / color profiles?
9Color blending with transparency supportalpha, pre-multiplied?
10AlphaComposite support on client side ?main Porter-Duff rules like CLR, SRC_OVER or more?

Input

11MouseOnly 3-button mice with vertical scrolling is supported
12Keyboard
13Touch (hi-resolution scrolling, gestures)
14Input methods

GUI

15Frame decorationsBasic title bar decorations, "native" look-and-feel is a separate task
16Interactive resize/drag/minimize/maximize
17Modal and non-modal dialogs
18Correct Z-order for complex window hierarchies with modal dialogs
19Fullscreen supportBut can't specify the device yet
20Tooltips, menus, comboboxes, etc
21

GTK support (making GTKLookAndFeel work)


22Splash screen support
23toFront/toBack supporttoFront can be implemented through an activation token (as if the window just appeared); toBack can be implemented through a synthesized gesture on the title bar (also needs mouse serial). See GTK implementation.
24AWT components (java.awt.Button, java.awt.Checkbox, etc)AWT components were implemented in the Caciocavallo project using Swing itself. It is a good idea to take inspiration from there for the Wayland implementation: https://hg.openjdk.org/caciocavallo/ng/
25AWT File dialogs/Print dialogs

Robot support

26For testing
27Full support in a production environmentProbably not feasible in full

Misc

28Clipboard support
29Drag-n-drop support
30Taskbar/tray support

Legend:

  • - feature is functional at the basic level (for example, mouse support means 3-button mice, nothing fancy)
  • - task not started yet
  • - task is being worked on
  • No labels