Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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
20
Tooltips, menus, comboboxes, etc
21

GTK support (making GTKLookAndFeel work)


22
Splash 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
No input support yet

27Full support in a production environmentProbably not feasible in full

Misc

28
Clipboard 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