Jarngreipr is an open-source Android launcher, ROM frontend, and ES-DE companion engineered for the AYN Thor and dual-screen handhelds. It lets users assign app launch displays, browse game libraries across screens, and enable main display GamePad control via Shizuku for complete dual-display handheld management.
Technical Overview
Built with Kotlin 2.3, Jetpack Compose, and dual Room databases, Jarngreipr uses the Storage Access Framework (SAF) and WorkManager to execute background ROM scanning and metadata scraping. It integrates Shizuku to provide GamePad control over the main display, binds an Android Accessibility Service for AYN Thor Home button gestures, and utilizes the Presentation API to route video playback to secondary displays. For local wireless transfers, the architecture relies on the Ping library over Bluetooth Low Energy (BLE) and Google's Nearby Connections API.
Core Features of Jarngreipr
- Canvas Grid: Combines apps, folders, pinned ROMs, resizable Android widgets, live frontend game art, GIFs, and RSS tiles on a single customizable 1-to-12 column page.
- Frontend Library: Supports a 40-system JSON catalog with 204 built-in system logos, pre-configured launch intents for around 110 emulators (including RetroArch cores, PPSSPP, Dolphin, NetherSX2, and Winlator), and background artwork scraping via ScreenScraper and SteamGridDB.
- Dual-Screen Control: Enables animated top-and-bottom screen swapping via L3/R3 clicks, independent screen volume sliders, per-app display targeting (
Primary,External, orAsk), and parallel companion app launching. - ES-DE Companion: Installs event scripts into
/storage/emulated/0/ES-DE/scriptsto synchronize secondary display wallpapers, marquee logos, system-specific background music, Konfetti effects, and display power states within half a second.
Compatibility & Quick Setup
Requires Android 13 (API 33) or higher — install the APK, set Jarngreipr as your default launcher, and authorize Shizuku to enable main display GamePad control.
Disclaimer: Screen swapping and Home button gestures are exclusive to the AYN Thor, and Mjolnir's accessibility service must be disabled first to avoid Home button binding conflicts.