====== Termux ======
Emulador de terminal de Android y entorno Linux. Termux no requiere que el dispositivo esté //rooteado//, de hecho, está orientado a usuarios que no son root.
* [[https://termux.com/|Web oficial]]
* [[https://github.com/termux/termux-app|Repositorio de código]]
* [[https://wiki.termux.com/wiki/Main_Page|Wiki]]
{{ https://wiki.termux.com/images/2/21/Weechat-with-keyboard_framed.png?200 |}}
Las notas recogidas en esta página se centran en la versión ''0.118.3'' de Termux.
===== Casos de uso =====
* Procesar datos con Python.
* Programar en un entorno de desarrollo.
* Descarga de ficheros.
* Aprendizaje de las bases del entorno Linux en línea de comandos.
* Ejecutar un cliente SSH.
* Sincronización y copia de seguridad de archivos.
===== Limitaciones de Termux =====
Aunque Termux proporciona un entorno muy potente, existen limitaciones importantes derivadas del sistema Android:
==== Sin privilegios root ====
Termux se ejecuta como una aplicación normal de Android, por lo que:
* No tiene acceso root (a menos que el dispositivo esté rooteado).
* No puede modificar el sistema base.
* No puede usar funcionalidades que requieren privilegios elevados.
==== No es un sistema Linux completo ====
Aunque se parece a una distribución Linux:
* No usa un kernel propio (usa el de Android).
* No dispone de systemd ni init tradicional.
* Algunos programas no funcionan o requieren adaptaciones.
==== Restricciones de ejecución de binarios ====
Desde Android 10:
* No se pueden ejecutar binarios desde ubicaciones arbitrarias.
* Todo debe ejecutarse dentro del entorno de Termux (`$PREFIX`).
* Esto afecta a herramientas externas o descargadas manualmente.
==== Limitaciones de red ====
* Algunas herramientas (como ''ip'') pueden no funcionar correctamente.
* Acceso limitado a interfaces de red avanzadas.
* No se pueden crear interfaces virtuales sin root.
==== Restricciones en segundo plano ====
Android puede suspender procesos cuando:
* La app está en segundo plano
* La pantalla está apagada
Soluciones:
* Usar ''termux-wake-lock''
* Ejecutar procesos en ''tmux'' o ''screen''.
==== Acceso limitado al almacenamiento ====
* Depende de permisos de Android.
* Puede variar según versión y fabricante.
* No hay acceso completo al sistema de archivos.
==== Compatibilidad de software ====
* Algunos paquetes no están disponibles.
* Otros requieren parches específicos.
* Programas que dependen de systemd, dbus completo o kernel features pueden fallar.
==== Entorno gráfico limitado ====
* No hay servidor gráfico nativo.
* Soluciones como Termux:X11 o VNC son necesarias.
* Rendimiento inferior a un sistema Linux real.
==== Cambios frecuentes ====
* Termux evoluciona rápidamente.
* Android introduce nuevas restricciones con cada versión.
* Algunas funcionalidades pueden romperse o cambiar.
===== Instalación =====
Aunque Termux está también disponible en la [[https://play.google.com/store/apps/details?id=com.termux|Play store de Google]], los desarrolladores recomiendan instalarlo desde [[https://f-droid.org/en/packages/com.termux/|F-Droid]] pues no tiene restricciones. El "inconveniente" de instalarlo fuera de la tienda de Google es que no es compatible con el modelo de seguridad de Android y nos saldrá una advertencia.
* [[https://github.com/termux-play-store/|Información sobre la versión de Termux de Google Play]]
La versión de Termux instalada (F-Droid vs Google Play) afecta a:
* Disponibilidad de comandos (Termux:API)
* Permisos de almacenamiento
* Compatibilidad de paquetes
* Comportamiento de ejecución de binarios
Asegúrate de saber qué versión estás usando antes de seguir esta documentación.
===== Estructura de directorios =====
Termux no sigue el estándar [[https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard|FHS]], así que no nos encontraremos directorios como ''/bin'', ''/etc'', ''/usr'', ''/tmp''...
En Termux todo "empieza" en el directorio ''/data/data/com.termux/files/''. Por ejemplo, la carpeta de usuario está situada en ''/data/data/com.termux/files/home''; las aplicaciones que instalemos irán a ''data/data/com.termux/files/usr''. Estos dos directorios están guardados en las siguientes variables de entorno:
* ''$PREFIX'': ''/data/data/com.termux/files/usr''
* ''$HOME'': ''/data/data/com.termux/files/home''
Aunque Termux no sigue el FHS a nivel del sistema Android, dentro de ''$PREFIX'' sí mantiene una estructura similar a un sistema Linux convencional:
$ tree -L 1 $PREFIX
/data/data/com.termux/files/usr
├── bin
├── etc
├── include
├── lib
├── libexec
├── opt
├── share
├── tmp
└── var
Desde, por ejemplo, [[informatica:sistemas_operativos:android:aplicaciones:material_files|Material Files]] podemos acceder al directorio personal de Termux (''$HOME'').
===== Uso del teclado táctil =====
Las combinaciones que queramos usar en Termux que tengan que ver con la tecla Ctrl está asociada al botón de bajar el volumen, de tal manera que si queremos pulsar la combinación Ctrl + C, pulsaríamos el botón de bajar el volumen y, sin soltarlo, la tecla C en el teclado de Termux.
También existen atajos asociados a la tecla de subir el volumen:
* VOLUME UP + E: tecla Escape.
* VOLUME UP + T: tecla tabulador.
* VOLUME UP + 1, 2, ...: teclas de función (F1, F2, ...).
* VOLUME UP + B: Alt + B
* VOLUME UP + F: Alt + F
* VOLUME UP + X: Alt + X
* VOLUME UP + W, A, S, D: teclas de flechas (arriba, izquierda, abajo, derecha).
* VOLUME UP + L: ''|''
* VOLUME UP + H: ''~''
* VOLUME UP + U: ''_''
* VOLUME UP + P, N: avanzar página, retroceder página.
* VOLUME UP + V: Muestra el control de volumen.
* VOLUME UP + Q, K: Muestra / oculta la vista de teclas extra.
===== Gestión de paquetes =====
Podemos instalar y desinstalar aplicaciones utilizando el comando ''pkg'' o ''apt''. Realmente, ''pkg'' es un //wrapper// de ''apt''. Podemos ver el contenido del script:
cat /data/data/com.termux/files/usr/bin/pkg
Las ventajas de usar ''pkg'' en lugar de directamente ''apt'' es que tenemos disponibles algunos atajos y otras operaciones útiles:
* ''pkg in'': instala paquetes y nos ahorra escribir ''pkg install'' o ''apt install''.
* ''pkg up'': actualiza los repositorios. Nos ahorra escribir ''pkg update'' o ''apt update''.
* ''pkg upg'': actualiza los respositorios y actualiza los programas instalados. Nos ahorra escribir ''pkg update'' y después ''pkg upgrade'' o ''apt update'' y después ''apt upgrade''.
* Ejecución automática de ''apt update'' antes de la instalación de un paquete.
==== Instalar ====
pkg install vim
Versión más breve y contestando sí por defecto:
pkg in vim -y
==== Desinstalar ====
pkg uninstall vim
==== Actualizar repositorios ====
pkg update
Versión abreviada: ''pkg up''
==== Actualizar aplicaciones instaladas ====
pkg upgrade
Versión abreviada: ''pkg upg''. Además, primero actualizará los repositorios.
===== Repositorios adicionales =====
Termux dispone de varios repositorios opcionales que amplían la cantidad de paquetes disponibles.
Repositorios recomendados para la mayoría de usuarios:
* ''x11-repo'': si vas a usar entorno gráfico
* ''tur-repo'': para ampliar software disponible
''root-repo'' solo es útil en dispositivos rooteados.
==== x11-repo ====
Instalación:
pkg install x11-repo
Contenido:
* Aplicaciones gráficas basadas en X11.
* Bibliotecas gráficas.
* Entornos de escritorio (XFCE, etc.).
Uso típico:
* Junto con Termux:X11 o VNC.
==== tur-repo (Termux User Repository) ====
Instalación:
pkg install tur-repo
Contenido:
* Paquetes mantenidos por la comunidad.
* Software más reciente o no incluido en repos oficiales.
Características:
* Similar a AUR en Arch Linux.
* Puede incluir herramientas experimentales.
Revisar antes de usar en entornos críticos.
==== root-repo ====
Instalación:
pkg install root-repo
Contenido:
* Herramientas que requieren acceso root.
* Ejemplo: utilidades de bajo nivel del sistema.
Solo útil si el dispositivo está rooteado.
===== Ajustar el tamaño del texto =====
Podemos aumentar o disminuir el tamaño del texto haciendo zoom usando dos dedos como en cualquier otra aplicación.
===== Menús de Termux =====
==== Menú contextual ====
Si mantenemos pulsado en cualquier parte de la pantalla, se mostrará un menú contextual que nos permitirá realizar varias acciones:
* Seleccionar texto.
* Copiar texto.
* Pegar texto.
* Seleccionar URL. Copia las URL que encuentre en la sesión.
* Compartir transcripción de lo mostrado en la terminal.
* Compartir texto seleccionado.
* Reset: reinica la terminal si se queda bloqueda o fuerza termina la sesión actual.
* Matar proceso: mata la sesión.
* Estilo
* Mantener la pantalla encendida.
* Ayuda: abre la Wiki de Termux.
* Ajustes de Termux
* Informar de un error.
==== Cajón de navegación ====
Si deslizamos desde el lateral izquierdo de la pantalla se mostrará un menú que:
* Lista y permite seleccionar las sesiones abiertas (podemos cambiar el nombre manteniendo pulsado sobre cada una)
* Botón KEYBOARD para mostrar u ocultar el teclado.
* Botón NEW SESSION para crear una nueva sesión de terminal.
==== Menú de notificación de Android ====
Mientras está en ejecución Termux, tendremos una notificación de Android. Desde esa notificación podremos cerrar todas las sesiones abiertas (y salir de Termux) o pulsar en **Acquire wakelock** para evitar que Termux quede suspendido. Esto es necesario si ejecutamos algún programa que esté en ejecución bastante tiempo y no queremos que se detenga cuando la pantalla está apagada.
También podemos lograr la misma funcionalidad de **wake lock** con los comandos:
* ''termux-wake-lock'': evitar que la CPU entre en reposo.
* ''termux-wake-unlock'': desactivar el **wake lock**.
===== Casos prácticos =====
==== Conexión SSH ====
Una forma cómoda de usar Termux es conectarnos al dispositivo en el que está desde un ordenador a través de SSH.
Instalación de los paquetes necesarios:
pkg install openssh
Iniciar el servidor SSH en Android:
sshd
Establecemos una contraseña para el usuario actual (necesario para conectarnos por SSH hasta que establezcamos la comunicación con el intercambio de claves):
passwd
El usuario de Termux lo podemos saber con ''whoami''.
El nombre de usuario (''u0_aXXX'') depende del sistema Android y puede variar.
El servidor SSH de Termux escucha por defecto por el puerto 8022, así que para conectarnos desde otro equipo:
ssh -p 8022 u0_aXXX@ip.terminal.termux
Podemos conocer la IP del terminal Android ejecutando en Termux el comando ''ifconfig | grep inet''.
En sistemas Linux modernos, el comando recomendado para gestionar red es ''ip''. Sin embargo, en Termux puede fallar debido a restricciones del sistema Android (por ejemplo, errores con //netlink sockets//). En estos casos, ''ifconfig'' puede funcionar correctamente y ser una alternativa válida.
=== Conexión mediante claves ===
Para que no tengamos que introducir la contraseña.
En el equipo donde ejecutaremos el cliente SSH, ejecutamos:
ssh-keygen -t rsa
Se habrán creado las claves en el directorio por defecto ''~/.ssh/''.
Copiamos la clave pública al terminal Android donde está instalado tiene Termux:
ssh-copy-id -p 8022 u0_aXX@ip.android
A partir de entonces, podemos conectarnos directamente sin suministrar la contraseña:
ssh -p 8022 u0_aXX@ip.terminal.termux
==== Sincronización de ficheros ====
Requiere haber instalado **SSH** previamente.
Instalamos ''rsync'' en Termux:
pkg install rsync
**rsync** también tiene que estar instalado en el equipo de destino
Si queremos sincronizar el "carrete" de la cámara del terminal Android:
rsync -avP $HOME/storage/dcim/Camera/ usuario@equipo.remoto:/directorio/de/destino/
* ''-a'': modo **archivado**, mantendrá todas las propiedades de los ficheros.
* ''-v'': modo //verboso//, nos informará de los ficheros que va transfiriendo y nos ofrecerá un resumen al terminar.
* ''-P'': muestra el progreso de la operación.
Si quisiéramos hacer al revés, es decir, sincronizar desde un equipo Linux hacia el dispositivo con Termux:
rsync -avz -e 'ssh -p 8022' usuario@ip_android:/ruta/en_android/ ~/local_folder/
==== Servidor web con Python para compartir ficheros ====
Si queremos compartir fácilmente algún fichero vía Wi-Fi, podemos valernos de [[informatica:programacion:python|Python]] y el módulo ''http.server''.
Instalamos Python en Termux:
pkg python
La instalación de Python supone más de 600 MB de espacio ocupado (según las dependencias). Tenlo en cuenta si no dispones de demasiado espacio libre en el dispositivo.
Nos movemos al directorio que tiene ficheros a compartir y ejecutamos un servidor web:
python -m http.server 8080
Desde ese momento, podremos acceder con un navegador web a ''%%http://ip.android:8080%%'' y veremos un listado de ficheros.
==== Explorador de archivos web del móvil ====
Filebrowser es un explorador de archivos accesible vía web.
Filebrowser es especialmente interesante en Termux porque convierte tu móvil en algo parecido a un “mini NAS accesible desde el navegador”, sin necesidad de apps adicionales en otros dispositivos.
Podremos:
* Navegar tus archivos desde el navegador (PC, tablet…)
* Subir/descargar archivos
* Editar texto
* Gestionar carpetas
* Compartir archivos fácilmente en red local
Instalación de Filebrowser:
pkg in filebrowser
Ejecución:
filebrowser -r /data/data/com.termux/files/home/storage -p 8080 -a 0.0.0.0
* ''-r'': indicamos cuál será el directorio raíz que compartirá Filebrowser
* ''-p'': indicamos el puerto por el que se escuchará.
* ''-a'': indicamos qué interfaz escuchará. Para que acepte cualquiera, le pasaremos ''0.0.0.0''.
La contraseña del usuario ''admin'' se mostrará por el terminal.
Desde ese momento podremos acceder desde cualquier equipo de la misma red local a través de ''http:%%//%%ip.del.terminal.termux:8080/''
Si queremos establecerle otra contraseña al usuario ''admin'':
filebrowser users update admin --password holacaracola
==== Compartir con netcat ====
Método rápido para redes locales confiables utilizando [[informatica:software:cli:netcat|Netcat]]:
En el equipo Linux, lanzamos **netcat** en modo escucha (''-l'') por el puerto ''1234'':
nc -l -p 1234 > archivo_recibido
En Termux, instalamos netcat con ''pkg install netcat-openbsd''
En Termux, envíamos el archivo al equipo con Linux mediante el puerto ''1234'':
nc ip_linux 1234 < /ruta/al/archivo
==== Acceso al almacenamiento compartido de Android ====
Para tener acceso al almacenamiento compartido (''/sdcard'' o ''/storage/emulated/0''), Termux necesita permiso de acceso de almacenamiento. Para ello, debemos ejecutar el comando ''termux-setup-storage''. Esto abrirá en el terminal Android la solicitud de acceso a todos los archivos. Seleccionamos Termux para que obtenga dichos permisos.
Desde ese momento, se habrá creado un directorio llamada ''storage'' en el directorio personal del usuario. Dentro de dicho directorio, veremos otros:
* ''~/storage/dcim'': directorio por defecto de imagenes y vídeos al usar la cámara del dispositivo.
* ''~/storage/downloads'': directorio por defecto de descargas.
* ''~/storage/movies'': directorio por defecto donde están las películas disponibles para el usuario.
* ''~/storage/music'': directorio por defecto donde está la música para el usuario.
* ''~/storage/pictures'': directorio por defecto donde están las imágenes disponibles para el usuario.
* ''~/storage/shared'': raíz del almacenamiento compartido entre todas las aplicaciones.
* [[https://wiki.termux.com/wiki/Internal_and_external_storage|Internal and external storage]]
==== Descargar vídeos online ====
Instalamos el paquete ''yt-dlp'':
pkg in yt-dlp
[[..:..:..:software:yt-dlp|Este programa]] nos permitirá descargar vídeos de muchos sitios web.
==== Gestor de descargas avanzado ====
aria2 es un gestor de descargas en línea de comandos muy eficiente.
Lo que lo hace especial:
* Descargas multi-conexión (divide el archivo en partes)
* Soporte de múltiples protocolos:
* HTTP / HTTPS
* FTP
* BitTorrent
* Metalink
* Reanudación de descargas
* Control remoto (API JSON-RPC)
Instalación:
pkg in aria2
Uso:
aria2c URL
Fichero torrent:
aria2c archivo.torrent
Enlace magnet:
aria2c "magnet:?xt=urn:btih:..."
Descarga rápida:
aria2c -x 16 -s 16 -d ~/storage/downloads https://example.com/archivo.zip
Esto divide el archivo en partes y descarga en paralelo.
==== Cliente git ====
==== Multiplexación de terminal ====
[[..:..:..:software:cli:tmux|tmux]]
Fundamental en Termux
* mantener sesiones vivas
* dividir pantalla
Instalación:
pkg in tmux
==== Tareas programadas ====
==== Escaneo de red local ====
Con [[..:..:..:software:cli:nmap|Nmap]].
Instalación:
pkg in nmap
Ver dispositivos conectados en la red:
nmap -sP 192.168.0.0/24
===== Limpieza =====
Encontrar los 10 directorios y archivos que más ocupan en Termux:
du -ha /data/data/com.termux/files | sort -k1hr | head -n 10
===== Extensiones =====
==== Termux:API ====
**Termux:API** es un añadido para Termux que expone funcionalidades del dispositivo como una API para programas en línea de comandos.
Ver más sobre esto en [[.:termux:termux_api|la página dedicada]].
==== Termux:Styling: modificando colores y tipografía ====
Añadido para Termux que permite personalizar Termux ofreciendo esquemas de color y otras configuraciones para modificar la apariencia del terminal.
Una vez instalado (desde F-Droid), con una sesión abierta de Termux, mantenemos pulsado en cualquier parte de la pantalla y elegimos **Style**. Entonces podremos seleccionar un esquema de color o una tipografía.
Al alegir un esquema de colores, se crea o modifica el fichero ''~/.termux/colors.properties''.
Al elegir una tipografía, se crea el fichero ''~/.termux/font.ttf''
Las tipografías son las [[https://www.nerdfonts.com/|Nerd Fonts]]
===== PRoot =====
**PRoot** es una herramienta que permite crear un entorno tipo "chroot" en Linux sin necesidad de permisos de root. En Termux se usa para simular un sistema de archivos aislado donde puedes ejecutar otro sistema Linux dentro del tuyo.
* [[https://github.com/termux/proot|Repositorio de la versión de PRoot adaptada a Termux]]
La posibilidad de instalar otras distribuciones de Linux es que tendremos así disponibles muchos más paquetes que Termux.
==== Instalación ====
Desde Termux, lo instalamos con:
apt install proot
También instalaremos
apt install proot-distro
Esta herramienta nos permitirá gestionar de forma sencilla las distribuciones Linux dentro de Termux.
==== Instalación de distribuciones Linux ====
Podemos ver todas las distribuciones que podríamos instalar con:
proot-distro list
A día de hoy (23/04/2026):
* Adélie Linux
* AlmaLinux
* Alpine Linux
* Arch Linux
* Artix Linux
* Chimera Linux
* Debian (trixie)
* Deepin
* Fedora
* Manjaro
* OpenSUSE
* Oracle Linux
* Pardus
* Rocky Linux
* Termux
* Trisquel GNU/Linux
* Ubuntu (25.10)
* Void Linux
Para instalar cualquier de ellas, nos fijamos en su alias (que aparece entre los símbolos menor que y mayor que):
proot-distro install debian
==== Entrar en una distro ====
proot-distro login debian
Si tenemos pensado lanzar herramientas gráficas (ver [[#termuxx11|sección de Termux:X11]]), iniciaremos sesión con la opción ''%%--%%shared-tmp'':
proot-distro login debian --shared-tmp
===== Termux:X11 =====
Termux:X11 es una servidor gráfico X para Android y optimizado para usarse con Termux.
==== Instalación ====
* [[https://github.com/termux/termux-x11/releases|Descarga]]
Además, en Termux es necesario instalar los paquetes ''x11-repo'' y ''termux-x11-nightly'':
apt install x11-repo
apt install termux-x11-nightly
==== Abriendo aplicaciones gráficas de Termux ====
Con la aplicación de Termux:X11 abierta en Android, vamos a Termux y ejecutamos cualquier aplicación gráfica. Por ejemplo, si queremos un escritorio XFCE:
termux-x11 -xstartup "dbus-launch --exit-with-session xfce4-session"
Si queremos indicar el "display":
termux-x11 :0 -xstartup "dbus-launch --exit-with-session xfce4-session"
O algo más sencillo, el reloj (debe estar instalado a través del paquete ''xorg-xclock''):
termux-x11 -xstartup xclock
==== Abriendo aplicaciones gráficas del entorno proot ====
El entorno //proot// debe ser abierto con la opción ''%%--%%shared-tmp'':
proot-distro login ubuntu --shared-tmp
Una vez dentro del entorno //proot//, podemos usar Termux:X11:
termux-x11 -xstartup "dbus-launch xfce4-session"
===== Lo que suelo instalar =====
* ''cmatrix''
* ''dnsutils''
* ''figlet''
* ''fzf''
* ''git''
* ''htop''
* ''netcat-openbsd''
* ''openssh''
* ''rsync''
* ''sox''
* ''termux-api''
* ''tmate''
* ''tmux''
* ''tree''
* ''toilet''
* ''vim''
* ''wget''
==== FZF ====
Instalación: ''pkg in fzf''
Configuración:
Vamos a ''$HOME'' y añadimos al final del fichero ''.bashrc'':
[ -f /data/data/com.termux/files/usr/share/fzf/key-bindings.bash ] && source /data/data/com.termux/files/usr/share/fzf/key-bindings.bash
A partir de entonces, cada vez que usemos la búsqueda recursiva de bash (Ctrl + r), se lanzará **FZF**.
Más información sobre FZF [[..:..:..:software:cli:fzf|en esta propia wiki]].
===== Recursos =====
* [[https://wiki.termux.com/wiki/Differences_from_Linux|Termux: differences from Linux]]
* [[https://www.learntermux.tech/|LearnTermux.tech]]
* [[https://ivonblog.com/en-us/posts/termux-proot-distro-debian/|How to install proot Debian in Termux on Android phone (XFCE desktop + Audio + One-click starter)]]
* [[https://ivonblog.com/en-us/posts/termux-x11/|How to use Termux X11 - The X server on Android phone]]