Cursor sizes on wayland

Martin Flöser mgraesslin at kde.org
Sun May 13 15:34:02 UTC 2018


Am 2018-05-09 12:08, schrieb Aleix Pol:
> On Tue, May 8, 2018 at 8:57 PM, Martin Flöser <mgraesslin at kde.org> 
> wrote:
>> 
>> 
>> Am 8. Mai 2018 17:05:57 MESZ schrieb Aleix Pol <aleixpol at kde.org>:
>>> Hi,
>>> I've been looking into getting a consistent cursor look on wayland,
>>> which is specially daunting because of scaling.
>>> 
>>> I'd like to look into fixing it for xwayland clients. Would somebody
>>> be able to shed some light into the issue so I can understand it and
>>> fix it?
>>> 
>> Xwayland clients use the normal X11 API to set cursors. Xwayland just 
>> forwards them through the Wayland protocol. The env variable for 
>> cursor size is the same on Wayland and X11, so there should not be any 
>> difference.
>> 
>> I'm not sure what exactly you want to look into. Personally I had the 
>> feeling that apps started to act crazy concerning cursor sizes - on 
>> Wayland and on X11. Normally there just should not be any difference. 
>> There's one env variable controlling it and if all apps would just use 
>> it and not do crazy stuff instead it would just work.
> 
> Well, setting the cursor size isn't any useful if you have two
> monitors. I have it configured at resolution-dependent at the moment
> and sometimes I lose my cursor on my high dpi screen.
> If I use something bigger, when I move it to my external monitor I get
> a monstrosity.
> 
> David mentioned at the sprint that we maybe should be correcting its
> scale on the kwin size, if it's not being scaled yet.

This might be part of the solution. This needs a more general solution 
and might require changes to Wayland protocols and each toolkit and 
KWin.

For "normal" windows we use the wl_surface::enter to inform on which 
output they are. Thus they can adjust for different dpi. Similar there 
is the scale information on a wl_surface.

For a cursor wl_surface KWin neither emits the output information nor 
uses the scale information. Both would be relative easy to implement. 
But only makes sense if toolkits support it. Last time I looked at Qt 
code, Qt did not (but that's some time ago).

So to get this properly working, I would suggest to add the output 
enter/leave information to cursor surfaces and honor scale in KWin. Then 
add the same to QtWayland if it doesn't exist already.

Cheers
Martin


More information about the Plasma-devel mailing list