ShizuStore

Better Night Light

paulsnuff

1.0.4 · GitHub

Download APK
Display management Android 10+ 2 days ago GPL-3.0
33 ShizuStore
22 GitHub
69 Stars
4 MB Size

More about this app

Grants advanced control over Android's native Night Light: scheduling, boost phases and precise colour temperature through Shizuku or root secure-settings access.

Better Night Light

Better Night Light icon

Installation

Get it on ObtainiumGet it on GitHub

Requirements

  • Android 10 (API 29) or higher
  • One of the following options to grant the app the permissions required to control Night Light:
    • ADB
    • Shizuku (or compatible alternatives)
    • Root access

Warning

This app has only been tested on emulators and a Pixel 10 Pro. Use it at your own risk.

Screenshots

Screenshot 1Screenshot 2Screenshot 3Screenshot 4

Features

  • Flexible scheduling - manual start/end times or automatic sunrise & sunset based on your location (auto-detected or entered manually).
  • Night phases - go beyond a simple on/off schedule:
    • Base phase covering the main part of the night,
    • Boost phase with a stronger filter later at night,
    • Force off phase after which the filter stays off.
  • Adjustable strength - set the color temperature anywhere from 1000 K to 6500 K, for each phase separately.
  • Smooth transitions - apply changes instantly or ramp gradually across the night.
  • Reliable automation - a foreground service keeps the schedule up to date, backed by periodic work as a safety net. Everything restarts automatically after a reboot.

Why?

Not all ROMs expose advanced Night Light scheduling, and the built-in options are often limited to a simple sunset-to-sunrise toggle. Better Night Light fills that gap by controlling the system's native Night Light directly.

Why use the native Night Light instead of overlay apps?

  • True color transformation. Native Night Light adjusts each pixel's R, G, and B values directly in the GPU rendering pipeline, before the image is displayed. Overlay apps simply draw a semi-transparent layer on top of the already-rendered image, which washes out contrast and mutes saturation.
  • Zero performance cost. The system-level approach adds no extra GPU or battery load, whereas an overlay layer must be rendered every single frame.
  • Complete coverage. Night Light applies its transform at the final display pipeline stage, so it uniformly covers every visible pixel - including privileged system UI like the notification shade and lock screen, above which overlay apps cannot render.

License

Licensed under the GNU GPL v3 or any later version.

Close

How Shizuku is used

Can grant itself secure settings access via `pm grant` to control Night Light activation, temperature and schedule mode.

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

Shizuku is used to give the app itself the system permission it needs for advanced Night Light control.

  • Grant settings permission: the app runs a privileged worker through Shizuku that executes the pm grant and cmd package grant shell commands to grant itself write access to system secure settings.
  • Control Night Light settings: once that access is granted, the app can turn Night Light on or off, set a precise color temperature and change the automatic schedule mode by updating the system Night Light settings.

Android APIs or commands used

  • pm grant
  • cmd package grant
  • Settings.Secure.putInt
Close

Changelog

What's new for version 1.0.4

Close

Permissions

13 permissions requested

  • android.permission.WRITE_SECURE_SETTINGS
  • android.permission.ACCESS_COARSE_LOCATION
  • android.permission.ACCESS_FINE_LOCATION
  • android.permission.ACCESS_BACKGROUND_LOCATION
  • android.permission.RECEIVE_BOOT_COMPLETED
  • android.permission.FOREGROUND_SERVICE
  • android.permission.FOREGROUND_SERVICE_SPECIAL_USE
  • android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
  • android.permission.POST_NOTIFICATIONS
  • android.permission.WAKE_LOCK
  • android.permission.ACCESS_NETWORK_STATE
  • io.github.paulsnuff.betternightlight.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
  • moe.shizuku.manager.permission.API_V23
Close