Skip to content

A rust based command line interface that wraps the android debug bridge into a suite of tools.

License

Notifications You must be signed in to change notification settings

sorinirimies/droidtui

Repository files navigation

DroidTUI 🤖

Crates.io Version License Release CI

A beautiful Terminal User Interface (TUI) for Android development, providing an intuitive interface for ADB (Android Debug Bridge) commands with stunning visual effects and animations powered by TachyonFX.

Features ✨

  • 🎨 Beautiful UI: Clean, modern terminal interface with consistent Android green theming
  • 🌟 TachyonFX Animations: Dramatic reveal animations and gradient effects
  • 📱 ADB Command Center: 13 functional ADB command categories with real-time execution
  • 📜 Scrollable Results: Navigate through long command output with visual scroll indicators
  • 🎭 Clean Design: Static Android green selections and professional layout borders
  • ⌨️ Keyboard Navigation: Intuitive vim-like navigation (j/k) and arrow keys
  • 🚀 Fast & Responsive: Built with Rust and Ratatui for optimal performance
  • 🔧 Real Command Execution: Actual ADB command execution with formatted output

Installation 🔧

Prerequisites

  • Android SDK with ADB in your PATH

Install from crates.io

cargo install droidtui

Install from Source

git clone https://github.com/sorinirimies/droidtui.git
cd droidtui
cargo install --path .

Run

droidtui

Or with cargo:

cargo run

Usage 🎮

Startup Screen

When you launch DroidTUI, you'll see a stunning startup screen with:

  • TachyonFX-powered reveal animation with gradient sweep effects
  • Dynamic wave animations and center-out reveal patterns
  • Progressive content loading with smooth fade-in transitions
  • Press any key to continue to the main menu

Main Menu

The main interface provides access to functional ADB commands with expandable sub-options:

  • 📱 List Devices ▶ - Show all connected Android devices with detailed info
    • Basic device list, detailed info, serial numbers only
  • 📋 List Packages ▶ - List all installed packages with file paths
    • All packages, with paths, user packages only, system packages only
  • 🔋 Battery Info ▶ - Display detailed battery information and status
    • Full battery status, battery level only, charging status
  • 💾 Memory Usage ▶ - Show comprehensive memory usage statistics
    • System memory, available memory, top memory apps
  • 📊 CPU Info ▶ - Display CPU information and specifications
    • CPU details, current usage, load average
  • 🔗 Network Info ▶ - Show network connectivity and configuration
    • Connectivity status, WiFi info, IP configuration
  • 📱 Device Properties ▶ - Get all device system properties
    • All properties, device model, Android version
  • 🎯 Running Processes ▶ - List all currently running processes
    • All processes, top processes, user processes only
  • 📊 System Services ▶ - List all system services and their status
    • All services, running services, app services
  • 📷 Screenshot ▶ - Take and save device screenshots
    • Take & save locally, save to device, view screenshot paths
  • 🔄 Reboot Device ▶ - Reboot the connected device
    • Normal reboot, fast reboot (bootloader), recovery mode
  • 📜 System Log ▶ - View recent system logs (last 100 lines)
    • Recent logs, errors only, warnings & errors, clear logs
  • 🔍 ADB Version ▶ - Display ADB version information
    • ADB version, ADB help, ADB installation path

Navigation

Key Action
/ k Move up in menu / Scroll up in results
/ j Move down in menu / Scroll down in results
Enter / Enter sub-options (main menu)
Enter Execute selected command (child menu)
/ Backspace Return to main menu (from child menu)
Page Up Fast scroll up in results (10 lines)
Page Down Fast scroll down in results (10 lines)
Home Jump to beginning of results
End Jump to end of results
q / Esc Quit application / Return from results
Ctrl+C Force quit

Interface Layout

The interface adapts based on navigation mode:

Main Menu Mode:

  1. Left Panel (60%): Main ADB commands with ▶ indicators for expandable items (Android green border)
  2. Right Panel (40%): Description of selected command with usage hints (dark gray border)
  3. Footer: Navigation help and keyboard shortcuts

Child Menu Mode:

  1. Left Panel (40%): Category overview with current selection highlighted (dark gray border)
  2. Right Panel (60%): Expanded sub-options for the selected category (Android green border)
  3. Footer: Updated navigation help for child menu mode

Dependencies 📦

  • ratatui: Terminal user interface library
  • crossterm: Cross-platform terminal manipulation
  • tokio: Async runtime
  • tachyonfx: Visual effects and animations
  • color-eyre: Beautiful error handling
  • futures: Async utilities

Technical Details 🔧

Architecture

  • Event-driven: Async event system for responsive UI
  • State Management: Clean separation of startup, menu, execution, and result states
  • Effects System: Startup animations with consistent Android green theming
  • Command Execution: Real ADB command execution with comprehensive error handling
  • Menu System: Dual-level navigation with expandable command categories

Project Structure

src/
├── main.rs          # Application entry point
├── app.rs           # Main application logic and state management
├── event.rs         # Event handling system
├── ui.rs            # User interface rendering
├── menu.rs          # Menu system and ADB commands
└── effects.rs       # Visual effects and animations

Development 🛠️

Adding New Commands

To add a new ADB command to the menu:

  1. Edit src/menu.rs
  2. Add a new MenuItem to the items vector in Menu::default()
  3. Include label, description, command, and optional children

Example:

MenuItem {
    label: "🔧 Custom Command".to_string(),
    description: "Description of what this command does".to_string(),
    command: "adb shell your-complete-command-here".to_string(),
    children: vec![
        MenuChild {
            label: "🎯 Specific Option".to_string(),
            description: "Specific variation of the command".to_string(),
            command: "adb shell specific-command".to_string(),
        },
        // Add more children as needed
    ],
},

For simple commands: Leave children as an empty vector vec![] For expandable commands: Add MenuChild items with specific variations

All commands are executed as-is, so ensure they are complete and functional.

Customizing Effects

Visual effects can be modified in src/effects.rs:

  • Adjust startup reveal animation timing and intensity
  • Modify gradient wave effects and background colors
  • Change static Android green selection color
  • Change startup progress phases and content timing
  • Modify layout border colors (green for active, dark gray for inactive)

Release Automation 🚀

📚 See QUICK_RELEASE.md for a quick start guide!

DroidTUI includes automated tools for version management and releases.

Quick Release

Install just command runner:

cargo install just

Bump version and release in one command:

just release 0.2.5

Available Commands

just              # Show all available commands
just version      # Show current version
just bump 0.2.5   # Bump version to 0.2.5
just release 0.2.5  # Full release workflow
just check-all    # Run all checks (fmt, clippy, test)

Manual Version Bump

Use the provided script:

./scripts/bump_version.sh 0.2.5

Automated Workflows

  • CI Workflow: Runs tests on every push and PR
  • Release Workflow: Builds and publishes on tag push
  • Update README: Automatically updates version badge on release

📚 Documentation:

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 📄

Copyright (c) Sorin Albu-Irimies mihaiirimies@gmail.com

This project is licensed under the MIT license (LICENSE or http://opensource.org/licenses/MIT)

Acknowledgments 🙏

  • Ratatui - Amazing TUI library for Rust
  • TachyonFX - Visual effects library
  • Android team for the awesome platform and tooling

Made with ❤️ and ☕ for Android developers

About

A rust based command line interface that wraps the android debug bridge into a suite of tools.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •