Core wayland protocol
- - scanner: wl_* prefix removal: split it out into a namespace part so
- we can call variables "surface" instead of "wl_surface"?
+ - Maybe try to make remote wayland actually happen, to see if there
+ is something in the protocol/architecture that makes it harder than
+ it should be.
- - Framebased input event delivery.
+ICCCM
+
+ - mime-type guidelines for data_source (ie, both dnd and selection):
+ recommended types for text or images, types that a clipboard
+ manager must support, mime-types must be listed in preferred order
+
+ - we need a "no kb focus please" mechanism. Or should this be
+ implicit in a specific surface type?
+
+EWMH
+
+ - configure should provide dx_left, dx_right, dy_top, dy_bottom, or
+ dx, dy, width and height.
+
+ - move to workspace, keep on top, on all workspaces, minimize etc
+ requests for implementing client side window menu? or just make a
+ "show window menu" request to let the compositor display and manage
+ a popup window?
+
+ - window move and resize functionality for kb and touch.
+
+ - Protocol for specifying title bar rectangle (for moving
+ unresponsive apps). Rectangle for close button, so we can popup
+ force-close dialog if application doesn't respond to ping event
+ when user clicks there. We could use the region mechanism here
+ too.
+
+ - popup placement protocol logic.
+
+ - subsurface mechanism. we need this for cases where we would use an
+ X subwindow for gl or video other different visual type.
+
+EGL/gbm
+
+ - Land Robert Braggs EGL extensions: frame age, swap with damage
+
+ - Make it possible to share buffers from compositor to clients.
+ Tricky part here is how to indicate to EGL on the server side that
+ it should make an EGLImage available to a client. We'll need a
+ "create a wl_buffer for this EGLImage for this client" kind of
+ entry point.
- Protocol for arbitrating access to scanout buffers (physically
contiguous memory). When a client goes fullscreen (or ideally as
allocate a scanout buffer now" event to the fullscreen-to-be
client.
- - Next steps based on EGL_WL_bind_display: create EGLImageKHR from
- shm buffers? async auth in the implementation of the extension?
-
- - wayland-egl: lazy-copy-back swapbuffer, sub-window.
-
- - configure should provide dx_left, dx_right, dy_top, dy_bottom, or
- dx, dy, width and height.
- - surface.set_grab_mode(GRAB_OWNER_EVENTS vs GRAB_SURFACE_EVENTS), to
- make menus work right: click and drag in a menubar grabs the
- pointer to the menubar (which we need for detecting motion into
- another menu item), but we need events for the popup menu surface
- as well.
+Misc
- glyph cache
cache.retire: buffer /* cache has stopped using buffer, please
* reupload whatever you had in that buffer */
- - DnD issues:
-
- - Drag should not be tied to a source surface, just the client.
- the grab will break if the surface goes away, but the wl_drag
- struct doesn't need to hold on to the source surface.
-
- - Root window must send NULL type (to decline drop) or
- x-wayland/root-something type if the source offers that. But
- the target deletes the drag_offer object when drag.pointer_focus
- leaves the surface...
-
- - How do we animate the drag icon back to the drag origin in case
- of a failed drag? Client should set drag icon separately,
- compositor can do it then.
-
- - How to handle surfaces from clients that don't know about dnd or
- don't care? Maybe the dnd object should have a
- dnd.register_surface() method so clients can opt-in the surfaces
- that will participate in dnd. Or just assume client is not
- participating until we receive an accept request.
-
- - Selection/copy+paste issues: is it sufficient to only introduce
- the selection offer when a client receives kb focus? Or maybe
- it is actually a security feature? Clipboard manager in server
- for retained selections?
-
- - Pointer image issue:
-
- - A direct touch input device (eg touch screen) doesn't have a
- pointer; indicate that somehow.
-
- - Cursor themes, tie in with glyph/image cache.
-
- A "please suspend" event from the compositor, to indicate to an
application that it's no longer visible/active. Or maybe discard
buffer, as in "wayland discarded your buffer, it's no longer
switching away from. for minimized windows that we don't want live
thumb nails for. etc.
- - Event when a surface moves from one output to another.
-
- - input device discovery, hotplug
-
- - Advertise axes as part of the discovery, use something like
- "org.wayland.input.x" to identify the axes.
-
- - keyboard state, layout events at connect time and when it
- changes, keyboard leds
-
- - relative events
-
- - multi touch?
-
- - synaptics, 3-button emulation, scim
-
- - multi gpu, needs queue and seqno to wait on in requests
-
-Destkop/EWMH type protocol
-
- - Add protocol to let applications specify the effective/logical
- surface rectangle, that is, the edge of the window, ignoring drop
- shadows and other padding. The compositor needs this for snapping
- and constraining window motion. Also, maybe communicate the opaque
- region of the window (or just a conservative, simple estimate), to
- let the compositor reduce overdraw.
-
- - Protocol for specifying title bar rectangle (for moving
- unresponsive apps) and a rectangle for the close button (for
- detecting ignored close clicks).
-
-libxkbcommon
-
- - pull in actions logic from xserver
-
- - pull in keycode to keysym logic from libX11
-
- - expose alloc functions in libxkbcommon, drop xserver funcs?
-
- - pull the logic to write the xkb file from xkb_desc and names into
- libxkbcommon and just build up the new xkb_desc instead of
- dump+parse? (XkbWriteXKBKeymapForNames followed by
- xkb_compile_keymap_from_string in XkbDDXLoadKeymapByNames)
-
- - pull in keysym defs as XKB_KEY_BackSpace
-
- - figure out what other X headers we can get rid of, make it not
- need X at all (except when we gen the keysyms).
-
- - Sort out namespace pollution (XkbFoo macros, atom funcs etc).
-
- - Sort out 32 bit vmods and serialization
-
Clients and ports
- SDL port, bnf has work in progress here:
http://cgit.freedesktop.org/~bnf/sdl-wayland/
- - libva + eglimage + kms integration
-
Ideas