punch-hole-download-progress

Introduction: Xposed module that shows download progress as a ring around the camera cutout.
More: Author   ReportBugs   OfficialWebsite   
Tags:

Xposed module that displays download progress as an animated ring around the camera cutout.

Android CI Kotlin Android Xposed Repo

Download progress animation

Features

  • Progress ring rendered around the camera cutout using the native DisplayCutout API
  • Path renderer for pill-shaped cutouts (opt-in)
  • Customizable appearance: colors per state (active/completed/failed), arc thickness, opacity, and direction
  • Completion animations and optional haptic feedback
  • Per-rotation calibration for percentage text, filename text, and badge offsets (0° / 90° / 180° / 270°)
  • Optional vertical filename text layout in landscape
  • Active download counter badge
  • Battery saver-aware rendering
  • Built-in test mode for simulating states
  • Material 3 Expressive settings UI with Jetpack Compose

Requirements

  • Android 9 (API 28) or higher (experimental on Android 9-11)
  • An LSPosed Manager version with API 101 support (required for now)
  • Pixel/AOSP-based ROM (other ROMs may not work as expected)
  • Root access (optional, for Restart SystemUI in settings)
  • A phone with a punch-hole display

Installation

  1. Download the APK:

    Get it on F-Droid Get it on IzzyOnDroid Get it on GitHub Get it on Obtainium

  2. Install and enable the module in LSPosed.

  3. Scope to com.android.systemui

  4. Restart SystemUI or reboot the device

The app includes a built-in Restart SystemUI option in the overflow menu. Magisk will prompt for permission; KernelSU/APatch require adding the app manually.

Build

git clone https://github.com/hxreborn/punch-hole-download-progress.git
cd punch-hole-download-progress
./gradlew assembleRelease

Requires JDK 21 and Android SDK. Configure local.properties:

sdk.dir=/path/to/android/sdk

# Optional signing
RELEASE_STORE_FILE=<path/to/keystore.jks>
RELEASE_STORE_PASSWORD=<store_password>
RELEASE_KEY_ALIAS=<key_alias>
RELEASE_KEY_PASSWORD=<key_password>

Contributing

Pull requests welcome. Open an issue for bugs or feature requests.

Also found in

License

GPLv3

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

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools