DarQ Reborn
3.1.10 · GitHub
More about this app
Per-app selectable force dark option for Android 10 and above
DarQ Reborn


DarQ provides a per-app selectable force dark option for Android 10 and above.
Note
This is a modded fork maintained by Mohit Arora. The original repository by KieronQuinn is archived.
Important
Migrating from DarQ (original) or older DarQ Reborn (pre-v3.0):
The package name has changed from com.kieronquinn.app.darq to com.mohitarora.darqreborn. Android treats these as two separate apps, so a one-time manual switch is required:
- Export your settings using Backup & Restore inside the old app.
- Uninstall the old version.
- Install this version.
- Import your backup from Step 1.
All future DarQ Reborn updates (from this version onwards) will install as normal upgrades, no reinstall needed.
It uses a root or Shizuku (ADB) service to apply the theme seamlessly and quickly, without needing an accessibility service.
Requirements & Setup
DarQ requires either Root Access or the Shizuku service to be running on your device to modify system theme properties.
Shizuku Setup (For Non-Rooted Devices)
If your device is not rooted, you must set up Shizuku before running DarQ:
- Download Shizuku:
- Recommended (Modded Fork): Download and install the thedjchi Shizuku Fork. This version is actively maintained and highly recommended for custom, aggressive OEM skins (such as Xiaomi/HyperOS, OPPO/ColorOS, etc.) because it includes:
- A Watchdog service that automatically restarts Shizuku's background process if it gets killed by the system.
- Robust boot startup logic (e.g., waiting for Wi-Fi connection).
- Quality-of-life patches like ADB-over-TCP settings and intent controls.
- Original Version: Alternatively, you can install the original version from the Google Play Store or the RikkaApps Shizuku GitHub Repository.
- Recommended (Modded Fork): Download and install the thedjchi Shizuku Fork. This version is actively maintained and highly recommended for custom, aggressive OEM skins (such as Xiaomi/HyperOS, OPPO/ColorOS, etc.) because it includes:
- Open Shizuku and follow the in-app guide to start the service (using Wireless Debugging on Android 11+ or ADB command line on a computer).
- Once the Shizuku service is running, open DarQ and grant it Shizuku access when prompted.
Important
Device-Specific & Background Requirements:
- Xiaomi / Redmi / POCO: You must enable "USB Debugging (Security settings)" in Developer Options, and set Shizuku's Battery Saver to "No restrictions" in system App Info.
- OPPO / OnePlus / Realme: You must enable the "Disable permission monitoring" (or "Disable system optimization" in newer builds) setting in Developer Options to prevent the OS from blocking the connection.
- Background Service Termination (OnePlus / Oppo / Xiaomi): If you find that you have to manually open DarQ to make apps dark again after a while, the system has killed the background DarQ process. Go to Advanced Options in the app, enable "Keep service running in background", and click "Manage Notification" to hide or minimize the status bar icon if desired.
Xposed / LSPosed Mode Setup
If you are using the Xposed / LSPosed mode (to override apps that block Force Dark in code), the setup requires two steps:
- LSPosed Manager -> DarQ module scope: Add the apps you want Force Dark to work on. This gives DarQ permission to inject into those app processes.
- DarQ app -> App picker: Select the same apps to enable Force Dark on them, or enable "Always use Force Dark" in Advanced Options to skip this step and automatically apply Force Dark to everything in the LSPosed scope.
Important
Do not add System Framework or System UI to the LSPosed scope. DarQ works inside each individual app process and does not need system-level access. Adding System Framework is unnecessary and may cause system UI glitches or instability.
See the FAQ for more detail on the LSPosed scope configuration.
Automation & ADB Triggering (MacroDroid/Tasker/Termux)
If you use automation apps (such as MacroDroid, Tasker, or Automate) and want to start DarQ's background service externally, send a broadcast with the following details:
- Target:
Broadcast/BroadcastReceiver - Action:
com.mohitarora.darqreborn.ACTION_START_SERVICE - Package:
com.mohitarora.darqreborn - Class:
com.kieronquinn.app.darq.receivers.TriggerReceiver - Flags:
32(FLAG_INCLUDE_STOPPED_PACKAGES)
Tip
Specifying the explicit Class and Flags: 32 ensures the broadcast successfully wakes up and triggers DarQ across all Android versions (Android 8.0+ through 14+) on any device, under all conditions (normal operation, background, or force-stopped).
Alternatively, you can trigger it via ADB shell or Termux:
adb shell am broadcast -a com.mohitarora.darqreborn.ACTION_START_SERVICE -n com.mohitarora.darqreborn/com.kieronquinn.app.darq.receivers.TriggerReceiver -f 32
Auto Dark Theme & Scheduling
DarQ provides automated dark theme scheduling to protect your eyes when needed:
- Schedule Modes:
- Sunset to Sunrise: Automatically switches dark theme at sunset and sunrise using location calculations or optional GPS positioning.
- Custom Time Schedule: Set custom start (Dark Mode ON) and end (Dark Mode OFF) times according to your routine.
- Follow System Theme: Mirrors your phone's own Dark Theme setting live, no clock schedule of its own. Reacts within moments whenever you (or another app, or an Android schedule like Bedtime/Sunset-to-sunrise) change the system theme. Requires Persistent Service, which is enabled automatically when you select this mode.
- Schedule Targets:
- System & DarQ Dark Mode: Toggles Android System Dark Mode and DarQ Per-App Force Dark simultaneously. Currently open apps switch instantly when the boundary crosses because Android OS broadcasts system-wide
uiModeconfiguration changes. - DarQ Force Dark Only: Toggles per-app force dark without altering system dark mode. The updated rendering mode applies when target apps are next launched or reopened (this prevents DarQ from force-closing active apps or interrupting unsaved work in open sessions).
- System & DarQ Dark Mode: Toggles Android System Dark Mode and DarQ Per-App Force Dark simultaneously. Currently open apps switch instantly when the boundary crosses because Android OS broadcasts system-wide
Note
Toggling the Auto Dark Schedule ON or OFF immediately re-evaluates current schedule conditions against the active time:
- Turning OFF the schedule: Immediately restores your manual Enable DarQ settings and per-app force dark preferences. Under System & DarQ Dark Mode, your system dark mode is also returned to what it was before the schedule took control.
- Turning ON the schedule: Instantly checks current time against your schedule (or location-based sunset/sunrise) and applies the correct light or dark mode state.
- Your manual Enable DarQ toggle and whitelist selections are never permanently overwritten by the schedule.
- That system dark mode restore reads Android's night mode setting. If your system dark theme is on Sunset to sunrise or Bedtime rather than a plain On, Android reports a schedule rather than "on", so DarQ restores light mode. See the FAQ.
- Follow System Theme is unaffected by that ambiguity: it reads the currently rendered theme state directly, not the underlying setting.
Please read the Frequently Asked Questions sections in the app or here for more information and answers.
Known Behaviour
Samsung Pop-up View title bar. If you summon a Pop-up View window within the first few seconds of launching an app you have selected in DarQ, that pop-up's title bar can appear white. Opening a pop-up at any other time is unaffected, and the app itself is always correctly darkened.
This is not a bug that can be fixed in Shizuku mode. Samsung's pop-up title bar reads the same system-wide force dark switch DarQ uses, and Android samples that switch once per window at creation time. For those few seconds the app being launched needs it on while the pop-up being created needs it off, and there is only one switch. DarQ does not try to work around it, because forcing the switch off early to satisfy the pop-up makes the app you just opened render in its light theme instead, which is far more noticeable. Waiting a moment before summoning the pop-up avoids it, and Xposed/LSPosed mode is immune because it hooks each app process individually rather than sharing one global switch.
See the FAQ for the full explanation.
Troubleshooting & Bug Reporting
If you encounter crashes or issues, sharing a logcat log is extremely helpful for diagnostics. Here is how to capture it on-device:
- Install an open-source log viewer like LogFox.
- Open LogFox and grant it Shizuku access.
- Start recording logs, launch DarQ Reborn to trigger the crash, and copy the captured logs from the notification pop-up.
- Share the copied crash log in your bug report or GitHub issue.
How Shizuku is used
Can force dark per app, schedule system night mode and time it by sunrise sunset via a `Shizuku user service`.
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
DarQ Reborn runs its core dark mode control inside a Shizuku privileged service.
- Per-app force dark: watches which app moves to the foreground and turns the system force dark property on only for apps the user selects.
- Scheduled night mode: turns system night mode on and off on a schedule and reads the current night setting to save it and restore it later.
- Sunrise sunset timing: gets the last known location through the privileged service to calculate local sunrise and sunset times for the auto schedule, falling back to timezone location when unavailable.
- OnePlus extra dark: enables additional system force dark toggles on compatible OnePlus phones using secure settings commands through the privileged service.
- Clean up stale services: lists service processes and stops orphaned copies from earlier runs to keep only the current service active.
Android APIs or commands used
android.os.SystemProperties.setandroid.os.SystemProperties.getIActivityManager.registerProcessObserverIActivityManager.unregisterProcessObserverIActivityManager.getRunningAppProcessesIUiModeManager.setNightModeILocationManager.getLastLocationSettings.Secure.getIntsettings put secureps -A -o PID,NAMEkillcmd uimode night
Notable details
Sunrise sunset mode can use timezone based location when the privileged last location is unavailable, so times stay approximate rather than failing. The extra OnePlus toggles only have an effect on compatible OxygenOS versions.
Changelog
What's new for version 3.1.10
Summary: DarQ Reborn v3.1.10 fixes a service timeout issue on Android 12 devices (#44) and improves background service stability with Shizuku.
🛠️ Bug Fixes & Improvements
- Android 12 Service Connection Fix (#44): Resolved a startup crash in the background service process that caused connection timeouts on Android 12 and older systems.
- Service Stability: Hardened background process startup against unexpected errors and added safeguards to prevent external watchdogs from restarting the service prematurely.
- Extended Timeout: Increased the service connection timeout from 25s to 40s to accommodate slower devices and custom hardware setups.
Full Changelog: https://github.com/Arora-Sir/DarQ-Reborn/compare/v3.1.9...v3.1.10
Permissions
18 permissions requested