feat: video wallpapers #163

Merged
zach merged 12 commits from feat/video-wallpaper into main 2026-10-29 19:55:05 +01:00
Owner

What & why

Adds support for video wallpaper, mimicking mpvpaper's implementation.

Static image thumbnails are generated for videos which are used in image-previews throughout the project (e.g. wallpaper cropper in settings.)

Color scheme is generated by picking the "best" frame out of multiple frame samples to try and mitigate targeting a bad frame (black screen, in-progress fade, solid single color, etc.) by picking the frame with highest chroma.

Known issues

Currently FileSystemModel generates thumbnails for any video files it locates, such as recordings for the sidebar's recording list.
Currently hardcode transcodes unsupported video codecs into AV1

Related issue

No response

Type

New feature

Tested

  • Build succeeds
  • Existing tests pass
  • Manually verified

Breaking changes?

Shouldn't have any.

Checklist

  • CI passes (format, lint, typecheck)
  • Clean commits
  • No new warnings
  • Docs updated if needed
### What & why Adds support for video wallpaper, mimicking [mpvpaper](https://github.com/GhostNaN/mpvpaper)'s implementation. Static image thumbnails are generated for videos which are used in image-previews throughout the project (e.g. wallpaper cropper in settings.) Color scheme is generated by picking the _"best"_ frame out of multiple frame samples to try and mitigate targeting a bad frame (black screen, in-progress fade, solid single color, etc.) by picking the frame with highest chroma. ### Known issues Currently `FileSystemModel` generates thumbnails for **any** video files it locates, such as recordings for the sidebar's recording list. Currently hardcode transcodes unsupported video codecs into AV1 ### Related issue _No response_ ### Type New feature ### Tested - [ ] Build succeeds - [ ] Existing tests pass - [ ] Manually verified ### Breaking changes? Shouldn't have any. ### Checklist - [ ] CI passes (format, lint, typecheck) - [ ] Clean commits - [ ] No new warnings - [ ] Docs updated if needed
zach force-pushed feat/video-wallpaper from b6b3309f93 to f858fc5e9e 2026-10-25 01:36:33 +02:00 Compare
zach added 2 commits 2026-10-25 02:10:52 +02:00
chore: suppress more warnings
C++ / fmt (pull_request) Failing after 5s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 7s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 29s
Rust / build (pull_request) Successful in 59s
Python / verify (pull_request) Failing after 1m31s
Rust / fmt (pull_request) Successful in 33s
Rust / clippy (pull_request) Successful in 52s
cd44d27b74
zach force-pushed feat/video-wallpaper from 1252bebf87 to cd44d27b74 2026-10-25 02:10:52 +02:00 Compare
zach added 1 commit 2026-10-26 02:51:37 +01:00
feat: skip two-way copy for cuda devices when decoding video wallpapers + cache wallpapers as blobs in new database
C++ / fmt (pull_request) Failing after 11s
C++ / build (pull_request) Failing after 14s
C++ / clang-tidy (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Failing after 28s
Rust / build (pull_request) Successful in 47s
Python / verify (pull_request) Failing after 1m20s
Rust / fmt (pull_request) Successful in 28s
Rust / clippy (pull_request) Successful in 59s
9edbcbd610
zach added 1 commit 2026-10-26 03:03:25 +01:00
fix: restore code removed by incorrect replacement command
C++ / fmt (pull_request) Failing after 5s
C++ / clang-tidy (pull_request) Failing after 4s
C++ / build (pull_request) Failing after 9s
JS/TS / fmt (pull_request) Successful in 6s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Failing after 28s
Rust / build (pull_request) Successful in 48s
Python / verify (pull_request) Failing after 1m19s
Rust / fmt (pull_request) Successful in 36s
Rust / clippy (pull_request) Successful in 1m0s
de19fd6ac4
zach added 1 commit 2026-10-26 03:13:38 +01:00
fix: don't store dbPath as const
C++ / fmt (pull_request) Failing after 5s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 7s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Failing after 27s
Rust / build (pull_request) Successful in 47s
Python / verify (pull_request) Failing after 1m24s
Rust / fmt (pull_request) Successful in 30s
Rust / clippy (pull_request) Successful in 53s
dc0f222ace
zach added 1 commit 2026-10-26 14:47:54 +01:00
feat: add wallpaper transitions, store crop in database per-wallpaper, move CUDA context creation to async thread
C++ / fmt (pull_request) Failing after 5s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Failing after 28s
Python / verify (pull_request) Failing after 1m29s
Rust / build (pull_request) Successful in 53s
Rust / fmt (pull_request) Successful in 42s
Rust / clippy (pull_request) Successful in 1m4s
e655ec5bc7
zach added 1 commit 2026-10-27 02:15:28 +01:00
feat: add vaapi path for video wallpapers on generic gpus
C++ / fmt (pull_request) Failing after 6s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 11s
JS/TS / fmt (pull_request) Successful in 10s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Failing after 32s
Rust / build (pull_request) Successful in 52s
Python / verify (pull_request) Failing after 1m23s
Rust / fmt (pull_request) Successful in 51s
Rust / clippy (pull_request) Successful in 1m2s
b0cb43f75c
zach added 1 commit 2026-10-27 02:30:59 +01:00
fix: don't link eglDestroyImageKHR
C++ / fmt (pull_request) Failing after 7s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 7s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Failing after 27s
Rust / build (pull_request) Successful in 47s
Python / verify (pull_request) Failing after 1m24s
Rust / fmt (pull_request) Successful in 29s
Rust / clippy (pull_request) Successful in 45s
a56afd7fac
zach added 1 commit 2026-10-27 15:16:02 +01:00
fix: remove more uses of cliprect and finally fix workspace's layer texture
C++ / fmt (pull_request) Failing after 5s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 9s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Failing after 33s
Rust / build (pull_request) Successful in 48s
Python / verify (pull_request) Failing after 1m24s
Rust / fmt (pull_request) Successful in 32s
Rust / clippy (pull_request) Successful in 57s
b58b4fdc9c
zach added 1 commit 2026-10-27 23:00:31 +01:00
fix: fix sub-pixel layout arrangement for normalized resolutions
C++ / fmt (pull_request) Failing after 7s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 11s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Failing after 31s
Rust / build (pull_request) Successful in 49s
Python / verify (pull_request) Failing after 1m28s
Rust / fmt (pull_request) Successful in 30s
Rust / clippy (pull_request) Successful in 54s
118b8f482a
zach added 1 commit 2026-10-29 19:03:12 +01:00
Merge branch 'main' into feat/video-wallpaper
C++ / fmt (pull_request) Failing after 5s
C++ / build (pull_request) Failing after 9s
C++ / clang-tidy (pull_request) Failing after 10s
JS/TS / fmt (pull_request) Successful in 13s
JS/TS / lint (pull_request) Successful in 8s
Python / static (pull_request) Failing after 37s
Rust / build (pull_request) Successful in 50s
Python / verify (pull_request) Failing after 1m28s
Rust / fmt (pull_request) Successful in 39s
Rust / clippy (pull_request) Successful in 1m5s
fd05b3d4c4
zach marked the pull request as ready for review 2026-10-29 19:15:53 +01:00
zach added 1 commit 2026-10-29 19:50:08 +01:00
fix: don't use lambda expression
C++ / fmt (pull_request) Failing after 5s
C++ / build (pull_request) Failing after 10s
C++ / clang-tidy (pull_request) Failing after 11s
JS/TS / fmt (pull_request) Successful in 7s
JS/TS / lint (pull_request) Successful in 9s
Python / static (pull_request) Successful in 30s
Rust / build (pull_request) Successful in 50s
Python / verify (pull_request) Failing after 1m27s
Rust / fmt (pull_request) Successful in 31s
Rust / clippy (pull_request) Successful in 58s
abdde2450d
zach merged commit 90184bff58 into main 2026-10-29 19:55:05 +01:00
Sign in to join this conversation.