Lloyd Pique | 818c5d8 | 2015-10-27 14:32:21 -0700 | [diff] [blame] | 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. |