{"id":37401446,"url":"https://github.com/reapercanuk39/termux-kotlin-app","last_synced_at":"2026-01-19T23:01:44.387Z","repository":{"id":332252740,"uuid":"1133198337","full_name":"reapercanuk39/termux-kotlin-app","owner":"reapercanuk39","description":"🚀 Termux Android Terminal Emulator - Fully converted to Kotlin! A modern, type-safe fork of the official termux-app with 100% Kotlin codebase.","archived":false,"fork":false,"pushed_at":"2026-01-16T16:22:42.000Z","size":117426,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-16T17:20:19.512Z","etag":null,"topics":["android","android-app","android-terminal","bash","kotlin","kotlin-android","linux","shell","terminal","terminal-app","terminal-emulator","termux","termux-app","termux-kotlin"],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/reapercanuk39.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":"https://termux.dev/donate"}},"created_at":"2026-01-13T02:41:58.000Z","updated_at":"2026-01-16T16:22:45.000Z","dependencies_parsed_at":"2026-01-13T06:04:08.382Z","dependency_job_id":null,"html_url":"https://github.com/reapercanuk39/termux-kotlin-app","commit_stats":null,"previous_names":["reapercanuk39/termux-kotlin-app"],"tags_count":81,"template":false,"template_full_name":null,"purl":"pkg:github/reapercanuk39/termux-kotlin-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reapercanuk39%2Ftermux-kotlin-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reapercanuk39%2Ftermux-kotlin-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reapercanuk39%2Ftermux-kotlin-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reapercanuk39%2Ftermux-kotlin-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/reapercanuk39","download_url":"https://codeload.github.com/reapercanuk39/termux-kotlin-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reapercanuk39%2Ftermux-kotlin-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28588968,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T20:45:59.482Z","status":"ssl_error","status_checked_at":"2026-01-19T20:45:41.500Z","response_time":67,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-app","android-terminal","bash","kotlin","kotlin-android","linux","shell","terminal","terminal-app","terminal-emulator","termux","termux-app","termux-kotlin"],"created_at":"2026-01-16T05:45:42.637Z","updated_at":"2026-01-19T23:01:44.375Z","avatar_url":"https://github.com/reapercanuk39.png","language":"Kotlin","funding_links":["https://termux.dev/donate"],"categories":[],"sub_categories":[],"readme":"# 🚀 Termux Kotlin App\n\n\u003cdiv align=\"center\"\u003e\n\n[![CI](https://github.com/reapercanuk39/termux-kotlin-app/actions/workflows/ci.yml/badge.svg)](https://github.com/reapercanuk39/termux-kotlin-app/actions/workflows/ci.yml)\n[![Release](https://github.com/reapercanuk39/termux-kotlin-app/actions/workflows/release.yml/badge.svg)](https://github.com/reapercanuk39/termux-kotlin-app/actions/workflows/release.yml)\n[![GitHub Downloads](https://img.shields.io/github/downloads/reapercanuk39/termux-kotlin-app/total?style=for-the-badge\u0026logo=github\u0026label=Downloads\u0026color=success)](https://github.com/reapercanuk39/termux-kotlin-app/releases)\n[![Latest Release](https://img.shields.io/github/v/release/reapercanuk39/termux-kotlin-app?style=for-the-badge\u0026logo=android\u0026label=Latest\u0026color=blue)](https://github.com/reapercanuk39/termux-kotlin-app/releases/latest)\n\n[![Kotlin](https://img.shields.io/badge/Kotlin-100%25-7F52FF?style=for-the-badge\u0026logo=kotlin\u0026logoColor=white)](https://kotlinlang.org/)\n[![Android](https://img.shields.io/badge/Android-7.0+-3DDC84?style=for-the-badge\u0026logo=android\u0026logoColor=white)](https://www.android.com/)\n[![License](https://img.shields.io/badge/License-GPLv3-blue?style=for-the-badge)](LICENSE.md)\n[![Fork](https://img.shields.io/badge/Fork%20of-termux%2Ftermux--app-orange?style=for-the-badge\u0026logo=github)](https://github.com/termux/termux-app)\n\n**The official Termux Android terminal emulator, fully converted to Kotlin!**\n\n\u003ca href=\"https://github.com/reapercanuk39/termux-kotlin-app/releases/latest\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/⬇️_Download_APK-Latest_Release-brightgreen?style=for-the-badge\u0026logo=android\" alt=\"Download APK\"\u003e\n\u003c/a\u003e\n\n[Features](#features) • [Installation](#installation) • [Building](#building) • [Contributing](#contributing) • [Original Project](#original-project)\n\n\u003c/div\u003e\n\n---\n\n## 📱 What is Termux?\n\n**Termux** is a powerful **Android terminal emulator** and **Linux environment** app that works directly with no rooting or setup required. It provides a complete Linux environment on your Android device with access to:\n\n- 🐧 **Linux shell** (bash, zsh, fish)\n- 📦 **Package manager** (apt/pkg) with thousands of packages\n- 🐍 **Programming languages** (Python, Node.js, Ruby, Go, Rust, C/C++)\n- 🔧 **Development tools** (git, vim, nano, ssh, rsync)\n- 🌐 **Networking utilities** (curl, wget, nmap, netcat)\n\n## ✨ What is Termux Kotlin App?\n\nThis repository is a **complete Kotlin conversion** of the official [termux-app](https://github.com/termux/termux-app). Every Java file has been meticulously converted to idiomatic Kotlin while maintaining 100% compatibility with the original app.\n\n### 🎯 Why Kotlin?\n\n| Feature | Benefit |\n|---------|---------|\n| **Null Safety** | Compile-time null checks prevent NullPointerExceptions |\n| **Concise Syntax** | ~40% less boilerplate code |\n| **Type Inference** | Cleaner, more readable code |\n| **Extension Functions** | Enhanced API without inheritance |\n| **Coroutines Ready** | Modern async programming support |\n| **Interoperability** | Seamless Java library compatibility |\n\n## 🔄 Conversion Statistics\n\n| Component | Java Files Converted | Kotlin Files Created |\n|-----------|---------------------|---------------------|\n| **app** | 40+ | 40+ |\n| **terminal-emulator** | 15+ | 15+ |\n| **terminal-view** | 10+ | 10+ |\n| **termux-shared** | 80+ | 80+ |\n| **Total** | **145+** | **145+** |\n\n## 🚀 Features\n\nAll original Termux features are preserved:\n\n- ✅ **Full Linux terminal** with touch/keyboard support\n- ✅ **Package management** via apt (pkg)\n- ✅ **Session management** with multiple terminal tabs\n- ✅ **Customizable** extra keys row\n- ✅ **Styling support** via Termux:Styling\n- ✅ **Plugin ecosystem** (Termux:API, Termux:Boot, Termux:Widget, etc.)\n- ✅ **Hardware keyboard** support with shortcuts\n- ✅ **Background execution** via Termux:Tasker\n- ✅ **URL handling** and file sharing\n\n### 🆕 Kotlin-Exclusive Features\n\nNew features only available in the Kotlin version:\n\n| Feature | Description |\n|---------|-------------|\n| 🎨 **Jetpack Compose UI** | Modern declarative UI for settings and dialogs |\n| 🔍 **Command Palette** | VS Code-style fuzzy command search (Ctrl+Shift+P) |\n| 📐 **Split Terminal** | Side-by-side or top/bottom terminal panes |\n| 🔑 **SSH Manager** | Save and manage SSH connection profiles |\n| 📜 **Command History** | Searchable command history with statistics |\n| ⚡ **Kotlin Coroutines** | Efficient async operations with Flow |\n| 💉 **Dependency Injection** | Hilt for clean architecture |\n| 💾 **DataStore** | Modern preferences with reactive updates |\n| 🎭 **Profile System** | Named profiles with theme, font, shell, and env vars |\n| 🖌️ **Theme Gallery** | 10+ built-in themes with live preview |\n| 💾 **Package Backup** | Full backup/restore of packages, repos, and dotfiles |\n| 🩺 **Package Doctor** | Health checks with auto-repair suggestions |\n| 🛠️ **termuxctl CLI** | Unified CLI for backup, doctor, and profile management |\n| 📱 **Integrated Device API** | Built-in Termux:API - no separate APK needed |\n\n### 📱 Integrated Device API (No Separate APK!)\n\nUnlike standard Termux which requires installing the separate **Termux:API** APK, the Kotlin version has device APIs **built directly into the main app**:\n\n```bash\n# Battery status\ntermuxctl device battery\ntermuxctl device battery --json --extended\n\n# List available APIs\ntermuxctl device list\n\n# Coming soon: location, sensors, clipboard, camera, wifi, and more\ntermuxctl device location --provider gps\ntermuxctl device sensor --name accelerometer\n```\n\n**Features:**\n- ✅ **Zero Setup** - APIs work immediately after install\n- ✅ **Coroutine-Based** - Efficient async operations\n- ✅ **Type-Safe** - Sealed Result types and error handling\n- ✅ **Unified Permissions** - Integrated permission manager\n\nSee [ARCHITECTURE.md](ARCHITECTURE.md#-integrated-device-api) for the full API list and implementation details.\n\n### 🏗️ Modern Architecture\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│                       Compose UI Layer                       │\n│      (Settings, Command Palette, SSH Manager, Dialogs)       │\n├─────────────────────────────────────────────────────────────┤\n│                  ViewModels + StateFlow                      │\n├─────────────────────────────────────────────────────────────┤\n│                      Repositories                            │\n│   (Settings, Sessions, History, SSH Profiles, Permissions)   │\n├─────────────────────────────────────────────────────────────┤\n│                      Core Modules                            │\n│  ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐  │\n│  │   core/api   │ │ core/logging │ │   core/permissions   │  │\n│  │ Sealed Types │ │TermuxLogger  │ │  PermissionManager   │  │\n│  │ Result\u003cT,E\u003e  │ │ File Logging │ │  Activity Result API │  │\n│  └──────────────┘ └──────────────┘ └──────────────────────┘  │\n│  ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐  │\n│  │core/terminal │ │ core/plugin  │ │  core/deviceapi      │  │\n│  │  EventBus    │ │  Plugin API  │ │  Battery, Location   │  │\n│  │ Flow Events  │ │ Versioning   │ │  Sensors, Camera...  │  │\n│  └──────────────┘ └──────────────┘ └──────────────────────┘  │\n├─────────────────────────────────────────────────────────────┤\n│              DataStore / Coroutines / Hilt DI                │\n└─────────────────────────────────────────────────────────────┘\n```\n\n### Core Modules\n\n| Module | Description |\n|--------|-------------|\n| `core/api` | Type-safe `Result\u003cT,E\u003e` and sealed error hierarchies |\n| `core/logging` | Centralized logging with file output and Flow |\n| `core/permissions` | Unified permission handling with coroutines |\n| `core/terminal` | Flow-based event bus replacing callbacks |\n| `core/plugin` | Stable plugin API with semantic versioning |\n| `core/deviceapi` | Integrated device APIs (battery, location, sensors, etc.) |\n| `ui/settings` | Material 3 Compose settings with DataStore |\n| `pkg/backup` | Package backup/restore manager |\n| `pkg/doctor` | Package health diagnostics and auto-repair |\n\n### 🎨 Built-in Themes\n\n10 beautiful themes included out of the box:\n\n| Theme | Author | Description |\n|-------|--------|-------------|\n| **Dark Steel** | Termux Kotlin | Signature dark theme with steel blue accents |\n| **Molten Blue** | Termux Kotlin | GitHub-inspired dark theme |\n| **Obsidian** | Termux Kotlin | VS Code-inspired dark theme |\n| **Dracula** | Zeno Rocha | Popular dark theme |\n| **Nord** | Arctic Ice Studio | Arctic north-bluish palette |\n| **Solarized Dark** | Ethan Schoonover | Classic precision colors |\n| **Solarized Light** | Ethan Schoonover | Light variant |\n| **Gruvbox Dark** | morhetz | Retro groove palette |\n| **Gruvbox Light** | morhetz | Light variant |\n| **High Contrast** | Termux Kotlin | Maximum readability |\n\n### 💾 Package Management\n\nAdvanced package management features that surpass standard Termux:\n\n```bash\n# Create a full backup\ntermuxctl backup create --type full\n\n# Restore with dry-run preview\ntermuxctl backup restore backup.json --dry-run\n\n# Run package health diagnostics\ntermuxctl pkg doctor\n\n# Auto-repair issues\ntermuxctl pkg doctor --auto-repair\n```\n\n## 📥 Installation\n\n### Download APK\n\nDownload the latest release APK from the [Releases](https://github.com/reapercanuk39/termux-kotlin-app/releases) page.\n\nChoose the appropriate variant for your device:\n- `arm64-v8a` - Modern 64-bit phones (most devices)\n- `armeabi-v7a` - Older 32-bit phones\n- `x86_64` - 64-bit emulators/ChromeOS\n- `x86` - 32-bit emulators\n- `universal` - Works on all (larger file size)\n\n### Build from Source\n\nSee [Building](#building) section below.\n\n## 🔨 Building\n\n### Prerequisites\n\n- **JDK 17** or higher\n- **Android SDK** with Build Tools\n- **Android NDK** (for native components)\n\n### Build Commands\n\n```bash\n# Clone the repository\ngit clone https://github.com/reapercanuk39/termux-kotlin-app.git\ncd termux-kotlin-app\n\n# Build debug APK\n./gradlew assembleDebug\n\n# Build release APK (requires signing)\n./gradlew assembleRelease\n\n# APKs will be in app/build/outputs/apk/\n```\n\n### Build Variants\n\n| Variant | Description |\n|---------|-------------|\n| `debug` | Development build with debugging enabled |\n| `release` | Production build (requires signing) |\n\n## 🔗 Related Repositories\n\n| Repository | Description |\n|------------|-------------|\n| [termux/termux-app](https://github.com/termux/termux-app) | 🏠 Original Termux app (Java) |\n| [reapercanuk39/termux-app](https://github.com/reapercanuk39/termux-app) | 🍴 My fork of official repo |\n| [termux/termux-packages](https://github.com/termux/termux-packages) | 📦 Package build scripts |\n| [termux/termux-api](https://github.com/termux/termux-api) | 🔌 Android API access plugin |\n\n## 🤝 Contributing\n\nContributions are welcome! This project follows the same contribution guidelines as the original Termux project.\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit changes (`git commit -m 'Add amazing feature'`)\n4. Push to branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Code Style\n\n- Follow [Kotlin coding conventions](https://kotlinlang.org/docs/coding-conventions.html)\n- Use meaningful variable/function names\n- Add KDoc comments for public APIs\n- Prefer immutable (`val`) over mutable (`var`)\n\n## 📋 Original Project\n\nThis is a Kotlin conversion of the official **Termux** project:\n\n- **Original Repository**: [github.com/termux/termux-app](https://github.com/termux/termux-app)\n- **Original Authors**: [Termux Developers](https://github.com/termux)\n- **License**: [GPLv3](LICENSE.md)\n\nAll credit for the original implementation goes to the Termux team. This conversion aims to modernize the codebase while maintaining full compatibility.\n\n## 📄 License\n\n```\nTermux Kotlin App - Android terminal emulator (Kotlin version)\nCopyright (C) 2024 Termux Developers \u0026 Contributors\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n```\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Keywords**: `termux` `termux-app` `termux-kotlin` `android-terminal` `terminal-emulator` `linux-android` `kotlin-android` `android-app` `terminal` `shell` `bash` `linux` `android-terminal-emulator` `termux-android` `kotlin-conversion`\n\nMade with ❤️ by [reapercanuk39](https://github.com/reapercanuk39)\n\n⭐ **Star this repo** if you find it useful!\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freapercanuk39%2Ftermux-kotlin-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freapercanuk39%2Ftermux-kotlin-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freapercanuk39%2Ftermux-kotlin-app/lists"}