swaywm / sway

i3-compatible Wayland compositor
https://swaywm.org
MIT License
14.14k stars 1.08k forks source link

Single node in vertical split is blurry with scaling enabled #8102

Open braun-steven opened 3 months ago

braun-steven commented 3 months ago

Sway Version: sway version 1.9

Debug Log: https://pastebin.com/raw/P3ku2R01

Configuration File: /etc/sway/config and https://github.com/braun-steven/dotfiles/blob/master/configs/sway/.config/sway/config

Description:

  1. Start sway with default config: sway -c /etc/sway/config
  2. Enable scaling: swaymsg "output * scale 1.5"
  3. Open two terminal emulator (e.g. alacritty) in vertical split mode (splitv)
  4. Produce some text output in both terminals and observe, that the lower terminal has blurry font

Upper terminal: 2024-04-05T12:39:32,934565038+02:00

Lower terminal: 2024-04-05T12:39:40,583861425+02:00

I can reproduce this with different applications: Emacs, Alacritty, Kitty.

If I use my personal config instead of the default /etc/sway/config, the blurry node is reversed, i.e., the top node is blurry and the bottom node is clear.

As a comparison, this does not happen in hyprland.

Additional information:

akelmanson commented 3 months ago

This bug sounds very similar to #8098.

eonpatapon commented 1 month ago

I have the same issue but only when I have apps horizontally side by side (tested with foot, alacritty, or some GTK apps). The text on the right app is kind of blurry (in 2 col mode).

I've noticed the difference in sharpness is the same as between scale_filter nearest (sharpest) and linear.

If I resize the cols (to the left or right) by the smallest increment text become sharp. One increment more and it's "blurry" again and so on...

This happens only on fractional scales not on integer scale. Tried many scaling factors with no change.

I have a monitor with 3840x2160 resolution and using scale 1.5

sway version 1.9 wlroots 0.17.3

As I am using gaps, my workaround is to add 1px gap on the right:

Before:

gaps inner 15
smart_gaps on

After:

gaps inner 15
gaps right 1
smart_gaps on