The following is a rough breakdown of work needed to create a functional native Wayland toolkit.
Graphics | |||
---|---|---|---|
1 | ✅ | Basic drawing support using shared memory | |
2 | ✅ | CPU rendering | |
3 | ✅ | Unaccelerated VolatileImage support | |
4 | ❌ | Accelerated rendering support (VolatileImage) | |
5 | ✅ | GraphicsEnvironment/GraphicsDevice/etc, including multiple screen support | |
6 | ✅ | HiDPI | |
7 | ❌ | Top-level window transparency | |
8 | ❌ | Image formats (native 64bits?), HDR / color profiles? | |
9 | ❌ | Color blending with transparency support | alpha, pre-multiplied? |
10 | ❌ | AlphaComposite support on client side ? | main Porter-Duff rules like CLR, SRC_OVER or more? |
Input | |||
11 | ✅ | Mouse | Only 3-button mice with vertical scrolling is supported |
12 | ✅ | Keyboard | |
13 | ❌ | Touch (hi-resolution scrolling, gestures) | |
14 | ❌ | Input methods | |
GUI | |||
15 | ✅ | Frame decorations | Basic title bar decorations, "native" look-and-feel is a separate task |
16 | ✅ | Interactive resize/drag/minimize/maximize | |
17 | ✅ | Modal and non-modal dialogs | |
18 | ❌ | Correct Z-order for complex window hierarchies with modal dialogs | |
19 | ✅ | Fullscreen support | |
20 | ✅ | Tooltips, menus, comboboxes, etc | |
21 | ❌ | GTK support (making GTKLookAndFeel work) | |
22 | ⏳ | Splash screen support | |
23 | ❌ | toFront/toBack support | toFront 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. |
24 | ❌ | AWT 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/ |
25 | ❌ | AWT File dialogs/Print dialogs | |
Robot support | |||
26 | ✅ | For testing | |
27 | ❌ | Full support in a production environment | Probably not feasible in full |
Misc | |||
28 | ⏳ | Clipboard support | |
29 | ❌ | Drag-n-drop support | |
30 | ❌ | Taskbar/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
Overview
Content Tools
ThemeBuilder