Blue light may suppress the production of melatonin, the sleep hormone. Red Moon filters out blue light and dims your screen below the normal minimum, so you can use your phone comfortably at night.
- Schedule Red Moon to run from sunset to sunrise, or at custom times.
- Use the default color profiles, or set custom color, intensity, and dim levels.
- Automatically pause in apps secured against overlays, or those you choose.
- Quickly start, stop, and switch profiles via notification, tile (Android 7.0+), or widget.
Do your part — participate in the community
Communities keep software projects alive. Without them, projects usually fade
into obscurity when the primary developer loses interest or becomes busy in
other parts of their life. That's where you come in! You can:
- Read through the [issues] and give a
👍to the ones you care about most.
- Open [new issues] with feedback, feature requests, or bug reports.
- Help translate using [Weblate].
Screenshots & translation stats
Screenshots are slightly out of date.
To build the app on GNU+Linux, clone the repository, then, from the root directory, run
To install the app on a connected device or running emulator, run
./gradlew installFdroidDebug or
- We're happy to answer questions if you reach out via an issue, the chat room(s), or email.
- If your change makes the UI more complicated, we suggest checking if we're
interested before you implement it.
- Please keep code and translations in separate PRs.
Prioritize legibility over dogmatism. That said, consistency is nice, so
here's a short list of what I've been doing.
- 100 characters per line; 80 if you can.
- Indent 4 spaces, or 8 spaces if the previous line ends with
ENUMSuse all caps,
- Form suggests function: Group and align similar actions, and don't align dissimmilar ones, even if you could.
- Good comments explain why something is done; if you find yourself describing what the code does, consider:
- Refactoring into smaller functions with descriptive names
- Converting comments to logs. Code that requires comments probably also requires good logs to debug.
- Always use curly braces with
if(except short val/var one-liners:
val x = if (a) b else c)