• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

elParaguayo / qtile / 28045950396
83%

Build:
DEFAULT BRANCH: master
Ran 23 Jun 2026 06:14PM UTC
Jobs 6
Files 156
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

17 Jun 2026 08:31AM UTC coverage: 82.712% (+0.04%) from 82.673%
28045950396

push

github

elParaguayo
wayland: Improve icon rendering and scaling on HiDPI displays

On HiDPI displays with a scale factor set, internal windows are scaled
by Cairo, resulting in blurriness when images are upscaled

Here we overcome that with a mechanism to rasterize images at their
final scaled size,  without the user (e.g. a widget authot) having to
think about the display scale factor*

Changes:

Refactor Img class to:
- Support raw image data
- Queue image operations
Add a draw_image helper to handle scaling operations
Add tests

Update icon handling for widgets:
- TaskList
- Statusnotifer
- Image
- Volume
- BatteryIcon

*What this means when using images in widgets:

Scale image(Img) as required, apply any additional operations to image if
required, and use draw_image - all the extra scaling described above is
handled automatically - no blurriness

SVGs should be rendered "perfectly"

For bitmap images (e.g. PNG), as long as the image size is at least as
large as the scaled image size, there should no/minimal blurriness

If a bitmap image is smaller than the scaled image size, it will
be upscaled and there will be some blurriness

In general, use a SVG if possible! When using a bitmap, try and ensure
it has dims >= icon_size * display_scale_factor

Conceptual overview:

Maybe best illustrated with an example:

- We want a 16x16 icon on a display with scale factor of 1.5
- Rasterize image at 24x24 px (1.5 * 16)
- Downscale (queued scale 1/1.5x) back to 16 x 16 px for use in widget
- When the internal window image buffer is upscaled to final resolution,
  this is effectively another queued scale (1.5x)
- The two "queued" scale operations cancel out leaving us with our
  original rasterized image (24x24)

Sometimes we will want to perform additional operations on an image such
as pasting (overlaying) and paint_masking (painting the image in a
single colour). When we do this we need to avoid premature
rasterisation, which will result in a loss of image quality when
scalin... (continued)

148 of 172 new or added lines in 8 files covered. (86.05%)

3 existing lines in 3 files now uncovered.

17219 of 20818 relevant lines covered (82.71%)

4.5 hits per line

Uncovered Changes

Lines Coverage ∆ File
16
90.06
-2.79% libqtile/images.py
4
69.53
-0.14% libqtile/widget/helpers/status_notifier/statusnotifier.py
2
77.51
-0.97% libqtile/widget/tasklist.py
1
54.05
0.64% libqtile/widget/battery.py
1
71.01
-0.21% libqtile/widget/volume.py

Coverage Regressions

Lines Coverage ∆ File
1
69.53
-0.14% libqtile/widget/helpers/status_notifier/statusnotifier.py
1
77.51
-0.97% libqtile/widget/tasklist.py
1
71.01
-0.21% libqtile/widget/volume.py
Jobs
ID Job ID Ran Files Coverage
1 3.14-x11 - 28045950396.1 23 Jun 2026 06:18PM UTC 156
76.79
GitHub Action Run
2 3.12-x11 - 28045950396.2 23 Jun 2026 06:18PM UTC 156
76.79
GitHub Action Run
3 3.13-wayland - 28045950396.3 23 Jun 2026 06:18PM UTC 156
73.28
GitHub Action Run
4 3.12-wayland - 28045950396.4 23 Jun 2026 06:18PM UTC 156
73.28
GitHub Action Run
5 3.13-x11 - 28045950396.5 23 Jun 2026 06:18PM UTC 156
76.82
GitHub Action Run
6 3.14-wayland - 28045950396.6 23 Jun 2026 06:18PM UTC 156
73.28
GitHub Action Run
Source Files on build 28045950396
  • Tree
  • List 156
  • Changed 12
  • Source Changed 0
  • Coverage Changed 12
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • f94a0dbb on github
  • Prev Build on master (#27466354537)
  • Next Build on master (#28256503612)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc