I tracked this down further. The seam is caused by mutter's pixel
snapping of Wayland window actors, not by the dock itself, so this
probably needs a mutter task too.

Setup: Ubuntu 26.10, gnome-shell 51.0-2ubuntu3, mutter 51.0-1ubuntu3,
3840x2160 monitor at 150% scaling, Ubuntu Dock on the left (fixed, icon
size 48).

Measurements taken with Looking Glass (logical pixels):
- DashToDock actor: x=0, width=67
- Work area / maximized window frame: x=67
- 67 * 1.5 = 100.5 physical pixels, so the dock's edge falls on a half physical 
pixel.

In src/compositor/meta-window-actor-wayland.c,
surface_container_apply_transform() snaps the window to the physical
pixel grid with:

  adj_rel_x = roundf (rel_x * scale) / scale;
  adj_rel_y = roundf (rel_y * scale) / scale;

roundf(100.5) = 101, so the window is moved away from the dock by half a
pixel. The dock only covers half of physical column 100 (anti-aliased
edge), and the window starts at column 101, so column 100 shows the
wallpaper. That is the thin line in the screenshots. It depends on the
wallpaper, which explains why a darker background seemed to hide it. The
top bar is not affected here because its height is 32 (48 physical
pixels, an integer).

Workaround: set the dock icon size to an odd value so that the dock width 
becomes even:
  gsettings set org.gnome.shell.extensions.dash-to-dock dash-max-icon-size 49
Opening the Settings app resets this to 48, because its slider only uses even 
values.

Proposed fix: round half down instead of half away from zero, so the
window snaps towards the chrome. The dock and top bar are painted above
windows, so they cover the seam. Positions that are not exactly at .5
snap exactly as before.

--- a/src/compositor/meta-window-actor-wayland.c
+++ b/src/compositor/meta-window-actor-wayland.c
@@ surface_container_apply_transform
-  adj_rel_x = roundf (rel_x * scale) / scale;
-  adj_rel_y = roundf (rel_y * scale) / scale;
+  adj_rel_x = ceilf (rel_x * scale - 0.5f) / scale;
+  adj_rel_y = ceilf (rel_y * scale - 0.5f) / scale;

This code is unchanged on current mutter main. I built mutter
51.0-1ubuntu3 with this patch and am running it; the seam next to the
dock is gone. A dock on the right or bottom is not affected by this
change, because the window there ends under the dock, which is painted
above it.

Related upstream report with the same symptom at 150% (gap under the top
bar): https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8908

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2149879

Title:
  There is a small line in the taskbar/topbar and program when using
  24inch 4k screen in 150% scaling

To manage notifications about this bug go to:
https://bugs.launchpad.net/gnome-shell/+bug/2149879/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to