punch-hole-download-progress
Introduction: Xposed module that shows download progress as a ring around the camera cutout.
Tags:
Xposed module that displays download progress as an animated ring around the camera cutout.
Features
- Progress ring rendered around the camera cutout using the native
DisplayCutoutAPI - 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 SystemUIin settings) - A phone with a punch-hole display
Installation
Download the APK:
Install and enable the module in LSPosed.
Scope to
com.android.systemuiRestart 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
This project is licensed under the GNU General Public License v3.0 – see the LICENSE file for details.




