NOSAtmosphereEffect

Atmo Engine

Atmo Engine is an open-source Android live wallpaper studio inspired by the distinctive Atmosphere transition in Nothing OS. It offers optional lock-screen-to-home-screen transitions or continuously applied effects, accurate previews, flexible image fitting, and wallpaper playlists without uploading your images.

📥 Download

Atmo Engine is available to download from the Play Store, F-Droid and Orion Store.

Get it on Google Play

Get it on F-Droid

⚠️ Device Support & Disclaimer

Current Testing Status: This application has currently been tested exclusively on the Samsung Galaxy S25 Ultra and Nothing Phone 1.

While it may work on other Android devices running Android 13+ (API 33+), behavior on different manufacturers’ skins (FuntouchOS, OxygenOS, etc.) is not guaranteed.

Usage Guide

Follow these steps to set up the effect properly on your device.

⚡ Quick Setup: Share an Image

The fastest way to apply a wallpaper. Instead of opening the app and browsing for a file, you can send an image straight to Atmo Engine from anywhere:

  1. Find an image in your Gallery, or in any wallpaper app.
  2. Tap Share and choose Atmo Engine (“Set with Atmo Engine”) from the share sheet.
  3. Pick the effect you want — the app takes you straight to the crop screen and applies it. You can share a single image for a normal wallpaper, or select multiple images before sharing to build a rotating playlist. This skips the extra steps of saving the image, opening the app, and digging through your files to find it again. The regular in-app flow below still works exactly the same.

1. Select Your Effect

Open the app and choose your desired atmosphere style from the selection screen:

Atmosphere with Glass

For Original or Reverse Atmosphere, enable Add glass effect while setting the image or from Fine tuning → Effect. The Fine Tune screen also exposes the rib count, rib thickness, and Background only subject isolation while Glass is enabled. With transitions enabled, the animation remains an Atmosphere transition: Original Atmosphere moves from the glass-treated image into its ambient state, while Reverse Atmosphere finishes on the glass-treated image. With transitions disabled, Atmo holds the fully atmospheric effect state on the selected screen or screens, while any screen assigned the original remains genuinely unchanged.

Subject Isolation for Canvas, Glass, and Halftone

Canvas Sketch, Glass Effect, Atmosphere with Glass, and Halftone Print share the same on-device subject model. Canvas Sketch can use Subject segmentation to anchor its sketch to a prominent person, character, animal, or object. Glass and Halftone provide Background only, which keeps the detected foreground subject clear while applying the selected effect behind it. Model delivery depends on the app distribution:

  1. Open Fine Tuning for Canvas Sketch, Glass Effect, or Halftone Print.
  2. In the Google Play build, download the optional model if it is not already installed.
  3. Turn on Subject segmentation for Canvas Sketch or Background only for Glass or Halftone.
  4. Preview or apply the wallpaper normally.

If Canvas Sketch cannot find a confident foreground subject, it falls back to sketching the complete wallpaper. A background-only effect waits for a usable mask instead of applying across an unprotected subject. Wallpaper image contents and generated masks never leave the device. Atmo Engine does not request the INTERNET or ACCESS_NETWORK_STATE permission. In the Google Play build, Google Play services may use its own network access only when the user requests the optional model download.

2. Select Image & Playlist Mode

After selecting an effect, you will be prompted to choose your wallpaper mode:

3. Application & Activation

Please follow these simple steps to apply the wallpaper:

  1. Apply the Wallpaper: Once you are happy with your crop or playlist selection, tap the “Apply” button.
  2. Review Instructions: A dialog box will explain the live-wallpaper setup. Tap “Set Wallpaper” to proceed.
  3. Set Wallpaper: The app will redirect you to the Android System’s Live Wallpaper preview screen. Tap “Set Wallpaper” (or the checkmark/apply icon, depending on your device).
  4. Choose Both Screens: Select “Home screen and Lock screen”. Atmo must remain the live wallpaper on both screens so it can show either the effect or the original image on each one.
  5. Finish: Setup is complete. Lock and unlock the screen to test an enabled transition, or use Fine tuning to keep the effect fully applied on the selected screen or screens.

Transitions or a Continuously Applied Effect

Open Fine tuning → Timing and use Animate transitions to choose how the wallpaper behaves:

When transitions are off, Keep effect applied on controls what the same live-wallpaper service renders:

These choices do not install a static wallpaper and do not move Atmo to only one destination. Atmo remains the live wallpaper on both screens; only the rendered state changes.

Disabling transitions does not disable other live-wallpaper features. Playlists and theme playlists continue rotating, Fine Tune controls remain available, Background only subject isolation continues working, and wallpaper scrolling remains active where the launcher supports it.

Interface and Previews

Atmo Engine uses Jetpack Compose and Material 3 throughout the setup flow. Material Expressive styling follows the device’s system color palette when enabled, while the appearance panel also supports fixed colors, System/Light/Dark modes, and an optional pitch-black dark background.

Effect cards, the active-wallpaper dashboard, crop screens, and playlist cards use live previews driven by the real effect implementations. This lets you inspect the selected wallpaper and effect behavior before applying it through Android’s live wallpaper screen.

Advanced Customization

Take full control of the animation and look. You can now tweak the following settings dynamically:

Visual Adjustments

Palette Diagnostics

When an Atmo wallpaper is active, tap the Atmo Engine title seven times to open the device-specific palette diagnostics screen. It compares Atmo’s locally extracted colors, Android’s Wallpaper API colors, and the current system color resources. The Force Apply test is available only while Sync System Colors is enabled. Diagnostic values and engine traces remain on the device.

Screenshots

Atmo Engine wallpaper dashboard Animated effect selection
Expressive fine-tuning controls Wallpaper mode chooser with theme playlists

Telegram Group

I’ve made a Telegram group for discussing issues and feature suggestions. You can join it using this link.

Known Issues

Build & Installation

This project is built using Kotlin and Gradle.

Atmo Engine keeps one shared codebase and combines two flavor dimensions:

All artifacts in the table below use version name 7.0.4.

Flavor Minimum Android Target SDK Version code Intended release
v33Play Android 13 / API 33 API 33 300704 ML Kit APK
v33Fdroid Android 13 / API 33 API 33 300704 FOSS APK for F-Droid
v35Play Android 15 / API 35 API 36 400704 Google Play ML Kit AAB
v36Play Android 16 / API 36 API 36 500704 ML Kit APK
v36Fdroid Android 16 / API 36 API 36 500704 FOSS APK

The play source set contains only the ML Kit implementation and explicit model-download controller. The fdroid source set contains only U2NetP, its model files, and the source-built FOSS LiteRT runtime. UI, effects, playlists, palette behavior, and settings remain shared in main. Model and runtime provenance is recorded in THIRD_PARTY_NOTICES.md.

Stable and beta release workflows produce exactly five artifacts: Android 16+ ML Kit and FOSS APKs, Android 13+ ML Kit and FOSS APKs, and an Android 15+ ML Kit AAB for Google Play. CI inspects every archive before signing: ML Kit artifacts must not contain the U2NetP model or LiteRT native runtime, both FOSS APKs must contain them, and each ML Kit APK must remain smaller than its matching FOSS APK and below 10 MiB.

  1. Clone the repository.
  2. Open in the latest stable Android Studio.
  3. Sync Gradle.
  4. Select the required build variant, or run one of these tasks:
./gradlew assembleV33PlayRelease
./gradlew assembleV33FdroidRelease
./gradlew bundleV35PlayRelease
./gradlew assembleV36PlayRelease
./gradlew assembleV36FdroidRelease

Release signing keys are intentionally not stored in the repository. Configure your Play upload key locally before uploading either AAB; F-Droid builds and signs its own APK.

F-Droid should select both v33 and fdroid in its build metadata.

git clone https://github.com/saad-khan-rind/NOSAtmosphereEffect.git

Author

Saad Ullah Khan 📍 Passau, Germany 📧 khansaad45678900@gmail.com 🔗 LinkedIn 💻 GitHub 📄 Download Resume 🌐 Portfolio

License

This project is open-source and available under the MIT License. Bundled third-party components retain their respective open-source licenses; see THIRD_PARTY_NOTICES.md.

Privacy Policy

The privacy policy is this.


⭐️ Feel free to fork, star, and use this code!