Jarngreipr
2.8.1 · GitHub
More about this app
Launcher for dual-screen gaming devices. Uses Shizuku to map on of the touch screens to controller inputs
Járngreipr 🧤
Designed with dual-screen devices in mind, Jarngreipr is a clean, powerful launcher that lets you decide exactly where your apps open and much more.
Járngreipr is a modern, highly customizable launcher built with Jetpack Compose that combines beautiful aesthetics with powerful functionality. Optimized for devices like the AYN Thor, it excels on bottom screens and dual-screen setups while working perfectly on any Android device.
It is recommended to be used with Mjolnir, an app that transforms your Home button into a powerful dual-screen controller.
Just as Thor needs his iron gloves, Járngreipr 🧤, to safely wield Mjolnir 🔨, this launcher helps you grip control of your device's interface.
✨ Features
🏠 Multiple Home Screen Modes
- Apps Tab - Traditional grid layout with apps only
- Apps & Widgets Tab - Combine apps and Android widgets on the same page
- App Drawer - Full app list with instant search and filtering
- Multiple Pages - Create unlimited home screen pages with different layouts
- Page Customization - Set different modes for each page independently
📱 Advanced App Management
- Folder Support - Organize apps into folders with custom names
- Free-Positioned Apps - Drag apps anywhere on the screen, not just in grid cells
- Drag Lock - Lock app positions to prevent accidental moves
- App Visibility Control - Show/hide specific apps on each page
- Custom Icons - Set custom icons for individual apps
- App Display Preferences - Choose between icon only, name only, or both
- App Size Control - Adjust app icon sizes per your preference
- Recent Apps - Quick access to recently used applications
- Quick Delete - Batch uninstall multiple apps at once
🧩 Widget Support
- Android Widgets - Add resizable Android widgets to any Apps & Widgets page
- Widget Picker - Browse and add widgets from all installed apps
- Resize Mode - Dynamically resize widgets to fit your layout
- Widget Positioning - Place widgets anywhere on compatible pages
🎮 Gamepad & Control Features
- Full D-Pad Navigation - Complete gamepad support throughout the UI
- Control Pad Settings - Customize gamepad button mappings
- Joystick Mode - Configure analog stick sensitivity and behavior
- Button Mapping - Map specific gamepad buttons to custom actions
- Focus Management - Intelligent focus handling for seamless navigation
- On-Screen Keyboard - Built-in keyboard that doesn't overlap your apps
- Back Button Shortcuts - Configure custom back button actions
🎨 Appearance & Themes
6 Built-in Color Themes
- Pink & Violet
- Blue & Yellow
- Green & Cyan
- Purple & Orange
- Red & Blue
- Magenta & Lime
Custom Theme Creator - Design your own themes with custom primary and secondary colors
OLED Mode - True black backgrounds for OLED displays to save battery
Icon Pack Support - Use any installed icon pack (Lawnicons, Arcticons, etc.)
Icon Pack Browser - Preview and switch between icon packs in-app
Theme Sharing - Share your current theme with nearby devices via Bluetooth (Ping)
What is Ping?
- Ping is an open sourced library developed to allow seemless
Theme Sharingbetween two devices runningJarngreipr. It usesbluetooth low energy (BLE)to transfer Themes and Google'sNearby Connections APIfor transferring Wallpapers. Go toSettings -> Appearance -> Theme Sharingand accept the required permissions to get started. Want to know more about Ping? Here is the GitHub repo!
🖼️ Wallpaper Options
- System Wallpaper - Use your device's current wallpaper
- Custom Images - Set any image from your gallery
- Default Themes - Beautiful gradient backgrounds
- Live Preview - See changes instantly
⚙️ Layout Customization
- Grid Settings - Customize rows and columns for each page
- Unlimited Mode - Disable grid limits for free-form layouts
- Header Visibility - Show/hide top header bar
- Power Button - Toggle power button visibility
- App Names - Show/hide app names under icons
- Notification Badges - Display notification counts on app icons
Note: Notification Badges will only work if you download Jarngreipr from the Play Store.
🔧 System Features
- Smart Search - Fast app search across all pages and drawer
- Auto-Refresh - Automatically updates when apps are installed/uninstalled
- Auto-Update Checker - Get notified of new launcher versions
- Crash Logger - Built-in crash reporting and log viewer
- Performance Monitor - Track app performance metrics
- Shizuku Integration - Enhanced system-level features with Shizuku
🛠️ Developer & Power User Features
- Crash Logs Viewer - View and export crash logs for debugging
- What's New Dialog - See new features after updates
- FAQ & Help - Built-in help documentation
- Export Settings - Backup and restore your configuration
- Debug Mode - Additional diagnostic information
📸 Screenshots
Note: All screenshots were captured from an AYN Thor's bottom screen.
📋 Requirements
- Android 13 (API 33) or higher
- Recommended: 4GB+ RAM for smooth widget performance
- Optional: Shizuku for advanced features
🚀 Installation
From Releases (Recommended)
- Download the latest APK from the Releases page
- Transfer to your device if needed
- Enable "Install from Unknown Sources" in Settings → Security
- Install the APK
- Set Járngreipr as your default launcher when prompted
From Source
# Clone the repository
git clone https://github.com/BrianJr03/Jarngreipr.git
cd Jarngreipr
# Build with Gradle
./gradlew assembleRelease
# Install to connected device
adb install app/build/outputs/apk/release/app-release.apk
Requirements for building:
- Android Studio Ladybug or higher
- JDK 11 or higher
- Android SDK 36
🎯 Usage Guide
Basic Navigation
Touch:
- Tap to select apps/options
- Long press for context menus
- Swipe left/right between pages
- Pinch to zoom (where supported)
Gamepad/D-Pad:
- Arrow Keys/D-Pad - Navigate between apps and UI elements
- Enter/A Button - Launch app or select option
- Back/B Button - Go back or cancel
- Menu/Start - Open app options (long press)
- Triggers - Page navigation (if configured)
Getting Started
First Launch
- Grant necessary permissions (Accessibility, Usage Stats)
- Choose your preferred theme
- Set up your first home screen page
Adding Apps
- Apps automatically appear on your first page
- Long press apps to move, hide, or add to folders
- Use the App Drawer to find and add apps
Creating Folders
- Long press an app → "Create Folder"
- Name your folder and add multiple apps
- Tap folders to open, long press to edit
Adding Widgets
- Create an "Apps & Widgets" page
- Tap "+" → Select widget
- Resize and position as needed
Customization
Themes & Appearance:
- Tap ⚙️ Settings icon
- Appearance section:
- Theme Selector - Choose from 6 themes or create custom
- Icon Pack - Browse and apply icon packs
- OLED Mode - Enable true black backgrounds
- Wallpaper - Set custom backgrounds
Layout Configuration:
- Settings → Layout section:
- Grid Settings - Adjust columns/rows per page
- Unlimited Mode - Enable free-form positioning
- Header Visibility - Show/hide top bar
- App Names - Toggle name display
Control Pad (Gamepad):
- Settings → Extras → Control Pad
- Configure button mappings
- Adjust joystick sensitivity
- Choose joystick mode (L/R/Both)
Advanced Features
Free Positioning:
- Enable "Unlimited Mode" in Grid Settings
- Long press and drag apps anywhere
- Use "Drag Lock" to prevent accidental moves
App Visibility:
- Long press background → "App Visibility"
- Toggle which apps appear on current page
- Different pages can show different apps
Quick Delete:
- Settings → Extras → Quick Delete
- Select multiple apps to uninstall at once
- Useful for cleaning up after gaming sessions
🎨 Available Themes
| Theme | Primary | Secondary | Description |
|---|---|---|---|
| Pink & Violet | Blue Violet | Hot Pink | Vibrant and playful |
| Blue & Yellow | Royal Blue | Gold | Classic and bold |
| Green & Cyan | Sea Green | Dark Cyan | Fresh and modern |
| Purple & Orange | Dark Violet | Dark Orange | Energetic contrast |
| Red & Blue | Royal Blue | Crimson | Patriotic vibes |
| Magenta & Lime | Magenta | Lime Green | Maximum pop |
| Custom | Your Choice | Your Choice | Design your own! |
🔌 Shizuku Integration
Járngreipr supports Shizuku for enhanced system features:
- Install Shizuku from Play Store or GitHub
- Grant Shizuku ADB permissions or root access
- Launch Járngreipr - it will detect Shizuku automatically
- Enjoy enhanced features like advanced app management
📡 Theme Sharing (Ping)
Járngreipr supports sharing themes and wallpapers wirelessly with nearby devices using the Ping library (Bluetooth LE) and the Nearby Connections API.
Theme Sharing via Bluetooth (Ping)
Broadcasts your current theme to nearby Járngreipr devices over BLE so others can receive and apply it instantly.
Setup:
- Navigate to Settings → Theme Share
- Grant Bluetooth permissions when prompted
- Grant battery optimization exemption for reliable background operation
- Tap Start Sharing in the Theme Sharing section to begin broadcasting
Auto-Start: Enable auto-start in Theme Share Settings to begin broadcasting automatically every time the launcher opens.
Quick Settings Tile: A system Quick Settings tile is available for toggling theme sharing without opening the app.
Wallpaper Sharing via Nearby Connections
Discovers and receives wallpapers from nearby devices using the Nearby Connections API over Wi-Fi/Bluetooth.
Setup:
- Navigate to Settings → Theme Share
- Grant Nearby/Wi-Fi permissions when prompted
- Toggle Nearby Wallpaper to start discovering
Received wallpapers are saved and accessible in the Received Wallpapers list on the same screen.
Received Themes & Wallpapers
Both received themes and wallpapers are stored locally and shown in the Theme Share screen, where you can apply or delete them.
Required Permissions
| Permission | Purpose |
|---|---|
BLUETOOTH_SCAN / BLUETOOTH_ADVERTISE / BLUETOOTH_CONNECT |
BLE theme broadcasting |
FOREGROUND_SERVICE / FOREGROUND_SERVICE_CONNECTED_DEVICE |
Background sharing |
ACCESS_FINE_LOCATION / ACCESS_WIFI_STATE / CHANGE_WIFI_STATE |
Nearby wallpaper discovery |
NEARBY_WIFI_DEVICES (API 33+) |
Nearby Connections |
🤝 Contributing
Contributions are welcome! Whether it's bug fixes, new features, or documentation improvements.
How to contribute:
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Code Quality:
- The project uses Jetpack Compose and modern Android architecture (MVVM + Hilt)
- Comprehensive test suite with 472+ tests
- Clean code principles and consistent patterns
- All PRs should maintain or improve test coverage
🐛 Bug Reports & Feature Requests
Found a bug or have an idea? Open an issue with:
- Bug Reports: Device model, Android version, steps to reproduce
- Feature Requests: Use case description and expected behavior
- Questions: Check FAQ first, then ask away!
📝 License
This project is open source and available under the MIT License.
💖 Support the Project
If you enjoy using Járngreipr, consider supporting development:
Your support helps maintain and improve the launcher with new features, bug fixes, and updates!
🏗️ Architecture & Tech Stack
Built with modern Android development practices:
- UI: 100% Jetpack Compose
- Architecture: MVVM with Clean Architecture
- DI: Hilt/Dagger
- Async: Kotlin Coroutines & Flow
- Persistence: DataStore Preferences
- Testing: JUnit, Turbine, MockK (472+ tests)
- Material Design 3 with custom theming
- Minimum SDK: 33 (Android 13)
- Target SDK: 36 (Android 14+)
📚 Documentation
- FAQ & Help - Common questions and troubleshooting
- Changelog - Version history and updates
- API Documentation - For developers extending the launcher
🙏 Acknowledgments
- AYN - For creating the Thor handheld that inspired this launcher
- Mjolnir - The companion app for enhanced dual-screen control
- Icon Pack Creators - For beautiful icon packs that work seamlessly
- Community Contributors - For feedback, bug reports, and feature ideas
- You - For using Járngreipr! 🧤
- Ko-fi icon by Icons8
- Discord icon by Icons8
- Buy Me a Coffee icon by Icons8
🗺️ Roadmap
Completed ✅
- Full widget support
- Folder management
- Free positioning mode
- Custom theme creator
- Control pad configuration
- OLED mode
- Icon pack support
- Quick delete feature
- Auto-update checker
- Theme sharing via Bluetooth (Ping)
- Wallpaper sharing via Nearby Connections
Coming Soon 🚀
- Gesture customization
- App groups/categories
- Smart app suggestions
- Backup/restore to cloud
- Tablet-optimized layouts
- Additional animation options
- Plugin system for extensions
Made with ❤️ by BrianJr03
Wield your launcher like Thor wields Mjolnir 🔨
How Shizuku is used
Can map touch controls to gamepad input and use a trackpad mouse via `InputManager.injectInputEvent` through Shizuku.
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 run a privileged input service so a second touch screen can act as a game controller and mouse.
- Play games with touch buttons: on screen buttons send gamepad key presses to the active game through the privileged input service, with a shell key event as fallback.
- Use analog triggers and sticks: shoulder triggers send key plus analog axis motion events, and left and right sticks send joystick motion events for movement and camera control through the same service.
- Control mouse cursor: the trackpad screen moves the cursor, sends left and right clicks and scrolls by injecting mouse motion events through the privileged input service.
Android APIs or commands used
InputManager.injectInputEventInputManager.getInstanceKeyEventMotionEvent.obtaininput keyevent
Changelog
What's new for version 2.8.1
New
- Added Physical Media as an option for the marquee overlay media type
- Frontend Widget Updates
- Tap a Frontend widget on Canvas to open game details for the focused game
- Long-press a Frontend widget on Canvas to edit its settings, now with a Remove from Canvas option
- Music, jingles, and podcasts now show up in system equalizer apps like JamesDSP
Coming Soon
- More updates on Jarngreipr Frontend including
- Scraper for Rom media
- More Customization Options
- More Emulator support
- GameHub, GameHub Lite, and Game Native support
2.8.2
Permissions
32 permissions requested