Home | History | Annotate | Download | only in wayland
      1 Core wayland protocol
      2 
      3  - Maybe try to make remote wayland actually happen, to see if there
      4    is something in the protocol/architecture that makes it harder than
      5    it should be.
      6 
      7 ICCCM
      8 
      9  - mime-type guidelines for data_source (ie, both dnd and selection):
     10    recommended types for text or images, types that a clipboard
     11    manager must support, mime-types must be listed in preferred order
     12 
     13  - we need a "no kb focus please" mechanism.  Or should this be
     14    implicit in a specific surface type?
     15 
     16 EWMH
     17 
     18  - configure should provide dx_left, dx_right, dy_top, dy_bottom, or
     19    dx, dy, width and height.
     20 
     21  - move to workspace, keep on top, on all workspaces, minimize etc
     22    requests for implementing client side window menu? or just make a
     23    "show window menu" request to let the compositor display and manage
     24    a popup window?
     25 
     26  - window move and resize functionality for kb and touch.
     27 
     28  - Protocol for specifying title bar rectangle (for moving
     29    unresponsive apps).  Rectangle for close button, so we can popup
     30    force-close dialog if application doesn't respond to ping event
     31    when user clicks there.  We could use the region mechanism here
     32    too.
     33 
     34  - popup placement protocol logic.
     35 
     36  - subsurface mechanism.  we need this for cases where we would use an
     37    X subwindow for gl or video other different visual type.
     38 
     39 EGL/gbm
     40 
     41  - Land Robert Braggs EGL extensions: frame age, swap with damage
     42 
     43  - Make it possible to share buffers from compositor to clients.
     44    Tricky part here is how to indicate to EGL on the server side that
     45    it should make an EGLImage available to a client.  We'll need a
     46    "create a wl_buffer for this EGLImage for this client" kind of
     47    entry point.
     48 
     49  - Protocol for arbitrating access to scanout buffers (physically
     50    contiguous memory).  When a client goes fullscreen (or ideally as
     51    the compositor starts the animation that will make it fullscreen)
     52    we send a "give up your scanout buffer" to the current fullscreen
     53    client (if any) and when the client acks that we send a "try to
     54    allocate a scanout buffer now" event to the fullscreen-to-be
     55    client.
     56 
     57 
     58 Misc
     59 
     60  - glyph cache
     61 
     62     - Needs a mechanism to pass buffers to client.
     63 
     64       buffer = drm.create_buffer(); /* buffer with stuff in it */
     65 
     66       cache.upload(buffer, x, y, width, height, int hash)
     67 
     68       drm.buffer: id, name, stride etc /* event to announce cache buffer */
     69 
     70       cache.image: hash, buffer, x, y, stride /* event to announce
     71 					      * location in cache */
     72 
     73       cache.reject: hash   /* no upload for you! */
     74 
     75       cache.retire: buffer /* cache has stopped using buffer, please
     76 			    * reupload whatever you had in that buffer */
     77 
     78  - A "please suspend" event from the compositor, to indicate to an
     79    application that it's no longer visible/active.  Or maybe discard
     80    buffer, as in "wayland discarded your buffer, it's no longer
     81    visible, you can stop updating it now.", reattach, as in "oh hey,
     82    I'm about to show your buffer that I threw away, what was it
     83    again?".  for wayland system compositor vt switcing, for example,
     84    to be able to throw away the surfaces in the session we're
     85    switching away from.  for minimized windows that we don't want live
     86    thumb nails for. etc.
     87 
     88 
     89 Clients and ports
     90 
     91  - port gtk+
     92 
     93     - draw window decorations in gtkwindow.c
     94 
     95     - Details about pointer grabs. wayland doesn't have active grabs,
     96       menus will behave subtly different.  Under X, clicking a menu
     97       open grabs the pointer and clicking outside the window pops down
     98       the menu and swallows the click.  without active grabs we can't
     99       swallow the click.  I'm sure there much more...
    100 
    101     - dnd, copy-paste
    102 
    103  - Investigate DirectFB on Wayland (or is that Wayland on DirectFB?)
    104 
    105  - SDL port, bnf has work in progress here:
    106    http://cgit.freedesktop.org/~bnf/sdl-wayland/
    107 
    108 
    109 Ideas
    110 
    111  - A wayland settings protocol to tell clients about themes (icons,
    112    cursors, widget themes), fonts details (family, hinting
    113    preferences) etc.  Just send all settings at connect time, send
    114    updates when a setting change.  Getting a little close to gconf
    115    here, but could be pretty simple:
    116 
    117      interface "settings":
    118        event int_value(string name, int value)
    119        event string_value(string name, string value)
    120 
    121    but maybe it's better to just require that clients get that from
    122    somewhere else (gconf/dbus).
    123 
    124 
    125 Crazy ideas
    126 
    127  - AF_WAYLAND - A new socket type.  Eliminate compositor context
    128    switch by making kernel understand enough of wayland that it can
    129    forward input events as wayland events and do page flipping in
    130    response to surface_attach requests:
    131 
    132     - ioctl(wayland_fd, "surface_attach to object 5 should do a kms page
    133 			 flip on ctrc 2");
    134 
    135     - what about multiple crtcs? what about frame event for other
    136       clients?
    137 
    138     - forward these input devices to the client
    139 
    140     - "scancode 124 pressed or released with scan codes 18,22 and 30
    141        held down gives control back to userspace wayland.
    142 
    143     - what about maintaining cursor position? what about pointer
    144       acceleration?  maybe this only works in "client cursor mode",
    145       where wayland hides the cursor and only sends relative events?
    146       Solves the composited cursor problem.  How does X show its
    147       cursor then?
    148 
    149     - Probably not worth it.
    150