# Init Launcher

View on GitHub

A minimal, stripped-metal style Android launcher with system monitoring capabilities inspired by terminal aesthetics and neofetch.

# Features

  • System Monitor: Real-time display of RAM, storage, and network stats with live graphs
  • Neofetch-style Header: ASCII art Android logo with device info
  • Pinned Apps Grid: Quick access to 9 favorite apps (3x3 grid)
  • URL Action Tiles: Pin a slot that fires an HTTP GET/POST on tap β€” webhooks, home automation, self-hosted triggers (e.g. a homelab endpoint that toggles your lights)
  • App Drawer: Full list of installed applications with search and sorting (Recent/A-Z)
  • Bare Metal Aesthetic: Black background, neon green monospace text, 1dp borders
  • Network Graph: Real-time network speed visualization
  • Lightweight: Minimal resource footprint, perfect for older devices
  • Lockscreen Companion App: A matching terminal-style lockscreen with ASCII big clock, date, and notification display (see lockscreen/)

# Screenshots

Init Launcher Demo Init Lockscreen Demo

# Installation

# From Source

  1. Clone this repository:

    git clone https://github.com/usr-wwelsh/init-launcher.git
    cd init-launcher
    
  2. Open the project in Android Studio

  3. Sync Gradle files

  4. Build and run on a device or emulator (Android 5.0+)

# APK Release

Check the Releases page for pre-built APK files.

# Usage

  • Launch Apps: Tap on any pinned app name
  • Reorder Pinned Apps: Long-press and drag a pinned app to reorder
  • Replace Pinned App: Double-tap on a pinned app slot to select a new app
  • Add a URL Action: Double-tap a slot and choose β€œβž• URL action…” to bind a label + URL + method (GET/POST). Tapping the tile fires the request with a 2s timeout and toasts the result. Cleartext http:// is allowed for LAN/homelab targets.
  • View All Apps: Tap the cyclone emoji button [ πŸŒ€ ] to open the app drawer
  • Search Apps: Use the search bar in the app drawer to filter applications
  • Sort Apps: Tap β€œRecent” or β€œA-Z” in the top-right of the app drawer to toggle between recently used and alphabetical sorting
  • Set as Default Launcher: Long-press the cyclone emoji button to access launcher settings, or Android will prompt you on first home button press

# Permissions

  • QUERY_ALL_PACKAGES: Required to list all installed apps (Android 11+)
  • INTERNET / ACCESS_NETWORK_STATE: Required for network speed monitoring
  • PACKAGE_USAGE_STATS: Optional, for better app management

# Technical Details

  • Language: Kotlin
  • UI Framework: XML (View-based)
  • Min SDK: 21 (Android 5.0 Lollipop)
  • Target SDK: 34 (Android 14)
  • Architecture: MVVM-lite with Android lifecycle components

# Project Structure

app/src/main/
β”œβ”€β”€ java/com/initlauncher/
β”‚   β”œβ”€β”€ MainActivity.kt          # Main launcher screen with monitoring
β”‚   β”œβ”€β”€ AppGridAdapter.kt        # RecyclerView adapter for pinned apps
β”‚   β”œβ”€β”€ AppDrawerActivity.kt     # Full app list screen
β”‚   β”œβ”€β”€ AppDrawerAdapter.kt      # Adapter for app drawer list
β”‚   └── NetworkGraphView.kt      # Custom view for network graph
β”œβ”€β”€ res/
β”‚   β”œβ”€β”€ layout/
β”‚   β”‚   β”œβ”€β”€ activity_main.xml    # Main launcher layout
β”‚   β”‚   β”œβ”€β”€ activity_app_drawer.xml
β”‚   β”‚   └── item_app.xml         # App item layout
β”‚   β”œβ”€β”€ values/
β”‚   β”‚   β”œβ”€β”€ colors.xml           # Theme colors
β”‚   β”‚   └── strings.xml
β”‚   └── drawable/
β”‚       β”œβ”€β”€ ic_launcher.xml      # App icon
β”‚       └── app_item_background.xml
└── AndroidManifest.xml

lockscreen/src/main/
β”œβ”€β”€ java/com/initlauncher/lockscreen/
β”‚   β”œβ”€β”€ LockscreenActivity.kt    # Lockscreen UI with clock and notifications
β”‚   β”œβ”€β”€ LockscreenService.kt     # Background service to show lockscreen
β”‚   β”œβ”€β”€ NotificationListener.kt  # Reads system notifications
β”‚   β”œβ”€β”€ NotificationItem.kt      # Notification data model
β”‚   β”œβ”€β”€ BlockClockView.kt        # ASCII big-block clock view
β”‚   β”œβ”€β”€ AsciiBigFont.kt          # ASCII font rendering
β”‚   β”œβ”€β”€ SetupActivity.kt         # First-run permission setup
β”‚   └── BootReceiver.kt          # Auto-start on device boot
└── AndroidManifest.xml

# Customization

# Color Scheme

Edit app/src/main/res/values/colors.xml to change the color scheme:

<color name="neon_green">#00FF00</color>   <!-- Primary text -->
<color name="neon_cyan">#00FFFF</color>    <!-- Headers -->
<color name="black">#000000</color>        <!-- Background -->

# Pinned App Count

Modify the grid size in activity_main.xml to change the number of pinned apps (default: 9 in a 3x3 grid).

# Roadmap

# Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

# License

This project is licensed under the MIT License - see the LICENSE file for details.

# Author

usr-wwelsh

# Acknowledgments

  • Inspired by Unix/Linux terminal aesthetics
  • Neofetch for the ASCII art concept
  • The Android developer community

πŸ”’ This site's search assistant runs a local AI model in your browser β€” no cloud AI, no tracking. See the ℹ️ in the chat panel for details.