Xposed module that displays download progress as an animated ring around the camera cutout.
- Progress ring rendered around the camera cutout using the native
DisplayCutoutAPI - Customizable appearance: colors per state (active/completed/failed), arc thickness, opacity, and direction
- Completion animations and optional haptic feedback
- Active download counter badge
- Battery saver-aware rendering
- Built-in test mode for simulating states
- Material 3 Expressive settings UI with Jetpack Compose
- Android 12 (API 31) or higher
- LSPosed (JingMatrix fork recommended)
- Pixel or AOSP-based ROM
- Root access (optional, for
Restart SystemUIin settings) - A phone with a punch-hole display
-
Download the APK:
-
Install and enable the module in LSPosed.
-
Scope to
com.android.systemui -
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.
git clone --recurse-submodules https://github.com/hxreborn/punch-hole-download-progress.git
cd punch-hole-download-progress
./gradlew buildLibxposed
./gradlew assembleReleaseRequires 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>Pull requests welcome. Open an issue for bugs or feature requests.
This project is licensed under the GNU General Public License v3.0 – see the LICENSE file for details.



