# Termux

Termux is a free and open-source terminal emulator for Android which allows for running a Linux environment on an Android device. Termux installs a minimal base system automatically; additional packages are available using its package manager, based on Debian's.
Most commands available in Linux are accessible in Termux, as well as built-in Bash commands. There are several other shells available, such as Zsh and tcsh.

## Overview

Packages are cross-compiled with Android NDK and have compatibility patches to get them working on Android. Since all files are installed in the application directory, rooting is not required.
There are more than one thousand packages available, and users can submit requests for new ones. Alternatively, packages can be compiled from source, as Termux supports a variety of build tools including CMake, Meson, GNU Autotools, as well as compilers for C++, Rust, Go, Swift, and other programming languages. Termux can also install interpreters for languages like Ruby, Python, and JavaScript.
Terminal-based text editors such as Emacs and Vim can be installed. It is also possible to execute GUI applications in Termux by using a VNC server and installing a desktop environment (Xfce, LXQt, MATE) or window manager.
Another popular use case for Termux is its ability to run containers of various Linux distributions which would normally use the chroot command without requiring root privileges by using PRoot. This provides access to many more packages through the package manager of the distribution of choice than would directly be accessible in Termux, though popular application container formats such as Flatpak and Snap cannot be used without root access as they require filesystem mounting permissions.

### User interface

Termux's user interface is fairly simple, only displaying the extra keys row and the terminal output. Color scheme and font can be changed through Termux: Styling.
The extra-keys row can also be customized. Users can add more function keys and controls by editing ~/.termux/termux.properties.
Termux has mouse/touch support which can be used to interact with programs such as htop and other ncurses-based applications. Scrolling is done by swiping up or down in the terminal buffer.

### Configuration

Users configure Termux by editing ~/.termux/termux.properties.

### Add-ons

Termux also includes 7 add-ons:
* Termux:API: exposes Android functionality to CLI applications
* Termux:Styling: allows changing the color scheme and font of the terminal
* Termux:Boot: executes Termux commands at boot
* Termux:GUI: allows for some Termux apps to have a GUI using default Android resources; does not work with X11/Wayland apps
* Termux:Widget: lets users run scripts in a dedicated widget or a shortcut in the Home screen
* Termux:Float: runs terminal session in a floating window
* Termux:Tasker: integrates Tasker with Termux
Add-ons must be installed from the same source as the application so that the same User ID is used.

## History

Termux was initially released in 2015. Support for requesting packages and features was added through GitHub issues in the app's repository. People can also contribute to the project by adding new features and packages.
In January 2020, the Termux development team ended support for devices running Android 5-6, making Android version 7 the minimum OS requirement.
Termux v0.101 was the last version to be updated in the Google Play Store. Since November 2020, Google Play has enforced apps targeting API level 29, which breaks the execution of binaries in private application directories. According to Google:
   Untrusted apps that target Android 10 cannot invoke exec on files within the app's home directory. This execution of files from the writable app home directory is a W^X violation. Apps should load only the binary code that's embedded within an app's APK file.
The Termux development team suggests moving to F-Droid in order to continue getting updates, as F-Droid does not impose such restrictions. It is also possible to download APK files from the project's GitHub repository.
In May 2021, Bintray, which had been the primary host for the Termux packages, shut down its services. Termux migrated to Hetzner, another hosting service.

## Installation

The installation process extracts the bootstrap archive from the APK file, sets correct permissions for the executable, and sets up directories like the home directory. The Play Store version of Termux is not being updated anymore; users are encouraged to install Termux from F-Droid or GitHub in order to receive the latest updates.

## Package management and distribution

Packages in Termux are installed through the application's package manager (pkg) and use the .deb format. However, normal Debian packages cannot be installed as Termux is not FHS compliant. Users can also build and submit packages.

### Package availability

Termux had more than 1000 packages available as of 2021.

### Package repositories

Termux has three repositories available. Repositories included in the default Termux bootstrap installation include:
* main is the main repository containing all CLI utilities and other popular Linux tools and language compilers/interpreters.
* x11-repo contains X11-based packages and graphical applications.
* root-repo contains packages useful for rooted devices. Some of these packages can be used without root, but functionality may be limited.