Skip to content

Latest commit

 

History

1,595 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Terminal

Build status Testing status

ES — Aviso de fork independiente: este repositorio (ESTRIN217/Terminal) es un fork independiente y no está afiliado, respaldado ni soportado por el equipo de Termux. No reportes sus issues al proyecto Termux ni uses sus canales de soporte/donación. Reporta todo en Issues de este fork.

EN — Independent fork notice: this repository (ESTRIN217/Terminal) is an independent fork and is not affiliated with, endorsed by, or supported by the Termux team. Do not report its issues upstream or use Termux support/donation channels. Report everything at this fork's Issues.

Terminal es una aplicación Android de terminal + entorno Linux (Debian vía proot), con UI moderna en Jetpack Compose y emulación de terminal nativa.

Versión actual: 2.0.0 (versionCode 120). Ver el CHANGELOG.

📸 Capturas de Pantalla

Vista Principal (Material 3)
Terminal
Opencode
Opencode

Características

  • Entorno Debian completo vía proot, sin root. El rootfs se descarga y verifica en el primer arranque.
  • Renderer nativo en Compose — el terminal se dibuja directamente sobre un Canvas de Compose, con selección de texto nativa, handles arrastrables, pinch-zoom e inercia de scroll. Detrás del flag native_compose_renderer (Ajustes → Experimental).
  • Multipantalla — dos sesiones simultáneas (terminal o gestor de archivos) en pantallas de 600 dp o más.
  • Tipografía a elegir — Fira Code, Cascadia Code, JetBrains Mono, D2 Coding, Hack o tu propia fuente (~/.termux/font.ttf, importable desde el almacenamiento), todas con Nerd Fonts v3.5.1. Las ligaduras se pueden activar o desactivar.
  • Color de 24 bits — esquemas personalizados desde ~/.termux/colors.properties.
  • Imágenes en la terminal — protocolo Kitty Graphics y OSC 1337 (iTerm2). Sixel no está soportado.
  • Hipervínculos OSC 8 — se subrayan y se abren con un toque.
  • Gestor de archivos integrado — funciona como pestaña más, con symlinks, papelera, marcadores y edición de archivos con nano/vim.
  • Refresco a 90/120 Hz, con opción de forzar 60 Hz para ahorrar batería.
  • Atribución de recursos según el hardware del dispositivo (scrollback, parpadeo del cursor y renderer por defecto).

Contenido

Instalación

  • Paquete: com.estrin217.terminal.
  • Requiere Android con arquitectura arm64-v8a (el binario proot embebido es solo AArch64).
  • Obtén los APK desde GitHub Releases (sección Assets) o desde los artefactos del workflow Build (actions — requiere login de GitHub).
  • Los APK de GitHub están firmados con una clave de prueba no oficial (app/testkey_untrusted.jks). No instales builds del fork distribuidos por terceros (Telegram, redes sociales, etc.).
  • Si cambias de origen de instalación, desinstala primero todas las APK del fork (ver Desinstalación). No mezcles firmas distintas.

En el primer arranque se descarga y configura un rootfs Debian (unos ~50 MB comprimidos) y se instala el binario proot embebido.

Desinstalación

Para desinstalar por completo, elimina la app Terminal (com.estrin217.terminal) desde Ajustes de Android → Aplicaciones. Haz copia de seguridad de tus datos antes si los necesitas.

Enlaces

Depuración

Puedes ajustar el nivel de logcat en Terminal → Ajustes → Terminal → Debugging → Log Level (por defecto Normal; vuelve a Normal tras depurar). Usa logcat -d en el terminal o adb logcat desde un PC.

Desde el menú largo del terminal (More → Report Issue) puedes generar un reporte automático. Publica el texto completo al abrir un issue; los issues con (partiales) capturas de pantalla en lugar de texto probablemente se cierren.

Niveles de log

  • Off — no registra nada.
  • Normal — errores, avisos, info y stacktraces.
  • Debug — mensajes de depuración.
  • Verbose — mensajes detallados.

Limitaciones conocidas (SELinux OEM)

En algunos dispositivos, la política SELinux del fabricante impide a la app enumerar /dev, /dev/pts y /sys, por lo que ls /dev puede fallar con Permission denied dentro de la sesión Debian. No es un bug: el acceso a dispositivos concretos (/dev/null, /dev/tty, ...) sigue funcionando. Detalles en docs/proot-debian-arm64-plan.md (sección 7).

Del mismo modo, desde Android 8 (API 26) SELinux deniega a las apps untrusted_app leer /proc/stat, así que los monitores de CPU (btop, htop) no mostrarán estadísticas de CPU en un dispositivo stock con SELinux enforcing (btop falla con Failed to parse /proc/stat). El bind -b /proc está presente y correcto; sin root o SELinux permissive no hay workaround.

Mantenimiento y contribuciones

  • Java 17 requerido. NDK 30.0.14904198, CMake 3.31.6.
  • Build: ./gradlew assembleDebug. Tests: ./gradlew test (solo unitarios).
  • targetSdk 28 es intencional (modelo de acceso a archivos).
  • Los mensajes de commit deben seguir Conventional Commits con tipos Added, Changed, Deprecated, Removed, Fixed, Security (primera letra en mayúscula).
  • El versionName en app/build.gradle.kts debe seguir semver major.minor.patch.
  • La librería termux-shared centraliza constantes y utils compartidos. No uses valores hardcodeados si existe una constante.

Firma de release

La build release se firma en local. Las credenciales se leen de key.properties en la raíz del repo, que está en .gitignore y nunca debe commitearse. Copia key.properties.example como plantilla:

cp key.properties.example key.properties   # y rellena con los datos de tu keystore
./gradlew assembleRelease

Sin ese fichero, assembleRelease falla al no encontrar la configuración de firma.

Verifica el APK antes de distribuirlo: un fallo de empaquetado puede producir un archivo válido para el sistema de build pero inservible en Android.

unzip -l app/build/outputs/apk/release/terminal_release_universal.apk | grep -c AndroidManifest.xml

Debe devolver 1. Si devuelve 0, el APK se ha empaquetado sin manifest ni recursos.

Aviso: los APK que la CI adjunta a cada Release de GitHub son builds de debug firmados con app/testkey_untrusted.jks. Son para pruebas y no son distribuibles: no los instales desde fuentes de terceros ni los publiques como versión estable.

Atribución

Este proyecto es un fork de termux/termux-app (licencia GPLv3) y se distribuye bajo la misma licencia. No existe ninguna relación con el equipo de Termux.

Excepciones heredadas del upstream:

About

Terminal es un emulador de terminal , que usa Proot para ejecutar debian

Topics

Resources

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages