Multi monitor HIDPI in X11 compatibility mode

Nikita Gubarkov nikita.gubarkov at jetbrains.com
Fri Nov 10 14:59:24 UTC 2023


Just a reminder for anyone interested, there is a review for per-monitor
HIDPI support under Xwayland: https://github.com/openjdk/wakefield/pull/6
Feel free to review and share your thoughts, *not sure this is a final
version though, there may be more changes in the future.*

On Wed, Apr 5, 2023 at 4:43 PM Nikita Gubarkov <
nikita.gubarkov at jetbrains.com> wrote:

> There's a branch with patch for multimonitor HIDPI support on XWayland
> with many issues found in JBR fixed, please see
> https://github.com/openjdk/wakefield/tree/yaaz_hidpi_compatibility
>
> On Tue, Feb 14, 2023 at 5:16 AM Philip Race <philip.race at oracle.com>
> wrote:
>
>> > AFAIU mainline currently mostly works with XWayland, right?
>>
>> Mainline only supports X.org.
>>
>> There is no "mostly", it either works 100%, or it doesn't work.
>> Meaning 1 JCK test failure out of (say) 10,000 tests means JCK fails. No
>> argument possible.
>>
>> So, no it does not help mainline until Wakefield integrates XWayland
>> support.
>>
>> -phil
>>
>> On 2/13/23 1:22 PM, Nikita Gubarkov wrote:
>>
>> It doesn't require Wayland in order to run as before,
>> but if Wayland is available at runtime (dlsym), it will use it to get
>> per-monitor scaling.
>> AFAIU mainline currently mostly works with XWayland, right?
>> If so, probably this can even help the mainline, not only sandbox?
>>
>> And yes, it still reports integer scales, I didn't find a way to get
>> fractional scaling,
>> Wayland protocol itself has only integer wl_output::scale.
>>
>> On Fri, Feb 10, 2023 at 10:48 PM Philip Race <philip.race at oracle.com>
>> wrote:
>>
>>> If it needs Wayland, then it might be something that should go into the
>>> sandbox
>>> for the Wakefield project ... perhaps that is what you are intending
>>> here ?
>>> Until that project adds support back into main line for Wayland's X11
>>> compat
>>> mode we only support running on X.org, so there won't be a wayland
>>> server to query,
>>> so this fix can't help mainline today.
>>>
>>> I presume this code would still report integer scales ?
>>> My understanding is Wayland by design does not support fractional scales.
>>>
>>> -phil.
>>>
>>> On 2/2/23 2:47 PM, Nikita Gubarkov wrote:
>>> > JetBrains Runtime has support for per-monitor scaling in X11 mode
>>> > implemented a few months ago.
>>> >
>>> > At first I tried to use the GTK library for reading the scales as
>>> > suggested in https://bugs.openjdk.org/browse/JDK-8260270, but in a
>>> > multi-monitor environment it is always returning scale of the main
>>> > display when running with X11 backend.
>>> > The final solution was to connect to Wayland just to read the scaling
>>> > values and then do a huge refactoring to make AWT's X11-related code
>>> > respect these individual scaling values.
>>> > For coordinate conversions I took the same approach that was used in
>>> > Windows - https://github.com/openjdk/jdk/pull/375
>>> > There were some issues that I was unable to solve, like the window
>>> > title bar is always scaled with the main monitor's scale no matter
>>> > what monitor the window is on, the same with mouse cursor when it's
>>> > over the window, but overall it seems to work.
>>> >
>>> > I can try porting this into OpenJDK and create a PR if needed.
>>> >
>>> > JBR issue: https://youtrack.jetbrains.com/issue/JBR-5208
>>> > Code:
>>> >
>>> https://github.com/JetBrains/JetBrainsRuntime/commit/bf073b92b8803fb45c5934127b8f4a9f58e508a1
>>>
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/wakefield-dev/attachments/20231110/b5d7b267/attachment.htm>


More information about the wakefield-dev mailing list