Anthonyy232/Paperize

Paperize is a modern fully offline dynamic wallpaper changer application built for Android using Kotlin, Jetpack Compose, and Material 3

Kotlin

1,246

877 commits

updated Oct 13, 2026

See the code

README

Paperize

A dynamic wallpaper changer that keeps your device's aesthetic fresh and exciting

GitHub Downloads GitHub Release License F-Droid

Crowdin


Features

  • Dynamic Wallpaper Changer — Set your wallpaper to change at specific time intervals
  • Static & Live Wallpapers — Choose between traditional static wallpapers or smooth live wallpaper transitions
  • Multiple Image Formats — Supports JPG, PNG, WEBP, AVIF, HEIC/HEIF, BMP, GIF, TIFF, and SVG
  • Folder Support — Organize wallpapers into folders for auto-updating
  • Dual Screen Support — Choose the same or separate albums for home and lock screen
  • Wallpaper Effects — Apply various effects including brightness, blur, scaling, vignette, and more
  • On-Device Storage — All wallpapers and settings stored locally on your device

Download

Download from GitHub Get it on F-Droid Get it on IzzyOnDroid


Localization

Help translate Paperize into your language! Currently, most translations are provided using machine translation — contributions from native speakers are greatly appreciated.

Contribute on Crowdin →


Tech Stack

CategoryTechnology
LanguageKotlin
UI FrameworkJetpack Compose
Design SystemMaterial 3
Dependency InjectionDagger Hilt
DatabaseRoom
Image LoadingCoil
View all dependencies
  • Zoomable — Zoomable and pannable views

Architecture

  • AlbumRepository owns library mutations. Imports, reordering, removal, covers, and queue invalidation use Room transactions; provider scans run outside them.
  • DocumentSource and WallpaperRenderer (domain interfaces, Android implementations in data/source) keep use cases free of document-provider and bitmap-decoding details.
  • WallpaperRepository owns rotation queues and current-wallpaper records. Queue creation checks and writes in one transaction, including synchronized screens. Static changes and the live wallpaper engine both dequeue through ChangeWallpaperUseCase.dequeueNext.
  • WallpaperController shares static wallpaper application between the service and worker. Callers hold WallpaperChangeLock through application and schedule updates. The controller recycles applied bitmaps.
  • SettingsCoordinator persists wallpaper settings edits and applies their side effects (schedules, queues, immediate changes) one at a time; ViewModels only hold UI state. WallpaperChangeService helpers are the single way to start a manual change.
  • Repositories and use cases throw on failure. ViewModels, services, and workers catch at the edge, using runCatchingCancellable where they need a Result, so coroutine cancellation always propagates. Progress belongs to UI state.
  • Room migrations preserve versions 1–3 when upgrading to version 4. New schema changes must include a migration; destructive fallback is disabled.

Building from Source

Prerequisites

RequirementVersion
Java17
Android Gradle Plugin9.3.2
Gradle9.7.1
Compile SDK37 (Android 17)
Minimum SDK31 (Android 12)
Target SDK36

Build Steps

  1. Clone the repository

    git clone https://github.com/Anthonyy232/Paperize.git
    cd Paperize
    
  2. Open in Android Studio

    • Launch Android Studio
    • Select File > Open and navigate to the cloned repository
  3. Build and Run

    • Click ▶ Run to build and install on a connected device, or
    • Select Build > Generate Signed Bundle / APK to create a signed release

Verification

Set ANDROID_HOME to your Android SDK directory, or configure sdk.dir in local.properties. Use the checked-in Gradle wrapper:

./gradlew testDebugUnitTest lintDebug assembleDebug
./gradlew connectedDebugAndroidTest

On Windows, use gradlew.bat. Device tests require a running Android emulator or connected device (API 31 or newer). They cover rendering, scheduling, document provider failures, import rollback, album cleanup, and library controls.

Contributing

Contributions are welcome! Feel free to:

  • Report bugs by opening an issue
  • Suggest features or improvements
  • Submit pull requests

Support

If you find Paperize useful, consider supporting development through GitHub Sponsors (one-time or monthly). Thank you!


License

This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.

android
androidapp
jetpack-compose
kotlin
material-design
material-ui
modern-ui
mvvm
wallpaper
wallpaper-app
wallpaper-changer
wallpapers

Anthonyy232/Paperize

Paperize is a modern fully offline dynamic wallpaper changer application built for Android using Kotlin, Jetpack Compose, and Material 3

Kotlin

1,246

877 commits

updated Oct 13, 2026

See the code

README

Paperize

A dynamic wallpaper changer that keeps your device's aesthetic fresh and exciting

GitHub Downloads GitHub Release License F-Droid

Crowdin


Features

  • Dynamic Wallpaper Changer — Set your wallpaper to change at specific time intervals
  • Static & Live Wallpapers — Choose between traditional static wallpapers or smooth live wallpaper transitions
  • Multiple Image Formats — Supports JPG, PNG, WEBP, AVIF, HEIC/HEIF, BMP, GIF, TIFF, and SVG
  • Folder Support — Organize wallpapers into folders for auto-updating
  • Dual Screen Support — Choose the same or separate albums for home and lock screen
  • Wallpaper Effects — Apply various effects including brightness, blur, scaling, vignette, and more
  • On-Device Storage — All wallpapers and settings stored locally on your device

Download

Download from GitHub Get it on F-Droid Get it on IzzyOnDroid


Localization

Help translate Paperize into your language! Currently, most translations are provided using machine translation — contributions from native speakers are greatly appreciated.

Contribute on Crowdin →


Tech Stack

CategoryTechnology
LanguageKotlin
UI FrameworkJetpack Compose
Design SystemMaterial 3
Dependency InjectionDagger Hilt
DatabaseRoom
Image LoadingCoil
View all dependencies
  • Zoomable — Zoomable and pannable views

Architecture

  • AlbumRepository owns library mutations. Imports, reordering, removal, covers, and queue invalidation use Room transactions; provider scans run outside them.
  • DocumentSource and WallpaperRenderer (domain interfaces, Android implementations in data/source) keep use cases free of document-provider and bitmap-decoding details.
  • WallpaperRepository owns rotation queues and current-wallpaper records. Queue creation checks and writes in one transaction, including synchronized screens. Static changes and the live wallpaper engine both dequeue through ChangeWallpaperUseCase.dequeueNext.
  • WallpaperController shares static wallpaper application between the service and worker. Callers hold WallpaperChangeLock through application and schedule updates. The controller recycles applied bitmaps.
  • SettingsCoordinator persists wallpaper settings edits and applies their side effects (schedules, queues, immediate changes) one at a time; ViewModels only hold UI state. WallpaperChangeService helpers are the single way to start a manual change.
  • Repositories and use cases throw on failure. ViewModels, services, and workers catch at the edge, using runCatchingCancellable where they need a Result, so coroutine cancellation always propagates. Progress belongs to UI state.
  • Room migrations preserve versions 1–3 when upgrading to version 4. New schema changes must include a migration; destructive fallback is disabled.

Building from Source

Prerequisites

RequirementVersion
Java17
Android Gradle Plugin9.3.2
Gradle9.7.1
Compile SDK37 (Android 17)
Minimum SDK31 (Android 12)
Target SDK36

Build Steps

  1. Clone the repository

    git clone https://github.com/Anthonyy232/Paperize.git
    cd Paperize
    
  2. Open in Android Studio

    • Launch Android Studio
    • Select File > Open and navigate to the cloned repository
  3. Build and Run

    • Click ▶ Run to build and install on a connected device, or
    • Select Build > Generate Signed Bundle / APK to create a signed release

Verification

Set ANDROID_HOME to your Android SDK directory, or configure sdk.dir in local.properties. Use the checked-in Gradle wrapper:

./gradlew testDebugUnitTest lintDebug assembleDebug
./gradlew connectedDebugAndroidTest

On Windows, use gradlew.bat. Device tests require a running Android emulator or connected device (API 31 or newer). They cover rendering, scheduling, document provider failures, import rollback, album cleanup, and library controls.

Contributing

Contributions are welcome! Feel free to:

  • Report bugs by opening an issue
  • Suggest features or improvements
  • Submit pull requests

Support

If you find Paperize useful, consider supporting development through GitHub Sponsors (one-time or monthly). Thank you!


License

This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.

android
androidapp
jetpack-compose
kotlin
material-design
material-ui
modern-ui
mvvm
wallpaper
wallpaper-app
wallpaper-changer
wallpapers

Significant stargazers

Rex_sa

82 followers · starred Oct 2024

𝗛𝗼𝗹𝗶

233 followers · starred Jul 2024

b3nj5m1n

69 followers · starred Aug 2025

dylan

17 followers · starred Oct 2024