#5314·Waybar

Mixed-DPI setups mess with pixel-perfect images again

Author: partyvanCreated Sep 9, 2026Updated Sep 9, 2026
Labelsbughyprlandcustomclockinhibitorcava

Describe the bug

I say "again" because this was fixed in 0.15.0, from what I could observe. nvm lol 0.15.0 is occasionally busted too all of a sudden? after rolling back to a previously known good config? im so confused. i was going to properly bisect it (shoutout for making that super easy by just doing nix run .#waybar btw! big ups) to make life easier for mr maintainer but now that it's stochastic i'm kind of at a loss sorry

Specifically, with respect to screenshots below:

0.14.0 0.15.0 master as of writing
only one standard DPI monitor correct correct correct
mixed DPI setup, nonetheless, on the standard DPI monitor: blurred 50/50 correct/blurred i guess? blurred

To reproduce Set icons with very obvious pixel boundaries, and plug in mixed-dpi monitors

jsonc
[
  {
    "position": "top",
    "modules-right": [
      "image#clock-icon"
    ],
    "image#clock-icon": {
      "path": "/nix/store/asdfhfdsgfjdklsfoobar742814/share/icons/clock.png",
      "size": 8
    }
  }
]

clock.png: Image


css
#image {
	border-right: 4px solid transparent;
	border-left: 3px solid transparent;
}
window#waybar.top {
	border-top: 1px solid #ffffff;
	border-bottom: 1px solid #D8D7D7;
	background-color: #eeeeee;
}

Expected behaviour see "correct" in screenshots below

Screenshots

correct: Image

blurred: Image

curious aside: bitmap fonts are always just fine. only the icons are smeared

Environment

  • Waybar version (waybar --version): says 0.15.0 but it's a build of latest master. rev 6d60c8e02
  • Installed from (distro package / source / other): overriden NixOS 26.05 package:
    package = pkgs.waybar.overrideAttrs ({ buildInputs ? [], mesonFlags ? [], ... }: {
      src = pkgs.fetchFromGitHub {
        owner = "Alexays";
        repo = "waybar";
        rev = "6d60c8e02be67bb85bb9b1ea803f2fbcf0722002";
        hash = "sha256-G6AcGuevhkYflQHhJq9GnLhEMgcI51Y6MYKBQvdRPDc=";
      };
      version = "2026-08-27";
      buildInputs = buildInputs ++ [ pkgs.modemmanager ];
      mesonFlags = mesonFlags ++ [ "-Dcava=disabled" ];
      doInstallCheck = false;
    });
  • Compositor and version (Sway, Hyprland, River, …):
$ hyprland --version
Hyprland 0.55.4 built from branch v0.55.4-b at commit a0136d8c04687bb36eb8a28eb9d1ff92aea99704 clean ([gha] Nix: update inputs).

Debug output Run waybar -l debug and paste any relevant output:

(nothing relevant)

Additional context see version-specific comments in initial section