<head><!-- BaNnErBlUrFlE-HeAdEr-start -->
<style>
  #pfptBannerht2xz6k { all: revert !important; display: block !important;
    visibility: visible !important; opacity: 1 !important;
    background-color: #60beeb !important;
    max-width: none !important; max-height: none !important }
  .pfptPrimaryButtonht2xz6k:hover, .pfptPrimaryButtonht2xz6k:focus {
    background-color: #77a8c4 !important; }
  .pfptPrimaryButtonht2xz6k:active {
    background-color: #8193a0 !important; }
  html:root, html:root>body { all: revert !important; display: block !important;
    visibility: visible !important; opacity: 1 !important; }
</style>

<!-- BaNnErBlUrFlE-HeAdEr-end -->
</head><!-- BaNnErBlUrFlE-BoDy-start -->
<!-- Preheader Text : BEGIN -->
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;max-height:0px;opacity:0;overflow:hidden;">
(Following up on our discussion at the meeting on Feb 26, 2026) As you know, each window in Wayland has a coordinate system of its own with the top-left corner placed at (0, 0) in that coordinate system. There is no way to programmatically set</div>
<!-- Preheader Text : END -->

<!-- Email Banner : BEGIN -->
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;max-height:0px;opacity:0;overflow:hidden;">ZjQcmQRYFpfptBannerStart</div>

<!--[if ((ie)|(mso))]>
  <table border="0" cellspacing="0" cellpadding="0" width="100%" style="padding: 0px 0px 10px 0px; direction: ltr" lang="en"><tr><td>
    <table border="0" cellspacing="0" cellpadding="0" style="padding: 0px 8px 6px 8px; width: 100%; border-radius:4px; border-top:4px solid #8193a0;background-color:#60beeb;"><tr><td valign="top">
      <table align="left" border="0" cellspacing="0" cellpadding="0" style="padding: 0px 8px 4px 8px; font-size: 12px; line-height: 16px">
        <tr><td style="color:#000000; font-family: 'Arial', sans-serif; font-weight:bold; font-size:14px; line-height: 20px; direction: ltr">
          This Message Is From an External Sender
        </td></tr>
        <tr><td style="color:#000000; font-weight:normal; font-family: 'Arial', sans-serif; font-size:12px; direction: ltr">
          This message came from outside your organization.
        </td></tr>

      </table>
      <![if ie]><br clear="all"><![endif]>
      <table align="right" border="0" cellspacing="0" cellpadding="0" style="padding: 0px 0px 4px 0px; font-size: 14px; line-height: 36px"><tr>
        <td style="direction: ltr">  <a target="_blank" href="https://us-phishalarm-ewt.proofpoint.com/EWT/v1/ACWV5N9M2RV99hQ!Op20OCfu1uIOHtigef3bUcbT2YriRL77B9SW1a27YMaTnkGGWh296kz9MjwzK7jd8XcK7PNzEprfjtAwj7jdITPNfIsvLE-NUV2_V_nu7JUypzeI0Fxt_Sq7DfE7SvCJqg$" style="mso-padding-alt: 7px; padding: 7px; border-radius: 2px; border: 1px solid #666666; "><strong style="font-weight: normal; color: #000000; text-decoration: none; font-family: 'Arial', sans-serif; font-size: 14px;">  Report Suspicious  </strong></a>  ‌ </td>
      </tr></table>
    </td></tr></table>
  </td></tr></table>
<![endif]-->

<![if !((ie)|(mso))]>
  <div dir="ltr" lang="en" id="pfptBannerht2xz6k" style="all: revert !important; display:block !important; text-align: left !important; margin: 0 0 10px 0 !important; padding:7px 16px 8px 16px !important; border-radius: 4px !important; min-width: 200px !important; background-color: #60beeb !important; background-color: #60beeb; border-top: 4px solid #8193a0 !important; border-top: 4px solid #8193a0;">
    <div id="pfptBannerht2xz6k" style="all: unset !important; float:left !important; display:block !important; margin: 1px 0 1px 0 !important; max-width: 600px !important;">
      <div id="pfptBannerht2xz6k" style="all: unset !important; display:block !important; visibility: visible !important; background-color: #60beeb !important; color:#000000 !important; color:#000000; font-family: 'Arial', sans-serif !important; font-family: 'Arial', sans-serif; font-weight:bold !important; font-weight:bold; font-size:14px !important; line-height:1.29 !important; line-height:1.29">
        This Message Is From an External Sender
      </div>
      <div id="pfptBannerht2xz6k" style="all: unset !important; display:block !important; visibility: visible !important; background-color: #60beeb !important; color:#000000 !important; color:#000000; font-weight:normal; font-family: 'Arial', sans-serif !important; font-family: 'Arial', sans-serif; font-size:12px !important; line-height:1.5 !important; line-height:1.5; margin-top:2px !important;">
This message came from outside your organization.
      </div>

    </div>
    <div id="pfptBannerht2xz6k" style="all: unset !important; float: right !important; display: block !important; display: block; margin-left: 16px !important; margin-top: 1px !important; text-align: right !important; width: fit-content !important; font-size: 12px !important">
<a id="pfptBannerht2xz6k" href="https://us-phishalarm-ewt.proofpoint.com/EWT/v1/ACWV5N9M2RV99hQ!Op20OCfu1uIOHtigef3bUcbT2YriRL77B9SW1a27YMaTnkGGWh296kz9MjwzK7jd8XcK7PNzEprfjtAwj7jdITPNfIsvLE-NUV2_V_nu7JUypzeI0Fxt_Sq7DfE7SvCJqg$"
    style="all: unset !important; display: inline-block !important; text-decoration: none">
    <div class="pfptPrimaryButtonht2xz6k" style="display: inline-block !important; display: inline-block; visibility: visible !important; opacity: 1 !important; color: #000000 !important; color: #000000; font-family: 'Arial', sans-serif !important; font-family: 'Arial', sans-serif; font-size: 14px !important;  font-weight: normal !important; text-decoration: none !important; border-radius: 2px !important; margin-top: 3px !important; margin-bottom: 3px !important; margin-left: 16px !important; padding: 7.5px 16px !important; white-space: nowrap !important; width: fit-content !important;
        border: 1px solid #666666">
        Report Suspicious
    </div>
</a>
    </div>
    <div style="clear: both !important; display: block !important; visibility: hidden !important; line-height: 0 !important; font-size: 0.01px !important; height: 0px"> </div>
  </div>
<![endif]>

<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;max-height:0px;opacity:0;overflow:hidden;">ZjQcmQRYFpfptBannerEnd</div>
<!-- Email Banner : END -->

<!-- BaNnErBlUrFlE-BoDy-end -->
<div dir="ltr"><div>(Following up on our discussion at the meeting on Feb 26, 2026)</div><div><br></div><div>As you know, each window in Wayland has a coordinate system of its own with the top-left corner placed at (0, 0) in that coordinate system. There is no way to programmatically set or obtain the location in the global desktop's coordinate system.</div><div>This complicates automatic testing to the extreme; many UI tests follow this pattern:</div><div>   Point p = component.getLocationOnScreen();</div><div>   Color c = robot.getPixelColor(p.x + dx, p.y + dy);</div><div>   if (!c.equals(...))... </div><div><br></div><div>Since getLocationOnScreen() returns (0, 0) for top-level windows, the coordinates supplied to the Robot call will almost certainly be incorrect in the global coordinate space that Robot uses.</div><div><br></div><div>There are a few routes that can be taken to at least mitigate this problem.</div><div>1. Make Robot operate in window's coordinate space and look into pixels obtained from window'</div><div>s SurfaceData without involving the desktop compositor.</div><div>This obviously doesn't work when there's more than one window and does not account for popups. Still, this was sufficient to run more than half of the existing tests.</div><div>Another problem with this approach is that client applications, which are not tests, need to take proper screenshots of the composited desktop. Therefore, some kind of switch between two Robot modes is required (perhaps a system property?).</div><div><br></div><div>2. Enhance Robot API to specify which window's pixels need to be fetched. This will require bulk updates to most tests under java/awt and javax/swing in addition to changes on all currently supported platforms.</div><div><br></div><div>3. Run tests only in a more controlled Wayland environment that exposes the global coordinate system to the client applications (like Weston or Gnome KIOSK, perhaps with extra plugins).</div><div>This was initially attempted at JetBrains with Weston+plugin. A side note: each test had to run in a new Weston instance because tests often crashed Weston.</div><div><br></div><div>4. Wait for new Wayland protocols (like <a href="https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/230">https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/230</a>) dedicated to UI testing.</div><div><br></div></div>