Termux is an Android terminal application and Linux environment.
Note that this repository is for the app itself (the user interface and the terminal emulation). For the packages installable inside the app, see termux/termux-packages.
Quick how-to about Termux package management is available at Package Management. It also has info on how to fix
repository is under maintenance or down errors when running
NOTICE: Termux is broken on Android 12. Android OS will kill any (phantom) processes greater than 32 (limit is for all apps combined) and also kill any processes using excessive CPU. You may get
[Process completed (signal 9) - press Enter] message in the terminal without actually exiting the shell process yourself. Check the related issue #2366, issue tracker, gist with details and this TLDR comment on how to disable trimming of phantom processes. A proper docs page will be added later. An option to disable the killing should be available in Android 12L or 13, so upgrade at your own risk if you are on Android 11, specially if you are not rooted.
@termux is looking for Termux Application maintainers for implementing new features, fixing bugs and reviewing pull requests since the current one (@fornwall) is inactive.
Issue https://github.com/termux/termux-app/issues/1072 needs extra attention.
The core Termux app comes with the following optional plugin apps.
Latest version is
NOTICE: It is highly recommended that you update to
v0.118.0 or higher ASAP for various bug fixes, including a critical world-readable vulnerability reported at https://termux.github.io/general/2022/02/15/termux-apps-vulnerability-disclosures.html. Also reminding again to users who have installed termux apps from google playstore that playstore builds are deprecated and no longer supported. It is recommended that you shift to F-Droid or Github releases.
The APK files of different sources are signed with different signature keys. The
Termux app and all its plugins use the same
com.termux and so all their APKs installed on a device must have been signed with the same signature key to work together and so they must all be installed from the same source. Do not attempt to mix them together, i.e do not try to install an app or plugin from
F-Droid and another one from a different source like
Github. Android Package Manager will also normally not allow installation of APKs with different signatures and you will get errors on installation like
App not installed,
Failed to install due to an unknown error,
signatures do not match previously installed version, etc. This restriction can be bypassed with root or with custom roms.
If you wish to install from a different source, then you must uninstall any and all existing Termux or its plugin app APKs from your device first, then install all new APKs from the same new source. Check Uninstallation section for details. You may also want to consider Backing up Termux before the uninstallation so that you can restore it after re-installing from Termux different source.
In the following paragraphs, "bootstrap" refers to the minimal packages that are shipped with the
termux-app itself to start a working shell environment. Its zips are built and released here.
Termux application can be obtained from
F-Droid from here.
You do not need to download the
F-Droid app (via the
Download F-Droid link) to install Termux. You can download the Termux APK directly from the site by clicking the
Download APK link at the bottom of each version section.
It usually takes a few days (or even a week or more) for updates to be available on
F-Droid once an update has been released on
F-Droid releases are built and published by
F-Droid once they detect a new
Github release. The Termux maintainers do not have any control over the building and publishing of the Termux apps on
F-Droid. Moreover, the Termux maintainers also do not have access to the APK signing keys of
F-Droid releases, so we cannot release an APK ourselves on
Github that would be compatible with
F-Droid app often may not notify you of updates and you will manually have to do a pull down swipe action in the
Updates tab of the app for it to check updates. Make sure battery optimizations are disabled for the app, check https://dontkillmyapp.com/ for details on how to do that.
Only a universal APK is released, which will work on all supported architectures. The APK and bootstrap installation size will be
F-Droid does not support architecture specific APKs.
The APKs for
Github Releases will be listed under
Assets drop-down of a release. These are automatically attached when a new version is released.
The APKs for
Github Build action workflows will be listed under
Artifacts section of a workflow run. These are created for each commit/push done to the repository and can be used by users who don't want to wait for releases and want to try out the latest features immediately or want to test their pull requests. Note that for action workflows, you need to be logged into a
Github account for the
Artifacts links to be enabled/clickable. If you are using the
Github app, then make sure to open workflow link in a browser like Chrome or Firefox that has your Github account logged in since the in-app browser may not be logged in.
The APKs for both of these are
debuggable and are compatible with each other but they are not compatible with other sources.
Both universal and architecture specific APKs are released. The APK and bootstrap installation size will be
~180MB if using universal and
~120MB if using architecture specific. Check here for details.
Security warning: APK files on GitHub are signed with a test key that has been shared with community. This IS NOT an official developer key and everyone can use it to generate releases for own testing. Be very careful when using Termux GitHub builds obtained elsewhere except https://github.com/termux/termux-app. Everyone is able to use it to forge a malicious Termux update installable over the GitHub build. Think twice about installing Termux builds distributed via Telegram or other social media. If your device get caught by malware, we will not be able to help you.
The test key shall not be used to impersonate @termux and can't be used for this anyway. This key is not trusted by us and it is quite easy to detect its use in user generated content.
Alias name: alias Creation date: Oct 4, 2019 Entry type: PrivateKeyEntry Certificate chain length: 1 Certificate: Owner: CN=APK Signer, OU=Earth, O=Earth Issuer: CN=APK Signer, OU=Earth, O=Earth Serial number: 29be297b Valid from: Wed Sep 04 02:03:24 EEST 2019 until: Tue Oct 26 02:03:24 EEST 2049 Certificate fingerprints: SHA1: 51:79:55:EA:BF:69:FC:05:7C:41:C7:D3:79:DB:BC:EF:20:AD:85:F2 SHA256: B6:DA:01:48:0E:EF:D5:FB:F2:CD:37:71:B8:D1:02:1E:C7:91:30:4B:DD:6C:4B:F4:1D:3F:AA:BA:D4:8E:E5:E1 Signature algorithm name: SHA1withRSA (disabled) Subject Public Key Algorithm: 2048-bit RSA key Version: 3
Termux and its plugins are no longer updated on Google Play Store due to android 10 issues and have been deprecated. The last version released for Android
>= 7 was
v0.101. It is highly recommended to not install Termux apps from Play Store any more.
There are plans for unpublishing the Termux app and all its plugins on Play Store soon so that new users cannot install it and for disabling the Termux apps with updates so that existing users cannot continue using outdated versions. You are encouraged to move to
Github builds as soon as possible.
You will not need to buy plugins again if you bought them on Play Store. All plugins are free on
You can backup all your data under
$PREFIX/ before changing installation source, and then restore it afterwards, by following instructions at Backing up Termux before the uninstallation.
There is currently no work being done to solve android
10 issues and working updates will not be resumed on Google Play Store any time soon. We will continue targeting sdk
28 for now. So there is not much point in staying on Play Store builds and waiting for updates to be resumed. If for some reason you don't want to move to
Github sources for now, then at least check Package Management to change your mirror, otherwise, you will get
repository is under maintenance or down errors when running
pkg commands. After that, it is also highly advisable to run
pkg upgrade command to update all packages to the latest available versions, or at least update
termux-tools package with
pkg install termux-tools command.
Note that by upgrading old packages to latest versions, like that of
python may break your setups/scripts since they may not be compatible anymore. Moreover, you will not be able to downgrade the package versions since termux repos only keep the latest version and you will have to manually rebuild the old versions of the packages if required as per https://github.com/termux/termux-packages/wiki/Building-packages.
If you plan on staying on Play Store sources in future as well, then you may want to disable automatic updates in Play Store for Termux apps, since if and when updates to disable Termux apps are released, then you will not be able to downgrade and will be forced to move since apps won't work anymore. Only a way to backup
termux-app data may be provided. The
>= 0.135 will also show a banner at the top of the terminal saying
You are likely using a very old version of Termux, probably installed from the Google Play Store., you can remove it by running
rm -f /data/data/com.termux/files/usr/etc/motd-playstore and restarting the app.
Play store apps have multiple critical vulnerabilities as reported at https://termux.github.io/general/2022/02/15/termux-apps-vulnerability-disclosures.html and since they cannot be updated with fixes, any users using older versions would be vulnerable.
They should be disabled because deprecated things get removed and are not supported after some time, its the standard practice. It has been many months now since deprecation was announced and updates have not been released on Play Store since after
29 September 2020.
The new versions have lots of new features and fixes which you can mostly check out in the Changelog of
Github Releases that you may be missing out. Extra detail is usually provided in commit messages.
Users on old versions are quite often reporting issues in multiple repositories and support forums that were fixed months ago, which we then have to deal with. The maintainers of @termux work in their free time, majorly for free, to work on development and provide support and having to re-re-deal with old issues takes away the already limited time from current work and is not possible to continue doing. Play Store page of
termux-app has been filled with bad reviews of "broken app", even though its clearly mentioned on the page that app is not being updated, yet users don't read and still install and report issues.
Asking people to pay for plugins when the
termux-app at installation time is broken due to repository issues and has bugs is unethical.
Old versions don't have proper logging/debugging and crash report support. Reporting bugs without logs or detailed info is not helpful in solving them.
It's also easier for us to solve package related issues and provide custom functionality with app updates, which can't be done if users continue using old versions. For example, the bintray shutdown causing package install/update failures for new Play Store users is/was not an issue for F-Droid users since it is being shipped with updated bootstrap and repo info, hence no reported issues from new F-Droid users.
Uninstallation may be required if a user doesn't want Termux installed in their device anymore or is switching to a different install source. You may also want to consider Backing up Termux before the uninstallation.
To uninstall Termux completely, you must uninstall any and all existing Termux or its plugin app APKs listed in Termux App and Plugins.
Android Settings ->
Applications and then look for those apps. You can also use the search feature if it’s available on your device and search
termux in the applications list.
Even if you think you have not installed any of the plugins, it's strongly suggested to go through the application list in Android settings and double-check.
All community links are available here.
The main ones are the following.
xterm: The grandfather of terminal emulators. Source.
Connectbot: Android SSH client. Source
Android Terminal Emulator: Android terminal app which Termux terminal handling is based on. Inactive. Source.
You can help debug problems of the
Termux app and its plugins by setting appropriate
Log Level in
Termux app settings ->
Log Level (Requires
Termux app version
>= 0.118.0). The
Log Level defaults to
Normal and log level
Verbose currently logs additional information. Its best to revert log level to
Normal after you have finished debugging since private data may otherwise be passed to
logcat during normal operation and moreover, additional logging increases execution time.
The plugin apps do not execute the commands themselves but send execution intents to
Termux app, which has its own log level which can be set in
Termux app settings ->
Log Level. So you must set log level for both
Termux and the respective plugin app settings to get all the info.
Once log levels have been set, you can run the
logcat command in
Termux app terminal to view the logs in realtime (
Ctrl+c to stop) or use
logcat -d > logcat.txt to take a dump of the log. You can also view the logs from a PC over
ADB. For more information, check official android
logcat guide here.
Moreover, users can generate termux files
stat info and
logcat dump automatically too with terminal's long hold options menu
Report Issue option and selecting
YES in the prompt shown to add debug info. This can be helpful for reporting and debugging other issues. If the report generated is too large, then
Save To File option in context menu (3 dots on top right) of
ReportActivity can be used and the file viewed/shared instead.
Users must post complete report (optionally without sensitive info) when reporting issues. Issues opened with (partial) screenshots of error reports instead of text will likely be automatically closed/deleted.
Off- Log nothing.
Normal- Start logging error, warn and info messages and stacktraces.
Debug- Start logging debug messages.
Verbose- Start logging verbose messages.
The termux-shared library was added in
v0.109. It defines shared constants and utils of the Termux app and its plugins. It was created to allow for the removal of all hardcoded paths in the Termux app. Some of the termux plugins are using this as well and rest will in future. If you are contributing code that is using a constant or a util that may be shared, then define it in
termux-shared library if it currently doesn't exist and reference it from there. Update the relevant changelogs as well. Pull requests using hardcoded values will/should not be accepted. Termux app and plugin specific classes must be added under
com.termux.shared.termux package and general classes outside it. The
LICENSE must also be checked and updated if necessary when contributing code. The licenses of any external library or code must be honoured.
The main Termux constants are defined by
TermuxConstants class. It also contains information on how to fork Termux or build it with your own package name. Changing the package name will require building the bootstrap zip packages and other packages with the new
$PREFIX, check Building Packages for more info.
Commit messages must use Conventional Commits specs so that chagelogs can automatically be generated by the
create-conventional-changelog script, check its repo for further details on the spec. Use the following
Added: Add foo,
Added|Fixed: Add foo and fix bar,
Changed!: Change baz as a breaking change, etc. You can optionally add a scope as well, like
Fixed(terminal): Some bug. The space after
: is necessary.
Changelogs for releases are generated based on Keep a Changelog specs.
build.gradle files of Termux and its plugin apps must follow the semantic version
2.0.0 spec in the format
major.minor.patch(-prerelease)(+buildmetadata). When bumping
build.gradle files and when creating a tag for new releases on github, make sure to include the patch number as well, like
v0.1.0 instead of just
build.gradle files and
attach_debug_apks_to_release workflow validates the version as well and the build/attachment will fail if
versionName does not follow the spec.
TermuxConstantsjavadocs for instructions on what changes to make in the app to change package name.
termux-sharedlibrary and have hardcoded
com.termuxvalues and will need to be manually patched.