<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div>Hi Simon,</div>
<div><br>
</div>
<div>Thanks for working on this! :)</div>
<div><br>
</div>
<div>Is the intention to implement the client side inside libwayland-cursor? <span style="font-size:12pt">No</span></div>
<div><span style="font-size:12pt">changes needed for toolkits except calling some new API when initializing</span></div>
<div>libwayland-cursor?</div>
<div><br>
</div>
<div>I guess it's also possible to implement it on the toolkit level using the old</div>
<div>libwayland-cursor API... Which would <span style="font-size:12pt">allow us to use the extension before</span></div>
<div><span style="font-size:12pt">everyone has upgraded to the new </span><span style="font-size:12pt">libwayland-cursor.</span></div>
<div><br>
</div>
<div>> +    <request name="get_xcursor_configuration_seat"></div>
<div><br>
</div>
<div>To me, this sounds a bit like we're getting some kind of seat from the</div>
<div>request. How about get_seat_xcursor_configuration? Or simply</div>
<div>get_xcursor_configuration?</div>
<div><br>
</div>
<div>> +    <event name="default_cursor"></div>
<div>> +      <description summary="default cursor name"></div>
<div>> +        The default_cursor event describes the default XCursor cursor name to be</div>
<div>> +        used for this seat.</div>
<div>> +      </description></div>
<div><br>
</div>
<div>Maybe explain the use <span style="font-size: 12pt;">case here?</span></div>
<div><br>
</div>
<div>And another thing, maybe we can explicitly say this is a hint for the client?</div>
<div>I'm asking because I don't think <span style="font-size: 12pt;">we have a matching concept of a default</span></div>
<div><span style="font-size: 12pt;">cursor in Qt... We just have </span><span style="font-size: 12pt;">Qt::QCursorShape::ArrowCursor. We could</span></div>
<div><span style="font-size: 12pt;">make this request override what that </span><span style="font-size: 12pt;">shape is, but that might be confusing</span></div>
<div><span style="font-size: 12pt;">to application developers if some </span><span style="font-size: 12pt;">compositor decides to set the default</span></div>
<div><span style="font-size: 12pt;">cursor to a cross or some other non-arrow </span><span style="font-size: 12pt;">cursor.</span><span style="font-size: 12pt;"> Anyway, this event is</span></div>
<div><span style="font-size: 12pt;">going to cause some minor </span><span style="font-size: 12pt;">issues </span><span style="font-size: 12pt;">in Qt, perhaps in other toolkits </span><span style="font-size: 12pt;">as well.</span></div>
<div><span style="font-size:12pt"><br>
</span></div>
<div>Otherwise, this looks great :) Looking forward to having uniform cursor</div>
<div><span style="font-size: 12pt;">sizes</span><span style="font-size: 12pt;">!</span></div>
<div><br>
</div>
<div>Johan</div>
<div><br>
</div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>From:</b> wayland-devel <wayland-devel-bounces@lists.freedesktop.org> on behalf of Simon Ser <contact@emersion.fr><br>
<b>Sent:</b> Friday, October 12, 2018 7:40:21 PM<br>
<b>To:</b> wayland-devel@lists.freedesktop.org<br>
<b>Cc:</b> Simon Ser<br>
<b>Subject:</b> [PATCH RFC wayland-protocols] unstable: add xcursor-configuration</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt">
<div class="PlainText">Clients are responsible for loading and setting cursors. For this<br>
purpose they often use XCursor images via the libwayland-cursor<br>
library. However clients have no way to know the user's preferred<br>
theme and size. This results in inconsistent cursors across<br>
clients (e.g. cursor growing bigger when entering a surface).<br>
<br>
This protocol fixes this issue by sending the user's XCursor<br>
preferences to the client. It also allows for per-seat cursor<br>
configuration.<br>
<br>
Signed-off-by: Simon Ser <contact@emersion.fr><br>
---<br>
<br>
This is a draft of the XCursor configuration protocol. It's pretty<br>
simple.<br>
<br>
It still doesn't allow to configure differently wl_pointer's cursor<br>
and the tablet tool's cursor. Maybe this can be done with an enum<br>
and a new get_xcursor_configuration_seat argument?<br>
<br>
Comments welcome!<br>
<br>
 unstable/xcursor-configuration/README         |   4 +<br>
 .../xcursor-configuration-unstable-v1.xml     | 105 ++++++++++++++++++<br>
 2 files changed, 109 insertions(+)<br>
 create mode 100644 unstable/xcursor-configuration/README<br>
 create mode 100644 unstable/xcursor-configuration/xcursor-configuration-unstable-v1.xml<br>
<br>
diff --git a/unstable/xcursor-configuration/README b/unstable/xcursor-configuration/README<br>
new file mode 100644<br>
index 0000000..472e3bf<br>
--- /dev/null<br>
+++ b/unstable/xcursor-configuration/README<br>
@@ -0,0 +1,4 @@<br>
+xcursor configuration protocol<br>
+<br>
+Maintainers:<br>
+Simon Ser <contact@emersion.fr><br>
diff --git a/unstable/xcursor-configuration/xcursor-configuration-unstable-v1.xml b/unstable/xcursor-configuration/xcursor-configuration-unstable-v1.xml<br>
new file mode 100644<br>
index 0000000..9d9d840<br>
--- /dev/null<br>
+++ b/unstable/xcursor-configuration/xcursor-configuration-unstable-v1.xml<br>
@@ -0,0 +1,105 @@<br>
+<?xml version="1.0" encoding="UTF-8"?><br>
+<protocol name="wp_xcursor_configuration_unstable_v1"><br>
+  <copyright><br>
+    Copyright © 2018 Simon Ser<br>
+<br>
+    Permission is hereby granted, free of charge, to any person obtaining a<br>
+    copy of this software and associated documentation files (the "Software"),<br>
+    to deal in the Software without restriction, including without limitation<br>
+    the rights to use, copy, modify, merge, publish, distribute, sublicense,<br>
+    and/or sell copies of the Software, and to permit persons to whom the<br>
+    Software is furnished to do so, subject to the following conditions:<br>
+<br>
+    The above copyright notice and this permission notice (including the next<br>
+    paragraph) shall be included in all copies or substantial portions of the<br>
+    Software.<br>
+<br>
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR<br>
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,<br>
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL<br>
+    THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER<br>
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING<br>
+    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER<br>
+    DEALINGS IN THE SOFTWARE.<br>
+  </copyright><br>
+<br>
+  <description summary="protocol to configure XCursor themes"><br>
+    This protocol allows compositors to advertize XCursor configuration to<br>
+    clients.<br>
+<br>
+    Once compositor configuration is received, clients are responsible for<br>
+    loading the XCursor theme, creating wl_buffers with cursor images and<br>
+    setting the cursor.<br>
+<br>
+    Warning! The protocol described in this file is experimental and<br>
+    backward incompatible changes may be made. Backward compatible changes<br>
+    may be added together with the corresponding interface version bump.<br>
+    Backward incompatible changes are done by bumping the version number in<br>
+    the protocol and interface names and resetting the interface version.<br>
+    Once the protocol is to be declared stable, the 'z' prefix and the<br>
+    version number in the protocol and interface names are removed and the<br>
+    interface version number is reset.<br>
+  </description><br>
+<br>
+  <interface name="zwp_xcursor_configuration_manager_v1" version="1"><br>
+    <description summary="XCursor configuration manager"><br>
+      A global factory interface for wp_xcursor_configuration objects.<br>
+    </description><br>
+<br>
+    <request name="destroy" type="destructor"><br>
+      <description summary="destroy the XCursor configuration manager object"><br>
+        Destroy the XCursor configuration manager. This doesn't destroy objects<br>
+        created with the manager.<br>
+      </description><br>
+    </request><br>
+<br>
+    <request name="get_xcursor_configuration_seat"><br>
+      <description summary="create a wp_xcursor_configuration object for a seat"><br>
+        This creates a new wp_xcursor_configuration object for the given<br>
+        wl_seat.<br>
+      </description><br>
+      <arg name="id" type="new_id" interface="zwp_xcursor_configuration_v1"/><br>
+      <arg name="seat" type="object" interface="wl_seat"/><br>
+    </request><br>
+  </interface><br>
+<br>
+  <interface name="zwp_xcursor_configuration_v1" version="1"><br>
+    <description summary="XCursor configuration for a seat"><br>
+      A Xcursor configuration seat object describes XCursor settings for a<br>
+      specific seat.<br>
+    </description><br>
+<br>
+    <request name="destroy" type="destructor"><br>
+      <description summary="destroy this object"><br>
+        Using this request a client can tell the server that it is not going to<br>
+        use this object anymore.<br>
+      </description><br>
+    </request><br>
+<br>
+    <event name="done"><br>
+      <description summary="all information about the configuration has been sent"><br>
+        This event is sent after all other properties of a<br>
+        wp_xcursor_configuration have been sent.<br>
+<br>
+        This allows changes to the wp_xcursor_configuration properties to be<br>
+        seen as atomic, even if they happen via multiple events.<br>
+      </description><br>
+    </event><br>
+<br>
+    <event name="theme"><br>
+      <description summary="theme configuration"><br>
+        The theme event describes XCursor theme configuration for this seat.<br>
+      </description><br>
+      <arg name="name" type="string" summary="theme name"/><br>
+      <arg name="size" type="uint" summary="theme size"/><br>
+    </event><br>
+<br>
+    <event name="default_cursor"><br>
+      <description summary="default cursor name"><br>
+        The default_cursor event describes the default XCursor cursor name to be<br>
+        used for this seat.<br>
+      </description><br>
+      <arg name="name" type="string" summary="default cursor name"/><br>
+    </event><br>
+  </interface><br>
+</protocol><br>
-- <br>
2.19.1<br>
<br>
<br>
_______________________________________________<br>
wayland-devel mailing list<br>
wayland-devel@lists.freedesktop.org<br>
<a href="https://lists.freedesktop.org/mailman/listinfo/wayland-devel" id="LPlnk183259" class="OWAAutoLink" previewremoved="true">https://lists.freedesktop.org/mailman/listinfo/wayland-devel</a>
<br>
<br>
</div>
</span></font></div>
</div>
</body>
</html>