Skip to content

About

A modern, dark-first wallpaper client crafted with Compose Multiplatform for Android, iOS, Web (Wasm), macOS, Windows, and Linux.

Topics

Resources

Stars

30 stars

Watchers

0 watching

Forks

Repository files navigation

Screeny β€” Compose Multiplatform Wallpaper App

Screeny App Icon

A modern, dark-first wallpaper client crafted with Compose Multiplatform for Android, iOS, Web (Wasm), macOS, Windows, and Linux.

Live Demo Kotlin 2.4.20 Compose Multiplatform 1.7.3 Supported Platforms Apache 2.0 License

πŸš€ Live Web App β€’ Web Showcase β€’ Desktop Showcase β€’ Mobile Showcase β€’ Features β€’ Tech Stack β€’ Getting Started β€’ Shortcuts


🌐 Web Showcase (Kotlin/Wasm)

Screeny runs natively in modern web browsers powered by Kotlin/Wasm and Compose Multiplatform. It renders high-performance 60 FPS graphics directly to HTML5 canvas using Skiko, featuring an adaptive wide layout, 1:1 dark glass skeleton shimmers with zero layout shift, and in-browser asynchronous Blob streaming for direct wallpaper downloads.


πŸ–₯️ Desktop Showcase

Screeny features a desktop experience built to macOS, Windows, and Linux conventions with a persistent sidebar, instant search, numbered pagination, and high-resolution preview modes.

πŸ” Immersive Full-Screen Lightbox Preview

Preview original high-resolution photography with a toggleable glassmorphic HUD, photographer metadata, direct profile links, and keyboard navigation.

Desktop Full-Screen Preview


πŸ—‚οΈ Browse Feed with Numbered Pagination & Detail Pane

Browse 16:9 wallpapers with quick-action hover buttons, contextual master-detail pane, and jump-to-page navigation.

Desktop Home Feed


πŸ“‚ Curated Categories & Offline Favourites

Organize wallpapers into categories or save high-resolution favorites offline powered by multiplatform Room SQLite.

Curated Categories Offline Favourites
Categories Favourites

πŸ“± Mobile Showcase

Screeny delivers fluid edge-to-edge gesture navigation, infinite scrolling feeds, and shared element transitions on Android and iOS.

Curated Feed Wallpaper Detail Similar Wallpapers
Mobile Home Mobile Detail Similar Wallpapers

✨ Key Features

  • πŸ–₯️ Tailored Desktop Experience (macOS, Windows, Linux):
    • Fixed glassmorphic sidebar with Screeny signature branding.
    • Persistent instant-search toolbar (⌘ / Ctrl + F).
    • Numbered page navigation (40 items/page) with direct jump-to-page dialog.
    • Quick-action card hover overlays and right-click context menus.
    • Native window size and position persistence.
    • Native OS wallpaper setting (osascript on macOS, PowerShell on Windows, gsettings on Linux).
  • πŸ” Full-Screen Lightbox Viewer:
    • Displays original high-resolution imagery.
    • Click anywhere or press Space to toggle the floating glass HUD.
    • Photographer credit, resolution info, and quick profile navigation.
    • Seamless in-viewer feed browsing with ← / β†’ arrow keys.
  • 🌐 Web (Kotlin/Wasm):
    • High-performance Skiko canvas rendering running at 60 FPS in modern browsers via WebAssembly.
    • 1:1 pixel-perfect dark glass shimmer skeletons with zero layout shift during asset loading.
    • Responsive wide layout with master-detail side pane tailored for 16:9 HD wallpapers.
    • In-browser asynchronous Blob streaming for direct wallpaper downloads without server roundtrips.
    • Automated continuous deployment to GitHub Pages via GitHub Actions.
  • πŸ“± Mobile UI (Android & iOS):
    • Infinite scroll feed powered by Paging 3 Multiplatform.
    • Gesture-driven bottom sheets, shared element transitions, and parallax scrolling.
  • 🎨 Mesh Gradient Generator:
    • Interactive multi-point aurora gradient presets with instant wallpaper application and PNG export.
  • πŸ’Ύ Local Persistence:
    • Offline favourites, user preferences, and search history powered by Room (KMP SQLite).
  • 🌐 Internationalization:
    • Multi-language support with runtime locale switching across 20+ languages.
  • πŸ”’ Zero-Leak Secret Architecture:
    • Dynamic build-time config via local.properties or environment variables without committing secrets to git.

πŸ› οΈ Tech Stack & Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                   Compose Multiplatform UI                  β”‚
β”‚   β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚   β”‚   Mobile UI (Navigation3) β”‚ β”‚ Dedicated Desktop/Web β”‚   β”‚
β”‚   β”‚       (Android & iOS)     β”‚ β”‚  (macOS/Win/Linux/Wasm)β”‚  β”‚
β”‚   β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                  β–Ό                           β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 Shared ViewModels & Domain Models           β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚         Koin DI (Annotations)  β€’  Mappers & UseCases       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚   Ktor Client (OkHttp/Darwin/Js)β”‚   Room Database (KMP SQLite)β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Layer Library / Technology
UI Framework Compose Multiplatform (Kotlin 2.4 / AGP 9.1)
Dependency Injection Koin + Koin Annotations (KSP)
Networking Ktor 3.5 (OkHttp on Android & Desktop, Darwin on iOS, Js/Wasm on Web)
Local Database Room KMP 2.8 + SQLite
Paging CashApp Multiplatform Paging 3
Image Loading Landscapist + Coil 3
Design System Glassmorphism (Ink950 dark space palette, Aurora gradients, frosted scrims)

πŸš€ Getting Started

1. Clone the repository

git clone https://github.com/Shahidzbi4213/WallpaperApp-Cmp.git
cd WallpaperApp-Cmp

2. Configure your Pexels API Key

Get a free API key at pexels.com/api. Copy local.properties.example to local.properties and paste your key:

PEXELS_API_KEY=your_pexels_api_key_here

(You can also set PEXELS_API_KEY as an environment variable).


3. Build & Run

πŸ–₯️ Desktop (macOS, Windows, Linux)

# Run the application
./gradlew :desktopApp:run

# Package native installers
./gradlew :desktopApp:packageDmg   # macOS (.dmg)
./gradlew :desktopApp:packageMsi   # Windows (.msi)
./gradlew :desktopApp:packageDeb   # Linux (.deb)

🌐 Web (Kotlin/Wasm)

# Run local development server with hot reload (http://localhost:8080)
./gradlew :composeApp:wasmJsBrowserDevelopmentRun

# Build production distribution for deployment (composeApp/build/dist/wasmJs/productionExecutable)
./gradlew :composeApp:wasmJsBrowserDistribution

πŸ€– Android

./gradlew :androidApp:assembleDebug

🍎 iOS

Open iosApp/iosApp.xcodeproj in Xcode and press Run, or run via Fleet / Android Studio.


⌨️ Desktop Keyboard Shortcuts

Shortcut Action
⌘ / Ctrl + F Focus search bar
⌘ / Ctrl + , Open Settings
Esc Close preview / full-screen viewer / navigate back
Space Toggle HUD controls in full-screen lightbox
← / β†’ Browse previous / next wallpaper in full-screen
F Toggle favourite status

πŸ§ͺ Testing

# Run multiplatform shared unit tests
./gradlew :composeApp:allTests

# Run Desktop UI smoke tests & headless preview renders
./gradlew :composeApp:desktopTest

πŸ‘¨β€πŸ’» Author

Developed by Shahid Iqbal β€” Senior Android & Kotlin Multiplatform Engineer.

Connect: Portfolio β€’ LinkedIn β€’ GitHub β€’ X (Twitter)


πŸ’– Star the Repo

If you enjoy Screeny or find this Compose Multiplatform reference helpful, please give it a ⭐ on GitHub!


Built with ❀️ using Kotlin & Compose Multiplatform.

About

A modern, dark-first wallpaper client crafted with Compose Multiplatform for Android, iOS, Web (Wasm), macOS, Windows, and Linux.

Topics

Resources

Stars

30 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages