AI-Powered Wallpaper App That Learns Your Aesthetic
Next-generation wallpaper personalization powered by MobileNetV4
Vanderwaals is a cutting-edge Android wallpaper application that leverages state-of-the-art on-device machine learning to understand your unique aesthetic preferences and automatically curate wallpapers you'll love. Powered by MobileNetV4-Conv-Small, it delivers unparalleled personalization without compromising your privacy.
- π€ Advanced ML Engine: MobileNetV4-Conv-Small neural network with 1280-dimensional embeddings for superior aesthetic understanding
- π Massive Curated Library: 6,000+ wallpapers from GitHub collections + 5,400+ from Bing's photography archive
- π Privacy-First: 100% offline ML processing, zero analytics, no data collection
- β‘ Lightning Fast: 9x faster wallpaper changes (~5s) with intelligent pre-caching and chunked processing
- π¨ Revolutionary Glassmorphism: True Apple-style liquid glass effect that Jetpack Compose can't natively achieveβengineered around platform limitations
- π¦ 90% Smaller Downloads: Quantized embeddings reduce manifest size from 60MB to ~6MB
- 1280D Embeddings: Upgraded from MobileNetV3 (576D) to MobileNetV4-Conv-Small for 2.2x more detailed aesthetic understanding
- 80% Faster Inference: Optimized architecture delivers faster on-device processing
- Improved Accuracy: Better recognition of artistic styles, moods, and compositional elements
- 9x Faster Changes: Wallpaper change time reduced from ~45s to ~5s through chunked processing
- Memory Efficient: Peak memory usage reduced from 190MB to ~40MB with batched operations
- Pre-Caching: Second wallpaper change is near-instant with background computation
- 90% Smaller Downloads: Quantized embeddings reduce manifest from 60MB to ~6MB
- Fast Initialization: First like immediately shapes recommendations (no more waiting)
- Instant Dislike: Automatically applies new wallpaper when you dislike one
- Flexible Intervals: New 3h, 6h, 12h auto-change options
- Daily Playlist: 15 pre-selected wallpapers for "Every Unlock" mode
- Smart Migration: Seamless upgrade from v3.x with user-friendly dialog
- Samsung Optimized: WakeLock and foreground service for One UI battery restrictions
- Auto-Change Fix: Works reliably even after app swipe (foreground service)
- Android 15+ Boot Fix: Resolved ForegroundServiceStartNotAllowedException crashes
- Smart Crop 2.0: Lossless PNG caching and resolution preservation
- True Liquid Glass: Revolutionary glassmorphism technique that solves Compose's blur limitations
- Pre-rendered backgrounds with chromatic aberration and barrel distortion
- Slice-based rendering for pixel-perfect glass cards
- 80px Gaussian blur + RGB separation for authentic Apple-style frosted glass
- Enhanced Glassmorphism: Multi-layer blur effects and glassmorphic cards throughout
- Light Mode: Full light theme support for all screens
- Bing Selection UI: Interactive "Radio Cards" for meaningful source selection
- Enhanced Analytics: Personalization insights and learning progress tracking
- Android 12.0 (API 31) or higher
- ~50MB storage space (app + cache)
- Internet connection for initial wallpaper sync (then works offline)
Start fresh with algorithm-selected wallpapers from curated collections. The app learns your taste as you provide feedback with lightning-fast initializationβyour first like immediately shapes recommendations.
Upload one favorite wallpaper and instantly get 100+ similar matches. The advanced ML algorithm analyzes:
- Deep Visual Features (70%): MobileNetV4 1280D embeddings capture artistic style, composition, and mood with 2.2x more detail than previous models
- Color Palette (20%): LAB color space analysis for perceptually accurate matching
- Category Affinity (10%): Learns your preference for categories (gruvbox, nord, nature, minimal, etc.)
- MobileNetV4-Conv-Small: State-of-the-art 1280-dimensional embeddings for superior aesthetic understanding
- Fast Initialization: First like/download immediately sets preference baseline for instant personalization
- Exponential Moving Average (EMA): Smoothly integrates new preferences without forgetting old ones
- Implicit Feedback: Learns from wallpaper duration (quick changes = dislike, long duration = like)
- Temporal Diversity: Prevents repetitive categories with intelligent recency penalties
- Progressive Trust: Balances original embeddings with learned preferences over time
-
GitHub Collections (6,000+ wallpapers):
- dharmx/walls - Curated aesthetic wallpapers
- D3Ext/aesthetic-wallpapers - Minimalist designs
- makccr/wallpapers - Linux ricing wallpapers
- Gingeh/wallpapers - Anime aesthetics
- FrenzyExists/wallpapers - Dark themes
- Plus additional curated collections
-
Bing Photography (5,400+ archive):
- Bing Lite: ~1,000 wallpapers from last 3 years
- Bing Full: Complete archive from 2009-present
- Daily featured wallpapers in UHD quality
- Professional photography from around the world
- Full MobileNetV4 embedding support
-
Smart Auto-Sync: Automatic weekly content updates from all sources with incremental updates
-
90% Smaller Downloads: Quantized embeddings reduce manifest from 60MB to ~6MB
-
Auto-Change Modes:
- Every device unlock (with Daily Playlist systemβ15 pre-selected wallpapers for instant changes)
- Fixed intervals (1h, 3h, 6h, 12h, 24h)
- Daily at custom time
- Manual only
-
Apply To:
- Lock screen
- Home screen
- Both screens simultaneously
-
Smart Features:
- Pre-Caching: Background computation for near-instant second changes
- Instant Dislike: Automatically applies new wallpaper when you dislike one
- Samsung Optimized: Dedicated "Keep-Alive" service with WakeLock for One UI battery restrictions
- Reliable Background Processing: Foreground service ensures consistent auto-change even after app swipe
- Smart Crop: Intelligent image cropping using saliency detection to focus on interesting regions
- Chronological Timeline: View all applied wallpapers with timestamps
- Quick Actions: Like β€οΈ, Dislike π, or Download wallpapers directly from history
- Smart Grouping: Date-based sections (Today / Yesterday / Month Year)
- Full-Screen Preview: Zoomable image viewer for detailed inspection
- Personalization Insights: Track learning progress and category preferences
- True Liquid Glass Effect: Revolutionary Apple-style glassmorphism that Jetpack Compose can't natively achieve
- Pre-rendered backgrounds with chromatic aberration and edge distortion
- Slice-based rendering - cards display perfectly aligned background slices
- Multi-layer processing: Heavy Gaussian blur (80px) + chromatic RGB separation + barrel distortion
- Smart Launcher technique: Process once, render infinitely - solves Compose's real-time blur limitations
- Opaque illusion: Cards are solid surfaces that create the perception of transparency
- Material 3 Design: Latest Material Design 3 guidelines with modern components
- Dynamic Colors: Automatic color extraction from wallpapers (Android 12+)
- Dark Theme: AMOLED-optimized pure black theme with "Deep Ocean" aesthetics
- Light Mode: Full light mode support for all screens
- Smooth Animations: Polished transitions with Lottie animations and haptic feedback
- Adaptive Layout: Optimized for phones and tablets with responsive design
Vanderwaals follows Clean Architecture principles with MVVM pattern, leveraging modern Android development best practices.
π me.avinas.vanderwaals/
βββ π algorithm/ # Machine Learning Components
β βββ EmbeddingExtractor # MobileNetV4 TFLite wrapper (1280D)
β βββ SimilarityCalculator # Cosine similarity + color matching
β βββ PreferenceUpdater # EMA learning algorithm
β βββ EnhancedImageAnalyzer # Color, composition, mood analysis
β βββ WallpaperScorer # Multi-factor scoring system
β βββ SmartCrop # Intelligent image cropping
β
βββ π data/ # Data Layer
β βββ π entity/ # Room Database Entities
β β βββ WallpaperMetadata # ID, URL, embedding (1280D), colors, category
β β βββ WallpaperHistory # Applied wallpapers with feedback
β β βββ UserPreferences # Learned preference vector (1280D)
β β βββ CategoryPreferences # Category-level tracking
β β βββ DownloadQueue # Queued downloads
β βββ π dao/ # Database Access Objects
β β βββ WallpaperMetadataDao
β β βββ WallpaperHistoryDao
β β βββ UserPreferencesDao
β β βββ DownloadQueueDao
β βββ π repository/ # Repository Pattern
β β βββ WallpaperRepository
β β βββ PreferenceRepository
β β βββ ManifestRepository # Multi-version manifest support (v1/v2/v3)
β β βββ BingRepository
β βββ π datastore/ # Preferences Storage
β βββ SettingsDataStore # Version-aware settings with migration
β
βββ π domain/ # Business Logic Layer
β βββ π usecase/ # Use Cases (Single Responsibility)
β βββ ExtractEmbeddingUseCase # TFLite inference (MobileNetV4)
β βββ FindSimilarWallpapersUseCase # Similarity search with chunked processing
β βββ SelectNextWallpaperUseCase # Epsilon-greedy selection with pre-caching
β βββ ProcessFeedbackUseCase # Explicit feedback learning
β βββ ProcessImplicitFeedbackUseCase # Duration-based learning
β βββ UpdatePreferencesUseCase # EMA preference updates
β βββ GetRankedWallpapersUseCase # Similarity ranking
β βββ SyncWallpaperCatalogUseCase # Incremental manifest sync
β βββ InitializePreferencesUseCase # Cold start with fast initialization
β
βββ π network/ # Network Layer
β βββ GitHubApiService # GitHub raw file API
β βββ BingApiService # Bing wallpaper API
β βββ π dto/ # Data Transfer Objects
β βββ ManifestDto # Multi-version manifest support
β
βββ π worker/ # Background Processing
β βββ WallpaperChangeWorker # Auto wallpaper changes with foreground service
β βββ CatalogSyncWorker # Weekly manifest sync with version detection
β βββ BatchDownloadWorker # Background downloads
β βββ ImplicitFeedbackWorker # Duration tracking
β βββ CleanupWorker # Cache management
β βββ WorkScheduler # WorkManager coordination
β
βββ π receiver/ # Broadcast Receivers
β βββ DeviceUnlockReceiver # Unlock-triggered changes
β βββ BootCompletedReceiver # Restart work schedules
β
βββ π service/ # Foreground Services
β βββ WallpaperMonitorService # Samsung-optimized with WakeLock
β
βββ π ui/ # Presentation Layer (Jetpack Compose)
βββ π main/ # Main screen with wallpaper preview
βββ π history/ # Feedback history & analytics
βββ π settings/ # App configuration
βββ π onboarding/ # First-time setup wizard
βββ π components/ # Reusable UI components (Glassmorphic cards)
- TensorFlow Lite / LiteRT - On-device ML inference with GPU acceleration
- MobileNetV4-Conv-Small - State-of-the-art image embedding model (1280 dimensions, 80% faster than V3)
- Jetpack Compose - Modern declarative UI toolkit
- Material 3 - Latest Material Design components
- Room - Type-safe SQLite database with migrations
- WorkManager - Reliable background task scheduling
- DataStore - Preferences storage with Flow support
- Navigation Compose - Type-safe screen navigation
- Lifecycle - Lifecycle-aware components
- Dagger Hilt - Dependency injection framework
- Retrofit - Type-safe REST API client
- OkHttp - HTTP client with interceptors and connection pooling
- Kotlin Serialization - Type-safe JSON serialization
- Landscapist Glide - Compose-native image loading with LRU cache
- Lottie Compose - High-quality animations
- Accompanist - Jetpack Compose utilities
- Zoomable - Pinch-to-zoom image viewer
- Android Palette - Color extraction from images
- Kotlin Coroutines - Asynchronous programming with Flow
- KSP - Kotlin Symbol Processing for annotation processing
- DocumentFileCompat - SAF utilities
// MobileNetV4-Conv-Small extracts 1280-dimensional feature vector
val embedding = embeddingExtractor.extract(bitmap)
// Example: [0.23, -0.45, 0.12, ..., 0.67] (1280 floats)The MobileNetV4 neural network captures:
- Artistic style (minimalist, detailed, abstract, anime, photography)
- Composition (rule of thirds, symmetry, balance, focal points)
- Subject matter (landscape, portrait, architecture, nature, abstract)
- Mood & atmosphere (warm, cool, energetic, calm, moody, bright)
- Technical quality (sharpness, contrast, color grading)
Why MobileNetV4?
- 2.2x more detailed features (1280D vs 576D)
- 80% faster inference than MobileNetV3
- Better color and texture understanding
- Superior generalization across art styles
// Multi-factor scoring system
finalScore = (
embeddingSimilarity * 0.70 + // Deep visual features (cosine similarity)
colorSimilarity * 0.20 + // LAB color space matching
categoryBonus * 0.10 // Category preference learning
) + temporalDiversityBoost + // Prevent recent repetition
explorationBonus // Encourage discoveryCosine Similarity for embeddings (optimized for 1280D):
similarity = (A Β· B) / (||A|| Γ ||B||)
LAB Color Distance (perceptually uniform):
distance = β[(Lβ-Lβ)Β² + (aβ-aβ)Β² + (bβ-bβ)Β²]
// Exponential Moving Average for smooth learning
newPreference = Ξ± Γ newFeedback + (1 - Ξ±) Γ oldPreferenceLearning rate adapts based on feedback count:
- New users: Ξ± = 0.30 (learn faster)
- Experienced users: Ξ± = 0.15 (stable preferences)
Fast Initialization (Auto Mode):
- First Reaction Matters: Unlike standard EMA, the very first like or download immediately sets the baseline preference vector (1280D), jump-starting personalization without waiting for multiple interactions
Implicit feedback from duration:
- < 5 minutes = Dislike (30% strength)
-
24 hours = Like (30% strength)
Enhanced with Momentum:
- Tracks learning velocity for smoother adaptation
- Prevents oscillation in preferences
- Category-level tracking for fine-grained control
Epsilon-greedy strategy with decay:
exploration_rate = 0.20 β 0.05 (decays over 100 interactions)
With 20% initial probability, discover:
- New categories (< 3 times viewed)
- Under-explored content from different sources
- High-variance wallpapers (unique aesthetics)
Efficient Memory Management:
// Process 8,000+ wallpapers in batches of 1,000
chunkSize = 1,000
chunks = totalWallpapers / chunkSize
// Peak memory: ~40MB (down from 190MB)Pre-Caching System:
- Background computation of next recommendation
- Second "Change Now" click is near-instant
- Generation counter prevents stale results
- 10-minute cache validity
// Saliency detection using edge + color contrast
val focalPoint = smartCrop.detectSalientRegion(bitmap)
val croppedBitmap = smartCrop.cropToAspectRatio(bitmap, focalPoint, targetRatio)Features:
- Resolution preservation for high-quality sources (1.5x+ screen size)
- PNG output for lossless quality (no JPEG artifacts)
- Landscape-to-portrait optimization
- Focus on visually interesting regions
The Problem: Jetpack Compose doesn't support real-time background blur like iOS UIVisualEffectView. The blur() modifier only blurs the content itself, not what's behind it, making true "frosted glass" transparency impossible to achieve directly.
The Solution: We engineered a revolutionary pre-processing + slice extraction technique inspired by Smart Launcher:
// 1. Pre-process background ONCE with multiple effects
val liquidGlass = LiquidGlassProcessor.generateLiquidGlassBackground(
source = wallpaperBitmap,
config = GlassConfig(
blurRadius = 80f, // Heavy Gaussian blur
chromaticOffset = 3f, // RGB channel separation (prism effect)
distortionStrength = 0.15f, // Barrel distortion (light refraction)
saturationBoost = 1.1f, // Enhanced colors
brightnessAdjust = 1.05f // Subtle brightness lift
)
)
// 2. Each card extracts its EXACT background slice
val cardSlice = LiquidGlassProcessor.extractSlice(
processedBackground = liquidGlass,
cardLeft = cardX,
cardTop = cardY,
cardWidth = cardWidth,
cardHeight = cardHeight
)
// 3. Render as OPAQUE surface with glass overlays
GlassCard {
Image(bitmap = cardSlice) // Perfectly aligned slice
GlassOverlay() // Tint + highlights + borders
CardContent() // Your UI
}Why It Works:
- Zero Real-Time Cost: Background processed once, not per-frame
- Perfect Alignment: Each card gets pixel-perfect slice at its position
- Perception of Transparency: Opaque cards displaying matching backgrounds create illusion of "seeing through"
- Triple-Effect Processing:
- Chromatic Aberration: RGB channels offset by 3px for rainbow prism edges
- Edge Distortion: Barrel distortion simulates light refraction through thick glass
- Heavy Blur: 80px Gaussian blur via downscale-upscale for frosted base
- Cross-API Support: Works on all Android versions (no RenderEffect dependency for blur)
Result: Authentic Apple-style liquid glass that rivals iOS's native capabilities, achieved through clever engineering around Jetpack Compose's limitations.
Vanderwaals is designed with privacy as a core principle:
β 100% Offline ML Processing
- All TensorFlow Lite inference runs on-device
- No cloud API calls for ML operations
- Your preferences never leave your phone
β Zero Analytics & Tracking
- No Firebase, Google Analytics, or any tracking SDKs
- No crash reporting services
- No advertising SDKs
β No Personal Data Collection
- App doesn't request contacts, location, or camera
- Only required permissions: Internet (wallpaper downloads), Storage (applied wallpapers)
β Open Source & Auditable
- Full source code available under GPL-3.0
- No obfuscated code or hidden functionality
- Community-verifiable privacy claims
The only external network calls:
- GitHub API - Fetch wallpaper manifest (weekly sync)
- Bing API - Download daily wallpaper (optional)
- Direct Image URLs - Download wallpapers from curated sources
All network calls are transparent and documented in the source code.
- Java 17 or later
- Android Studio Ladybug (2024.2.1) or later
- Android SDK 36 (minimum SDK 30, target SDK 36)
- Gradle 8.10.2 (via wrapper)
-
Clone the repository:
git clone https://github.com/avinaxhroy/Vanderwaals.git cd Vanderwaals -
Open in Android Studio:
File β Openβ Select theVanderwaalsdirectory- Wait for Gradle sync to complete
-
TensorFlow Lite Model (included in assets):
- Model location:
app/src/main/assets/models/mobilenet_v4_conv_small.tflite - If missing, download from project releases or convert using provided scripts
- Model location:
-
Build the app:
- Debug: Click
βΆ Runor./gradlew assembleDebug - Release:
Build β Generate Signed Bundle/APKor./gradlew assembleRelease
- Debug: Click
-
Run on device/emulator:
./gradlew installDebug
- Debug: Development build with debug logging and local manifest support
- Includes debug screen for testing
- BuildConfig flags for development
- Release: Optimized with ProGuard/R8, code shrinking, and resource optimization
- Minified and obfuscated code
- Smaller APK size (~15MB)
Edit app/build.gradle.kts to customize:
versionCode&versionName- Current version: 4.5.0 (450)MANIFEST_BASE_URL- GitHub raw URL for wallpaper manifest- Signing configuration in
local.properties
# Convert MobileNetV4 to TFLite (requires Python 3.9+)
cd scripts
pip install -r requirements.txt
python convert_mobilenetv4_to_tflite.py
# Curate wallpapers with embeddings
python curate_wallpapers.py --test # Quick test
python curate_wallpapers.py # Full curationOriginal Inspiration: Massive thanks to Anthony La (@Anthonyy232) for creating Paperize, which inspired Vanderwaals' architecture and wallpaper infrastructure.
Wallpaper Sources:
- dharmx/walls - Aesthetic wallpapers
- D3Ext/aesthetic-wallpapers - Minimalist designs
- makccr/wallpapers - Linux ricing collections
- Gingeh/wallpapers - Anime aesthetics
- FrenzyExists/wallpapers - Dark themes
- npanuhin/Bing-Wallpaper-Archive - Bing daily wallpapers
ML Models & Technology:
- MobileNetV4 - Google Research
- TensorFlow Lite / LiteRT - Google Brain Team
- PyTorch & timm - Model training and conversion
We welcome contributions from the community! Together, we can make Vanderwaals even better.
Before contributing, please:
- Read our CONTRIBUTING.md for guidelines
- Review and accept the Contributor License Agreement (CLA)
- Understand our dual licensing model
Your contributions will be licensed under AGPL-3.0 and available for commercial licensing as well. This ensures the project remains sustainable while maintaining transparency.
- Experiment with larger models (MobileNetV4-Hybrid for 1536D embeddings)
- Implement CLIP embeddings for text+image understanding
- Add vision transformers (ViT) for semantic scene understanding
- Multi-modal learning (user descriptions + images)
- A/B testing framework for algorithm improvements
- Neural architecture search for optimal model selection
- Reddit wallpaper scraping (r/wallpapers, r/EarthPorn, r/wallpaper)
- Wallhaven API integration
- User-submitted collections with moderation
- Community voting system for quality control
- Automatic NSFW filtering
- Smart deduplication across all sources
- TFLite GPU delegate for 5-10x faster inference
- Quantization-aware training for smaller models
- Database query optimization with composite indexes
- Parallel similarity calculations with WorkManager
- Incremental manifest updates (delta sync)
- WebP format for smaller downloads
- Tablet and foldable device layouts
- Home screen widgets (upcoming wallpaper preview)
- Live wallpaper support with parallax effects
- Built-in wallpaper editor (crop, filters, color adjustments)
- Accessibility improvements (TalkBack, high contrast, large text)
- Multi-language support (i18n)
- Landscape mode optimization
- Hardware-accelerated glass effects (RenderScript/RenderEffect)
- Glass effect intensity controls
- Unit tests for algorithm components (JUnit, Mockito)
- UI tests with Compose Test and Espresso
- Integration tests for use cases
- Performance benchmarks and profiling
- End-to-end testing with Firebase Test Lab
- Crash reporting integration (optional, privacy-respecting)
Vanderwaals uses a dual licensing approach to balance openness with sustainability:
For the community, Vanderwaals is licensed under AGPL-3.0 (GNU Affero General Public License v3.0):
- β Free to use for personal, educational, and open-source projects
- β Study and modify the source code
- β Contribute improvements back to the project
- β Full transparency - see exactly how the app works
Requirements:
- If you modify and distribute Vanderwaals, you must share your source code under AGPL-3.0
- If you run a modified version as a network service, users must have access to the source code
- Any derivative work must also be licensed under AGPL-3.0
Vanderwaals - AI-Powered Wallpaper App
Copyright (C) 2024-2025 Avinash/Confused Coconut
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
π Read the full license: LICENSE
For commercial use, rebranding, or proprietary distribution, a commercial license is required.
You need a commercial license if you want to:
- Distribute a modified or rebranded version without sharing source code
- Use Vanderwaals in a proprietary application
- Offer Vanderwaals as a commercial service (SaaS, hosted, etc.)
- Monetize through ads, subscriptions, or paid features
Benefits:
- No source code disclosure required
- Technical support and updates
- Custom licensing terms
- Legal protection and indemnification
π Learn more: COMMERCIAL_LICENSE.md
The "Vanderwaals" name and logo are trademarks and are not covered by the AGPL-3.0 license.
- β You can use the code under AGPL-3.0
- β You cannot use the "Vanderwaals" name or logo in modified versions
If you create a fork or derivative, you must rebrand it with a different name and logo.
π Trademark policy: TRADEMARK.md
Contributors retain ownership but grant the project rights to use contributions under both licenses.
π CLA details: CLA.md
This multi-layered protection strategy ensures:
- π Transparency: Anyone can audit the code for security and privacy
- π€ Community Growth: Open contributions improve the app for everyone
- π‘οΈ Protection: Prevents unauthorized rebranding and exploitation
- π° Sustainability: Commercial licensing supports long-term development
- β Trust: Clear legal framework benefits users and contributors
| Use Case | License Required | Source Code Disclosure |
|---|---|---|
| Personal use | AGPL-3.0 (free) | Not required |
| Open-source project | AGPL-3.0 (free) | Yes (if distributed) |
| Modified distribution | AGPL-3.0 (free) | Yes (required) |
| Commercial/proprietary | Commercial (paid) | No |
| Rebranding | Commercial (paid) + Trademark permission | No |
π§ Questions? Contact: hi@avinas.me
Vanderwaals is a derivative work inspired by Paperize by Anthony La (Apache-2.0 license). The original wallpaper infrastructure and UI architecture provided inspiration for Vanderwaals' design.
Vanderwaals' unique contributions:
- MobileNetV4 Integration: State-of-the-art 1280D embeddings (upgraded from MobileNetV3 576D)
- Revolutionary Liquid Glass System: Apple-style glassmorphism engineered around Jetpack Compose limitations
- Pre-rendering with chromatic aberration + barrel distortion + heavy blur
- Slice-based rendering for pixel-perfect glass cards
- Smart Launcher-inspired technique solving real-time blur impossibility
- Advanced ML Algorithm: EMA learning with fast initialization and momentum-based adaptation
- Multi-Source Architecture: GitHub + Bing integration with unified embedding support
- Chunked Processing: Memory-efficient batch processing of 8,000+ wallpapers
- Pre-Caching System: Background computation for instant wallpaper changes
- Quantized Manifests: 90% smaller downloads with int8 quantization
- Smart Cropping 2.0: Enhanced saliency detection with resolution preservation
- Premium UI Components: Custom glassmorphic cards, sheets, and backgrounds
- Version-Aware Migrations: Seamless upgrades between manifest versions (v1/v2/v3)
- Samsung Optimizations: WakeLock and foreground service for One UI compatibility
- Bing Wallpaper Support: Full archive integration with MobileNetV4 embeddings
- Category Learning: Fine-grained preference tracking at category level
- Enhanced Analytics: Personalization insights and learning progress visualization
- TFLite GPU delegate support for 5-10x faster inference
- Wallpaper categories filter and search
- User-uploaded wallpapers collection
- Export/import preferences for device migration
- Advanced statistics dashboard
- Wear OS companion app
- Multi-language support (i18n)
- Live wallpaper with parallax effects
- Home screen widgets
- Wallpaper editor (crop, filters, adjustments)
- Community features (share collections, rate wallpapers)
- Cloud backup (optional, encrypted)
- CLIP embeddings for text-based search
- Vision transformers (ViT) for semantic understanding
- Federated learning for privacy-preserving model improvement
- Plugin system for custom wallpaper sources
- Cross-platform (iOS, desktop)
- π Bug Reports: GitHub Issues
- π‘ Feature Requests: GitHub Discussions
- β Q&A & Help: GitHub Discussions - Q&A
- π§ Email: hi@avinas.me
- π Setup Guide: SETUP.md - Development environment setup
- π API Documentation: API.md - Detailed API reference
- π Contributing: CONTRIBUTING.md - Contribution guidelines
- π Changelog: CHANGELOG.md - Full version history
- π Curation Pipeline: CURATION_PIPELINE_README.md - How wallpapers are curated
When reporting issues or requesting features:
- Search first: Check if similar issues/requests exist
- Be specific: Include app version, Android version, device model
- Provide logs: For crashes, attach logcat output
- Be respectful: Follow our Code of Conduct
Q: Why does the app need storage permission?
A: To save wallpapers you download and apply wallpapers to your device.
Q: Does it work offline?
A: Yes! After initial sync, all ML processing is offline. Internet only needed for new wallpapers.
Q: How much data does it use?
A: Initial manifest download is ~6MB. Each wallpaper is 200KB-2MB (average 500KB).
Q: Can I use my own wallpapers?
A: Yes! Use "Personalize Mode" to upload your favorite and get similar recommendations.
Q: Is my data private?
A: Absolutely! 100% offline ML, zero analytics, open-source code for verification.
| Version | Time | Improvement |
|---|---|---|
| v3.x (Before optimization) | ~45 seconds | Baseline |
| v4.1.0 (Chunked processing) | ~5 seconds | 9x faster |
| v4.1.0+ (Pre-cached) | <1 second | 45x faster |
| Operation | v3.x | v4.1.0+ | Improvement |
|---|---|---|---|
| Peak similarity calculation | 190 MB | 40 MB | 79% reduction |
| Average app usage | 85 MB | 60 MB | 29% reduction |
| Model | Dimensions | Size | Inference Time (CPU) |
|---|---|---|---|
| MobileNetV3-Small | 576D | 2.5 MB | ~80ms |
| MobileNetV4-Conv-Small | 1280D | 4.3 MB | ~60ms |
| Format | Wallpapers | Size | Download Time (10 Mbps) |
|---|---|---|---|
| v1 (float32) | 6,000 | 60 MB | 48 seconds |
| v2 (quantized) | 6,000 | 6 MB | 5 seconds |
| v3 (MobileNetV4 quantized) | 6,000 | 8 MB | 6.4 seconds |
If you find Vanderwaals helpful:
- β Star this repository on GitHub to show appreciation
- π Report bugs and suggest features via Issues
- π€ Contribute code, documentation, or translations
- π¬ Share with friends who love wallpapers and customization
- π Write a review on Google Play Store
- π° Consider commercial licensing if using in commercial products
Every star, issue, and contribution helps make Vanderwaals better for everyone!
Made with β€οΈ by Avinas / Confused Coconut
GitHub β’ Releases β’ Issues β’ Discussions
Powered by MobileNetV4, TensorFlow Lite & Jetpack Compose






