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