Skip to content

Repository files navigation

GoL Screensaver

icon

Lint Test CodeFactor Maintainability Rating

GoL Screensaver is an app that generates and updates screensavers for Onyx Boox using Conway's Game of Life algorithm. Optimized for e-ink screens!

🎨 Features

  • Auto-updating screensaver based on Conway's Game of Life

    • Note that wallpaper will not update while the screen is locked, only on the next unlock -> lock.
  • Customizable foreground and background colors (chosen specifically for color e-ink)

  • Pattern picker for common Game of Life starting states, or paste your own RLE pattern from LifeWiki

  • Optional auto-reseeding: when the board dies out or stagnates (a still life or period-2 oscillator), it restarts with fresh random noise

  • Configurable settings: cell size, update interval, and cellular automaton rule (Conway's Life, HighLife, Day & Night, Seeds, Life without Death)

  • Optional generation & population counter drawn on the wallpaper

  • Optional upcoming-calendar overlay using calendars already synced to the device

    • Calendar access is read-only and opt-in; users choose exactly which visible calendars contribute
    • Event titles can appear on the lock screen. Private events are shown as “Busy,” and event details are never cached by the app
    • Calendar content refreshes with the normal wallpaper schedule or while the app is open; no separate background calendar job is scheduled
  • Works on non-Onyx Android devices too: sets the lock screen (and/or home screen) wallpaper instead of the Onyx screensaver

  • Translated into German, Spanish, French, Russian, and Simplified Chinese

🏄 Usage

  1. Install the app on your Android device from F-Droid, the Releases Section, or by building from source.

  2. ⚠️ Disable freezing in order to for the game to self-update

    • Settings > Apps & Notifications > Freeze Settings > GoL Wallpaper (OFF)
    • Note: Updates happen at most every 15 minutes (configurable in Settings) and only with sufficient battery
  3. Launch the app:

    • (Optional) Choose foreground and background colors in the app
    • (Optional) Pick a starting pattern
    • (Optional) Open Settings to change the rule, cell size, update interval, or to show the generation & population counter
    • (Optional) Open Calendar overlay, grant read access, choose calendars, and select the horizon, corner, and size
    • (Optional) Tap "Generate Next Step" to advance the Game of Life and update your wallpaper

🤝 Contributing

Pull requests and feature requests / bug reports are welcome!

This project uses Kotlin and Jetpack Compose with no 3rd party dependencies and is checked by detekt with hbmartin's rules.

  1. Fork the repository and git clone
  2. Create a new branch git checkout -b cool-feature-name
  3. Open in Android Studio, sync Gradle, and start hacking!
  4. Ensure checks are passing by running ./gradlew detektMain
  5. Commit your changes git commit -am 'Description of what changed'
  6. Push to the branch git push origin head
  7. Create a new Pull Request

Project Structure

  • app/src/main/java/me/haroldmartin/golwallpaper/ – Main source code
    • domain/ – Game of Life logic and patterns
    • ui/ – Jetpack Compose UI components
    • utils/ – Utility functions (saving wallpaper, color picking, etc.)

✍️ Authors

⚖️ License

MIT License with addendum: it's legally required for you to do at least one of have fun with this or report an issue explaining why not, no takesies backsies.

About

Conway's Game of Life screensaver for Onyx Boox Android devices

Topics

Resources

Code of conduct

Stars

9 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages