Skip to content

Install

Kolahal (package com.mtwabpin.kolahal) needs Android 9 (API 28) or newer. Profile toggling needs Android 10+, and private space needs Android 15+.

You need a JDK and the Android SDK. The project’s toolchain is AGP 9.4.1, Gradle 9.8.2 (through the wrapper), Kotlin 2.4.21, compileSdk 37 and targetSdk 37.

Terminal window
git clone https://github.com/mtwabpin/kolahal.git
cd kolahal
./gradlew :app:assembleRelease # R8-optimised; signed with keystore.properties or the debug key
./gradlew :app:assembleLite # release without accessibility and notification access (see below)
./gradlew :app:assembleDebug # debug APK ("Kolahal debug", package suffix .debug)
./gradlew :app:testDebugUnitTest # JVM tests
./gradlew :app:connectedDebugAndroidTest # engines, sandbox, timeouts, :script process, commands

The APKs end up in app/build/outputs/apk/<variant>/.

Google Play Protect blocks sideloaded apps (installed from a browser, a messaging app or a file manager) that declare an accessibility service or notification access, in India and some other countries. The full build has both: the accessibility service only locks the screen, and notification access shows your notifications in the log. assembleLite builds the same app without them (its version ends in -lite; same package, so it installs over the full build and the other way round). It has no lock or double-tap lock, no notifs, no media controls and now-playing line, and scripts get no notifications.recent() or @on notification. Everything else is the same.

To install the full build where it is blocked, turn off Play Store → profile → Play Protect → ⚙ → Scan apps with Play Protect while installing (and back on after), or install with adb install.

Without configuration, the release build is signed with the debug key. To sign with your own key, create keystore.properties in the repository root (it is git-ignored) with these keys:

storeFile=/path/to/release.jks
storePassword=…
keyAlias=…
keyPassword=…

Copy the APK to the phone and open it, or install over USB:

Terminal window
adb install -r app/build/outputs/apk/release/app-release.apk

A sideloaded APK runs without ahead-of-time compilation until Android compiles it during idle maintenance, so it can feel laggy at first. To compile it right away:

Terminal window
adb shell cmd package compile -m speed -f com.mtwabpin.kolahal

Press Home and pick Kolahal, or run home at the prompt to open Android’s default home app setting. Being the default launcher matters: Android only lets the default launcher pause or resume the work profile, list app shortcuts and see the private space.

Then run setup and work through the checklist.