Hi,


On Mon, Aug 8, 2022, 9:27 AM samuel ammonius <sfammon...@gmail.com> wrote:

> Hi,
>
> I started a discussion a while ago about the possibility of adding
> position set/get abilities to wayland, but since then I'd learned alot
> about how wayland works. I had heard that wayland combines the WM and
> server into one "compositor", but I thought wayland itself still managed
> some things. Since then I've learned that the compositor manages every
> event that a wayland client sends, and I think this makes the ability to
> set/get a position even more necessary.
>

On top of that, the end user (a human sitting behind the monitor) can
reconfigure everything, because "we all know better and computers are dumb".


The reasons are:
>
>    1. Apps can send both the position they want for a window and and the
>    type of window, and a compositor can choose which one to follow. (for
>    example, a client can send (width/2, height/2) and "popup" for a popup
>    surface, and compositors that prefer to follow the descriptive design will
>    follow "popup" and ones that prefer prescriptive design will follow the
>    coordinates).
>    2. Waylands asynchronous event system means that a compositor can ask
>    users if they would like to give an app permission to move itself and/or
>    other windows, similar to how android asks before giving apps camera/GPS
>    permissions.
>
> I've looked at existing wayland protocols and used them to create a simple
> one for position set/get.
>
> ------------------------------------------------------------------------------------------
>
>
> <?xml version="1.0" encoding="UTF-8"?><protocol name="pos_unstable_v1">  
> <copyright>    Copyright © 2022 Samuel Ammonius    Permission is hereby 
> granted, free of charge, to any person obtaining a    copy of this software 
> and associated documentation files (the "Software"),    to deal in the 
> Software without restriction, including without limitation    the rights to 
> use, copy, modify, merge, publish, distribute, sublicense,    and/or sell 
> copies of the Software, and to permit persons to whom the    Software is 
> furnished to do so, subject to the following conditions:    The above 
> copyright notice and this permission notice (including the next    paragraph) 
> shall be included in all copies or substantial portions of the    Software.   
>  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR   
>  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,    
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL    
> THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER    
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    
> FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER    
> DEALINGS IN THE SOFTWARE.  </copyright>
>
> <interface name="zwp_pos_v1" version="1">    <description summary="position 
> management protocol">      Used to set/get the position of a surface. The 
> ability to set the monitor that a surface is on is not available yet.
>
>
>       Warning! The protocol described in this file is experimental and      
> backward incompatible changes may be made. Backward compatible changes      
> may be added together with the corresponding interface version bump.      
> Backward incompatible changes are done by bumping the version number in      
> the protocol and interface names and resetting the interface version.      
> Once the protocol is to be declared stable, the 'z' prefix and the      
> version number in the protocol and interface names are removed and the      
> interface version number is reset.    </description>
>
>     <request name="set_pos">      <description summary="position setter">     
> Set the position of a surface      </description>
>
>       <arg name="surface" type="object" interface="wl_surface"           
> summary="target surface"/>
>
>       <arg name="x" type="int"/>
>
>       <arg name="y" type="int"/>
>
> </request> <event name="pos_changed"> <description summary="position
> changed event"> Notification that a surface has been moved, either by
> itself, another program, or the compositor.
>
>         WARNING: Do not use this event to force a surface to a certain 
> position. If multiple apps want the surface in a different position, then the 
> computer may freeze or glitch.
>
>       </description>
>
>       <arg name="x" type="int"/>
>
>       <arg name="y" type="int"/>
>
>     </event>
>
>     <event name="get_pos">
>
>       <arg name="x" type="int"/>
>
>       <arg name="y" type="int"/>
>
>     </event>
>
> </interface>
>
> </protocol>
>
> ------------------------------------------------------------------------------------------
>
> Should I just send it or is my reasoning (or XML syntax) wrong?
>
>

Reply via email to