ShizuStore

Tooler

jehan593

1.0.8 · GitHub

Download APK
Quick settings Android 9+ 1 week ago MIT
92 ShizuStore
510 GitHub
5 Stars
2 MB Size

More about this app

Quick Settings tiles for lock screen, private DNS, grayscale and charging, executed through Shizuku.

Tooler

Build APK Latest release License: MIT

Quick Settings tiles that Android leaves out — no root needed. Nord palette, Martian Mono font, one home-screen shortcut too. No INTERNET permission, no sync, no database: tiles read the system's live state where Android allows it, with small local preferences for configuration and restoration.

FYI: this project is fully vibe-coded.

Tiles

  • Screenshot — take one straight from Quick Settings. One-time Accessibility grant.
  • Keep Screen On — keep the screen awake until you turn it off.
  • Volume Mode — cycle Normal, Vibrate, and Silent.
  • Battery Charge Optimization — switch between Adaptive Charging and Limit to 80%. Pixel only.
  • Private DNS — switch between Automatic and a hostname you set.
  • Grayscale — temporarily use monochrome, then restore your previous color correction settings.
  • Custom tiles — ten tiles you make, each running a shell command via Shizuku.

There's also a Lock Quick Settings toggle in the app (hide Quick Settings while the screen is locked, needs Shizuku), and a home-screen Lock Screen shortcut that locks the screen instantly.

Grayscale observes Android's color correction settings (including developer-options monochromacy). Independent manufacturer or Bedtime grayscale effects are not exposed by those settings. A manual change to another correction mode takes precedence and discards the saved restore state when observed. Without a saved state, toggling off manually enabled grayscale disables correction.

Battery Charge reads the current mode through Shizuku when available; otherwise it uses the last mode Tooler saved, which can differ from changes made in Settings.

Permissions

A few tiles need one-time setup:

  • Accessibility service — Screenshot tile and Lock Screen shortcut.
  • Notifications — shows Keep Screen On's notification and its Turn off button.
  • Do Not Disturb access — needed for Volume Mode to enter or leave Silent.
  • WRITE_SECURE_SETTINGS — Battery Charge, Private DNS, and Grayscale. Grant it from the app with Shizuku running, or on a computer:
    adb shell pm grant com.tooler.app android.permission.WRITE_SECURE_SETTINGS
    
  • Shizuku — the Lock Quick Settings toggle and Custom tiles (shizuku.rikka.app).

Build

Requires JDK 17 and the Android SDK. The app runs on Android 9 / API 28+.

./gradlew assembleDebug

The APK lands at app/build/outputs/apk/debug/app-debug.apk.

For a minified release APK, run ./gradlew assembleRelease. The APK lands at app/build/outputs/apk/release/app-release.apk.

Run local unit tests with ./gradlew testDebugUnitTest.

Device verification

  • Start with each color correction mode enabled, then disabled. Toggle Grayscale on/off and verify both the original mode and enabled state return. Repeat after killing Tooler's background process while grayscale is on.
  • With the panel open, change monochromacy on/off externally and verify the tile updates; repeat with the panel closed and reopen it. Select a different correction mode during an override and verify Tooler leaves that manual choice intact.
  • Cycle Volume Mode repeatedly, then change it using hardware/settings controls with the panel open. Check entry to and exit from Silent with and without DND access.
  • Compare first-tap response after process death and normal repeated taps, with Shizuku running. System process startup can still delay the first tap; shell commands no longer block the main thread.
  • For Lock Quick Settings, unlock immediately after screen-off, unlock after staying on the lock screen for more than four seconds, and test fingerprint/face/Smart Lock. Confirm the panel remains available after unlocking. Repeat with Shizuku reconnecting and after toggling the feature off. Recovery still requires Tooler to be alive and Shizuku to be available; Android killing the process while locked cannot be repaired until Tooler starts again.

License

MIT — see LICENSE. Martian Mono Nerd Font ships under the SIL Open Font License 1.1 — see MARTIAN_MONO_LICENSE.txt.

Close

How Shizuku is used

Can run custom shell commands, grant settings access, hide Quick Settings when locked and read charging mode via Shizuku's `sh -c` shell

This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.

How this app uses Shizuku

Tooler uses Shizuku to run privileged shell commands as the shell user for its Quick Settings tiles and setup grants.

  • Run custom shell commands: tiles the user creates in the editor run the typed on and off shell commands through Shizuku, with success flipping the toggle state and failures shown as a notification.
  • Grant system settings access: a one tap action grants WRITE_SECURE_SETTINGS with the pm grant shell command through Shizuku, which then lets the battery charge optimization, Private DNS and grayscale tiles read and write their system settings.
  • Hide locked Quick Settings: when the lock screen option is on, the app hides the Quick Settings panel while the device is locked and restores it on unlock with the cmd statusbar send-disable-flag shell command through Shizuku.
  • Read charging mode: when the system blocks a direct read of the hidden charging optimization settings, the app reads them with the settings get secure shell command through Shizuku to show and advance the current mode.

Android APIs or commands used

  • pm grant
  • cmd statusbar send-disable-flag
  • settings get secure
  • sh -c

Notable details

After the one time WRITE_SECURE_SETTINGS grant, the battery, Private DNS and grayscale tiles use the normal system settings APIs and keep working without Shizuku running. The same grant can also be done from a computer with the copyable ADB command shown in the app.

Close

Changelog

What's new for version 1.0.8

  • Add Grayscale tile and improve tile state and lock-screen recovery
  • Refine Nord UI styling
  • Fix README tiles list: Lock QS is an in-app toggle, not a tile
Close

Permissions

10 permissions requested

  • android.permission.WAKE_LOCK
  • android.permission.FOREGROUND_SERVICE
  • android.permission.FOREGROUND_SERVICE_SPECIAL_USE
  • android.permission.POST_NOTIFICATIONS
  • android.permission.ACCESS_NOTIFICATION_POLICY
  • android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
  • android.permission.WRITE_SECURE_SETTINGS
  • android.permission.INTERACT_ACROSS_USERS_FULL
  • com.tooler.app.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
  • moe.shizuku.manager.permission.API_V23
Close