TODO 5.16 KB
Newer Older
Kristian Høgsberg's avatar
Kristian Høgsberg committed
1
Core wayland protocol
Kristian Høgsberg's avatar
Kristian Høgsberg committed
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 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
   it should be.

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.

49 50 51 52 53 54 55 56
 - Protocol for arbitrating access to scanout buffers (physically
   contiguous memory).  When a client goes fullscreen (or ideally as
   the compositor starts the animation that will make it fullscreen)
   we send a "give up your scanout buffer" to the current fullscreen
   client (if any) and when the client acks that we send a "try to
   allocate a scanout buffer now" event to the fullscreen-to-be
   client.

Kristian Høgsberg's avatar
Kristian Høgsberg committed
57

58
Misc
59

60
 - glyph cache
Kristian Høgsberg's avatar
Kristian Høgsberg committed
61

Kristian Høgsberg's avatar
Kristian Høgsberg committed
62 63
    - Needs a mechanism to pass buffers to client.

64 65
      buffer = drm.create_buffer(); /* buffer with stuff in it */

66
      cache.upload(buffer, x, y, width, height, int hash)
67 68 69

      drm.buffer: id, name, stride etc /* event to announce cache buffer */

70
      cache.image: hash, buffer, x, y, stride /* event to announce
71 72
					      * location in cache */

73 74
      cache.reject: hash   /* no upload for you! */

75 76 77
      cache.retire: buffer /* cache has stopped using buffer, please
			    * reupload whatever you had in that buffer */

78 79 80 81 82
 - 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
   visible, you can stop updating it now.", reattach, as in "oh hey,
   I'm about to show your buffer that I threw away, what was it
Kristian Høgsberg's avatar
Kristian Høgsberg committed
83 84 85 86 87
   again?".  for wayland system compositor vt switcing, for example,
   to be able to throw away the surfaces in the session we're
   switching away from.  for minimized windows that we don't want live
   thumb nails for. etc.

Kristian Høgsberg's avatar
Kristian Høgsberg committed
88

Kristian Høgsberg's avatar
Kristian Høgsberg committed
89
Clients and ports
90 91 92 93 94 95 96 97 98 99 100

 - port gtk+

    - draw window decorations in gtkwindow.c

    - Details about pointer grabs. wayland doesn't have active grabs,
      menus will behave subtly different.  Under X, clicking a menu
      open grabs the pointer and clicking outside the window pops down
      the menu and swallows the click.  without active grabs we can't
      swallow the click.  I'm sure there much more...

101
    - dnd, copy-paste
102

103
 - Investigate DirectFB on Wayland (or is that Wayland on DirectFB?)
104

105 106
 - SDL port, bnf has work in progress here:
   http://cgit.freedesktop.org/~bnf/sdl-wayland/
107 108


109 110 111 112 113 114 115
Ideas

 - A wayland settings protocol to tell clients about themes (icons,
   cursors, widget themes), fonts details (family, hinting
   preferences) etc.  Just send all settings at connect time, send
   updates when a setting change.  Getting a little close to gconf
   here, but could be pretty simple:
116

117 118 119
     interface "settings":
       event int_value(string name, int value)
       event string_value(string name, string value)
120

121 122
   but maybe it's better to just require that clients get that from
   somewhere else (gconf/dbus).
123 124


125
Crazy ideas
126

127 128 129 130
 - AF_WAYLAND - A new socket type.  Eliminate compositor context
   switch by making kernel understand enough of wayland that it can
   forward input events as wayland events and do page flipping in
   response to surface_attach requests:
131

132 133
    - ioctl(wayland_fd, "surface_attach to object 5 should do a kms page
			 flip on ctrc 2");
134

135 136
    - what about multiple crtcs? what about frame event for other
      clients?
137

138
    - forward these input devices to the client
139

140 141
    - "scancode 124 pressed or released with scan codes 18,22 and 30
       held down gives control back to userspace wayland.
Kristian Høgsberg's avatar
Kristian Høgsberg committed
142

143 144 145 146 147
    - what about maintaining cursor position? what about pointer
      acceleration?  maybe this only works in "client cursor mode",
      where wayland hides the cursor and only sends relative events?
      Solves the composited cursor problem.  How does X show its
      cursor then?
Kristian Høgsberg's avatar
Kristian Høgsberg committed
148

149
    - Probably not worth it.