aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/modules/status/StatusPage.qml
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-06 10:27:19 +0200
committerDanilo M. <danix@danix.xyz>2026-10-06 10:27:19 +0200
commite4f4a32415b47d6d8332e82364cea669db07c00f (patch)
tree017c5b431539f1835f0fe67c0832bd814f04228b /desktop/modules/status/StatusPage.qml
parent595d42fbd4ee206d2b16d033e1be337f9c97eee7 (diff)
downloadquickshell-e4f4a32415b47d6d8332e82364cea669db07c00f.tar.gz
quickshell-e4f4a32415b47d6d8332e82364cea669db07c00f.zip
feat(appearance): wallpapers by folder, system ones, quality borders
The wallpaper tab showed every image under ~/Pictures/wallpapers in one grid. It now groups them by top-level folder, each behind a header that opens and closes it, and adds the distribution's /usr/share/wallpapers: its loose images as "system", its Plasma packages as "Plasma". A package carries one picture at several resolutions under contents/images/, some with a dark version under contents/images_dark/, so it shows once, the dark version where there is one and the largest of those, labelled with the package name rather than "5120x2880.png". Groups are keyed apart from their names, so a local folder called "system" does not share open state with the system group. Open state lives in the Wallpapers singleton, because the panel is destroyed on close. The list is one flat ListView of rows, a header or a row of thumbnails, so only rows in view (plus cacheBuffer) are instantiated and decode. A first version made each folder one delegate, which loaded every image of a folder as soon as it opened; the system group alone is 727. The rows live in a ListModel and a toggle inserts or removes only that folder's rows: assigning a fresh JS array instead resets the view, which loses the scroll position and re-decodes everything visible. cacheBuffer is clamped at 0 because the column's width reads negative before layout and the ListView warns on each negative value. The scan's find calls go through a small shell function rather than eval. Each thumbnail's 2px border tells how it will look on the targeted screen. `file -N -0` reads every image's size from its header after each scan, ~0.6s for 1161; the NUL keeps names containing ": " intact, and the size is the last WxH in the description because a JPEG's "density 72x72" comes first. wallp runs swaybg -m fill, which scales to cover, so the measure is the enlargement factor: <=1 green, <=1.33 yellow, else red, in the udt palette colours. A note under the mock screens, in that colour, gives the size, the factor and why it will look soft or pixelated, for the hovered image or else the staged one. The staged image keeps its accent border. Screen sizes are fixed, as the mock's already were. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'desktop/modules/status/StatusPage.qml')
0 files changed, 0 insertions, 0 deletions