Feat: MD3 wallpaper launcher carousel #146

Merged
zach merged 16 commits from feat/wallpaper-picker-rework into main 2026-08-17 18:01:41 +02:00
Owner

What & why

Launcher carousel is outdated and deserves a refresh. Follows Material Design 3 Hero-ish design. Functionality will be the same as before.

Will be merged once #143 is merged due to singleton naming.

Fixes a crash due to memory leak

Oops.

Related issue

No response

Type

New feature

Tested

  • Build succeeds
  • Existing tests pass
  • Manually verified

Breaking changes?

No response

Checklist

  • CI passes (format, lint, typecheck)
  • Clean commits
  • No new warnings
  • Docs updated if needed
### What & why Launcher carousel is outdated and deserves a refresh. Follows [Material Design 3 Hero-ish](https://m3.material.io/components/carousel/specs) design. Functionality will be the same as before. Will be merged once #143 is merged due to singleton naming. ### Fixes a crash due to memory leak Oops. ### Related issue _No response_ ### Type New feature ### Tested - [x] Build succeeds - [x] Existing tests pass - [x] Manually verified ### Breaking changes? _No response_ ### Checklist - [x] CI passes (format, lint, typecheck) - [x] Clean commits - [x] No new warnings - [x] Docs updated if needed
zach added 1 commit 2026-08-14 00:21:38 +02:00
MD3 wallpaper launcher carousel
C++ / fmt (pull_request) Successful in 4s
JS/TS / fmt (pull_request) Successful in 20s
JS/TS / lint (pull_request) Successful in 20s
Python / lint (pull_request) Successful in 32s
Python / fmt (pull_request) Successful in 36s
Python / test (pull_request) Successful in 1m3s
Python / typecheck (pull_request) Failing after 1m8s
C++ / build (pull_request) Successful in 1m49s
Rust / build (pull_request) Successful in 1m31s
Rust / fmt (pull_request) Successful in 47s
Rust / clippy (pull_request) Successful in 1m32s
Python / buildcheck (pull_request) Successful in 2m34s
C++ / clang-tidy (pull_request) Successful in 3m22s
75de349ff4
zach added 1 commit 2026-08-14 19:18:24 +02:00
Merge branch 'main' into feat/wallpaper-picker-rework
C++ / fmt (pull_request) Successful in 8s
JS/TS / fmt (pull_request) Successful in 13s
JS/TS / lint (pull_request) Successful in 15s
Python / fmt (pull_request) Successful in 25s
Python / lint (pull_request) Successful in 28s
Python / test (pull_request) Successful in 55s
Python / typecheck (pull_request) Failing after 58s
Rust / fmt (pull_request) Successful in 44s
C++ / build (pull_request) Successful in 3m35s
Rust / build (pull_request) Successful in 1m53s
Python / buildcheck (pull_request) Successful in 2m36s
Rust / clippy (pull_request) Successful in 1m28s
C++ / clang-tidy (pull_request) Successful in 5m15s
a13daf27a6
zach added 1 commit 2026-08-14 19:23:52 +02:00
clean up imports
C++ / fmt (pull_request) Successful in 4s
JS/TS / fmt (pull_request) Successful in 19s
JS/TS / lint (pull_request) Successful in 23s
Python / fmt (pull_request) Successful in 35s
Python / lint (pull_request) Successful in 34s
Python / test (pull_request) Successful in 1m1s
Python / typecheck (pull_request) Failing after 1m0s
Rust / fmt (pull_request) Successful in 55s
Rust / build (pull_request) Successful in 1m41s
C++ / build (pull_request) Successful in 2m37s
Rust / clippy (pull_request) Successful in 1m19s
Python / buildcheck (pull_request) Successful in 2m27s
C++ / clang-tidy (pull_request) Successful in 3m55s
88a2808a47
zach added 1 commit 2026-08-14 19:49:53 +02:00
improve image caching for better performance
C++ / fmt (pull_request) Successful in 4s
JS/TS / fmt (pull_request) Successful in 27s
JS/TS / lint (pull_request) Successful in 33s
Python / fmt (pull_request) Successful in 27s
Python / lint (pull_request) Successful in 30s
Python / test (pull_request) Successful in 59s
Python / typecheck (pull_request) Failing after 1m5s
C++ / build (pull_request) Successful in 2m26s
Rust / build (pull_request) Successful in 1m30s
Rust / fmt (pull_request) Successful in 1m12s
Python / buildcheck (pull_request) Successful in 2m19s
Rust / clippy (pull_request) Successful in 1m56s
C++ / clang-tidy (pull_request) Successful in 4m1s
ec80adf0a5
zach added 1 commit 2026-08-16 12:51:00 +02:00
Merge branch 'main' into feat/wallpaper-picker-rework
C++ / fmt (pull_request) Successful in 9s
JS/TS / fmt (pull_request) Successful in 13s
JS/TS / lint (pull_request) Successful in 15s
Python / fmt (pull_request) Successful in 26s
Python / lint (pull_request) Successful in 24s
Python / test (pull_request) Successful in 55s
Python / typecheck (pull_request) Successful in 1m9s
Rust / fmt (pull_request) Successful in 41s
Python / buildcheck (pull_request) Successful in 2m36s
C++ / build (pull_request) Successful in 4m3s
Rust / build (pull_request) Successful in 1m53s
Rust / clippy (pull_request) Successful in 1m44s
C++ / clang-tidy (pull_request) Successful in 8m35s
0c788ca4dc
zach added 1 commit 2026-08-16 17:59:31 +02:00
move carouselview to standalone c++ component, fix crash due to memory leak in wallpaper object creation
C++ / fmt (pull_request) Successful in 3s
JS/TS / lint (pull_request) Successful in 18s
JS/TS / fmt (pull_request) Successful in 17s
Python / fmt (pull_request) Successful in 28s
Python / lint (pull_request) Successful in 30s
Python / test (pull_request) Successful in 1m5s
Python / typecheck (pull_request) Successful in 1m24s
Rust / fmt (pull_request) Successful in 31s
C++ / build (pull_request) Successful in 2m21s
Rust / build (pull_request) Successful in 1m47s
Python / buildcheck (pull_request) Successful in 2m18s
Rust / clippy (pull_request) Successful in 1m12s
C++ / clang-tidy (pull_request) Successful in 4m3s
a41c0adb3e
zach added 1 commit 2026-08-16 18:03:55 +02:00
Merge branch 'main' into feat/wallpaper-picker-rework
C++ / fmt (pull_request) Successful in 4s
JS/TS / fmt (pull_request) Successful in 15s
JS/TS / lint (pull_request) Successful in 16s
Python / static (pull_request) Successful in 58s
Rust / fmt (pull_request) Successful in 1m9s
C++ / build (pull_request) Successful in 2m25s
Rust / build (pull_request) Successful in 2m19s
Rust / clippy (pull_request) Successful in 1m53s
Python / verify (pull_request) Successful in 3m37s
C++ / clang-tidy (pull_request) Successful in 7m5s
4037a1dd0f
zach changed title from WIP: MD3 wallpaper launcher carousel to Feat: MD3 wallpaper launcher carousel 2026-08-16 18:04:24 +02:00
zach added 1 commit 2026-08-16 18:14:10 +02:00
clean-up plugin files
C++ / fmt (pull_request) Successful in 4s
JS/TS / fmt (pull_request) Successful in 9s
JS/TS / lint (pull_request) Successful in 22s
Rust / fmt (pull_request) Successful in 56s
Python / static (pull_request) Successful in 1m0s
C++ / build (pull_request) Successful in 2m9s
Rust / build (pull_request) Successful in 2m8s
Rust / clippy (pull_request) Successful in 1m9s
Python / verify (pull_request) Successful in 2m57s
C++ / clang-tidy (pull_request) Successful in 3m58s
654632128f
zach added 1 commit 2026-08-16 20:28:30 +02:00
improve sizing and dynamic width for view
C++ / fmt (pull_request) Successful in 6s
JS/TS / fmt (pull_request) Successful in 12s
JS/TS / lint (pull_request) Successful in 17s
Python / static (pull_request) Successful in 1m2s
Rust / fmt (pull_request) Successful in 1m5s
C++ / build (pull_request) Successful in 2m36s
Rust / build (pull_request) Successful in 2m27s
Rust / clippy (pull_request) Successful in 1m51s
Python / verify (pull_request) Successful in 3m33s
C++ / clang-tidy (pull_request) Successful in 7m12s
4e75f21446
zach added 1 commit 2026-08-16 20:29:53 +02:00
clean-up plugin files
C++ / fmt (pull_request) Successful in 9s
JS/TS / fmt (pull_request) Successful in 11s
JS/TS / lint (pull_request) Successful in 15s
Python / static (pull_request) Successful in 55s
Rust / fmt (pull_request) Successful in 32s
Rust / build (pull_request) Successful in 1m52s
C++ / build (pull_request) Successful in 3m56s
Rust / clippy (pull_request) Successful in 1m30s
Python / verify (pull_request) Successful in 3m3s
C++ / clang-tidy (pull_request) Successful in 5m20s
43f070f887
zach requested review from AramJonghu 2026-08-16 20:30:41 +02:00
zach requested review from Inorishio 2026-08-16 20:30:41 +02:00
zach added 1 commit 2026-08-16 20:45:58 +02:00
fix currentItem property and signals
C++ / fmt (pull_request) Successful in 4s
JS/TS / lint (pull_request) Successful in 16s
JS/TS / fmt (pull_request) Successful in 18s
Python / static (pull_request) Successful in 58s
Rust / fmt (pull_request) Successful in 59s
C++ / build (pull_request) Successful in 2m16s
Rust / build (pull_request) Successful in 2m5s
Rust / clippy (pull_request) Successful in 1m30s
Python / verify (pull_request) Successful in 2m43s
C++ / clang-tidy (pull_request) Successful in 3m58s
43647dd486
AramJonghu requested changes 2026-08-16 22:04:56 +02:00
Dismissed
AramJonghu left a comment
Collaborator

A few things of note.

  • Carousel dragging with cursor can only be done if you click and drag in between the images. Dragging should be able to be done when click starts on image.
  • Touch screen behaves the same as above. But as another note; swiping does not accelerate the carousel moving. This makes it quite tedious and slow to drag to find the correct image.
  • #145 could be included in this PR as it deals with a launcher command.

Other than those notes, wallpapers load consistently (not always snappy, but some files are 20MB+ large). Looks solid otherwise.

A few things of note. - Carousel dragging with cursor can only be done if you click and drag in between the images. Dragging should be able to be done when click starts on image. - Touch screen behaves the same as above. But as another note; swiping does not accelerate the carousel moving. This makes it quite tedious and slow to drag to find the correct image. - #145 could be included in this PR as it deals with a launcher command. Other than those notes, wallpapers load consistently (not always snappy, but some files are 20MB+ large). Looks solid otherwise.
Author
Owner
  • Carousel dragging with cursor can only be done if you click and drag in between the images. Dragging should be able to be done when click starts on image.
  • Touch screen behaves the same as above. But as another note; swiping does not accelerate the carousel moving. This makes it quite tedious and slow to drag to find the correct image.

I noticed this too, I just forgot to mention it in the PR. I honestly have no idea how to fix it, haha. Mainly because it's a delegate from QML that is stealing input, while it needs to propagate it to the C++ component underneath.

  • #145 could be included in this PR as it deals with a launcher command.

I will look into it.

> - Carousel dragging with cursor can only be done if you click and drag in between the images. Dragging should be able to be done when click starts on image. > - Touch screen behaves the same as above. But as another note; swiping does not accelerate the carousel moving. This makes it quite tedious and slow to drag to find the correct image. I noticed this too, I just forgot to mention it in the PR. I honestly have no idea how to fix it, haha. Mainly because it's a delegate from QML that is stealing input, while it needs to propagate it to the C++ component underneath. > - #145 could be included in this PR as it deals with a launcher command. I will look into it.
zach added 1 commit 2026-08-16 23:13:42 +02:00
fix search trickle through actions and variants view and mouse event stealing by wallpapertile
C++ / fmt (pull_request) Successful in 4s
JS/TS / fmt (pull_request) Successful in 7s
JS/TS / lint (pull_request) Successful in 10s
Python / static (pull_request) Successful in 1m6s
Rust / fmt (pull_request) Successful in 1m3s
Rust / build (pull_request) Successful in 2m17s
Rust / clippy (pull_request) Successful in 1m29s
C++ / build (pull_request) Successful in 2m48s
Python / verify (pull_request) Successful in 3m16s
C++ / clang-tidy (pull_request) Successful in 4m17s
69c2bfae9d
Author
Owner

I honestly have no idea how to fix it, haha.

I lied apparently. Fixed in 69c2bfae9d

> I honestly have no idea how to fix it, haha. I lied apparently. Fixed in [69c2bfae9d](https://git.zach-dev.cc/zach/z-bar-qt/commit/69c2bfae9d5b7effd44d5a4b810cd74d0da62a83)
zach added 1 commit 2026-08-16 23:24:52 +02:00
Merge branch 'main' into feat/wallpaper-picker-rework
C++ / fmt (pull_request) Successful in 3s
JS/TS / fmt (pull_request) Successful in 11s
JS/TS / lint (pull_request) Successful in 21s
Python / static (pull_request) Successful in 1m6s
Rust / fmt (pull_request) Successful in 55s
Rust / build (pull_request) Successful in 2m13s
C++ / build (pull_request) Successful in 2m38s
Rust / clippy (pull_request) Successful in 1m20s
Python / verify (pull_request) Successful in 3m10s
C++ / clang-tidy (pull_request) Successful in 4m3s
31f73b05e4
Collaborator

Just tested it.

Issue #145 is resolved.

  • Touchscreen dragging does not seem to work in the last revision.

I did not get an answer for an acceleration from dragging the carousel. What do you think of the idea? Especially on touchscreen, but with mouse as well, dragging is tiresome.

Just tested it. Issue #145 is resolved. - Touchscreen dragging does not seem to work in the last revision. I did not get an answer for an acceleration from dragging the carousel. What do you think of the idea? Especially on touchscreen, but with mouse as well, dragging is tiresome.
Author
Owner

I need to figure out how to do it, but yeah sure.

I need to figure out how to do it, but yeah sure.
zach added 1 commit 2026-08-17 10:37:05 +02:00
flick velocity and deceleration
C++ / fmt (pull_request) Successful in 3s
JS/TS / fmt (pull_request) Successful in 15s
JS/TS / lint (pull_request) Successful in 17s
Python / static (pull_request) Successful in 58s
Rust / fmt (pull_request) Successful in 1m4s
Rust / build (pull_request) Successful in 2m14s
C++ / build (pull_request) Successful in 2m36s
Rust / clippy (pull_request) Successful in 1m30s
Python / verify (pull_request) Successful in 2m53s
C++ / clang-tidy (pull_request) Successful in 4m4s
babfe4b3de
zach added 1 commit 2026-08-17 13:24:23 +02:00
Merge branch 'main' into feat/wallpaper-picker-rework
C++ / fmt (pull_request) Successful in 5s
JS/TS / fmt (pull_request) Successful in 19s
JS/TS / lint (pull_request) Successful in 21s
Python / static (pull_request) Successful in 1m1s
Rust / fmt (pull_request) Successful in 1m2s
Rust / build (pull_request) Successful in 2m8s
Rust / clippy (pull_request) Successful in 1m31s
C++ / build (pull_request) Successful in 2m42s
Python / verify (pull_request) Successful in 2m57s
C++ / clang-tidy (pull_request) Successful in 4m3s
d3e781731e
Collaborator

All seems to be working well.
I've no found issues with the wallpaper picker in launcher.

All seems to be working well. I've no found issues with the wallpaper picker in launcher.
zach added 1 commit 2026-08-17 16:55:02 +02:00
Merge branch 'main' into feat/wallpaper-picker-rework
C++ / fmt (pull_request) Successful in 11s
JS/TS / fmt (pull_request) Successful in 16s
JS/TS / lint (pull_request) Successful in 15s
Python / static (pull_request) Successful in 54s
Rust / fmt (pull_request) Successful in 34s
Rust / build (pull_request) Successful in 1m54s
C++ / build (pull_request) Successful in 3m51s
Rust / clippy (pull_request) Successful in 1m34s
Python / verify (pull_request) Successful in 3m5s
C++ / clang-tidy (pull_request) Successful in 5m15s
ddfa6cd3c4
AramJonghu approved these changes 2026-08-17 17:32:40 +02:00
AramJonghu left a comment
Collaborator

Acceleration and deceleration works. I was interested about the deceleration. Is it intentionally different from the settings acceleration? For example in Settings->Appearance->Wallpapers, here scrolling is a different motion than the wallpaper carousel.

For the record, touchscreen dragging is not resolved. I am aware this is hard or impossible for you to test, so it is fine to drop this for this PR.

Other than those, approved.

Acceleration and deceleration works. I was interested about the deceleration. Is it intentionally different from the settings acceleration? For example in Settings->Appearance->Wallpapers, here scrolling is a different motion than the wallpaper carousel. For the record, touchscreen dragging is not resolved. I am aware this is hard or impossible for you to test, so it is fine to drop this for this PR. Other than those, approved.
Author
Owner

I mentioned you in the group chat about why. I don't have the source code for Qt's Flickable type to replicate the velocity.

I mentioned you in the group chat about why. I don't have the source code for Qt's `Flickable` type to replicate the velocity.
zach merged commit 69d8f6d727 into main 2026-08-17 18:01:41 +02:00
zach deleted branch feat/wallpaper-picker-rework 2026-08-17 18:01:42 +02:00
Sign in to join this conversation.