- Kotlin 100%
| app | ||
| gradle/wrapper | ||
| .gitignore | ||
| build.gradle.kts | ||
| CLAUDE.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
snix Quick Settings Tiles
Quick settings tiles for things that otherwise take a trip to the settings app.
Written on GrapheneOS but tied to nothing in it: the settings it writes are plain AOSP. Android 14 or newer.
Two so far:
ADB cycles debugging through off, USB and wireless. From a locked screen it only ever turns things off; switching anything on asks to unlock first. A long press opens developer options with wireless debugging highlighted, or, while debugging is off, the page that reports what the tile is missing.
Wireless debugging runs on top of adb, so the wireless state leaves USB on as well; there is no wireless-only state to offer. On GrapheneOS an unfamiliar network raises a prompt on the device, and nothing listens until it is accepted — the tile shows as on while that prompt waits.
Awake holds the screen on for five, ten or thirty minutes, or until turned off. A notification shows while it runs and carries a stop button, for when the tile is out of reach.
Tiles ship hidden. The app lists them with a switch each, which is what offers one to the quick settings editor; adding it to the panel stays your job. Turning a switch off also stops whatever that tile had turned on — a tile that vanishes while its function keeps running leaves no obvious way to stop it.
Permissions
Awake needs notifications, which the app asks for when it first opens.
ADB needs WRITE_SECURE_SETTINGS, a development permission that no app can
request at runtime. Grant it once over adb:
adb shell pm grant me.snix.tiles android.permission.WRITE_SECURE_SETTINGS
Until then the ADB tile stays off and says so, and tapping it explains where to find that command. It survives updates, and has to be granted again after an uninstall.
Installing
Releases are attached to the tags in this repository, and can be tracked with Obtainium by pointing it at this repo.
Building
./gradlew assembleDebug
Signing a release build takes a keystore, declared through Gradle properties in
~/.gradle/gradle.properties:
snix.keystore=/path/to/keystore.jks
snix.keyAlias=the-entry
snix.passwordFile=/path/to/password
The password is read from that file rather than written here, so it stays in one place. Without these only the debug build works, which is enough to try the app out.
Licence
GPL-3.0-or-later. See LICENSE.