Termux - an Android terminal application and Linux environment

Overview

Termux application

Build status Testing status Join the chat at https://gitter.im/termux/termux Join the Termux discord server Termux library releases at Jitpack

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 apt or pkg commands.


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.


Contents

Termux App and Plugins

The core Termux app comes with the following optional plugin apps.

Installation

Latest version is v0.118.0.

NOTICE: It is highly recommended that you update to v0.118.0 or higher for various bug fixes ASAP. 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.

Termux can be obtained through various sources listed below for only Android >= 7. Support was dropped for Android 5 and 6 on 2020-01-01 at v0.83, old builds are available on archive.org.

The APK files of different sources are signed with different signature keys. The Termux app and all its plugins use the same sharedUserId 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, INSTALL_FAILED_UPDATE_INCOMPATIBLE, INSTALL_FAILED_SHARED_USER_INCOMPATIBLE, 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.

F-Droid

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 Github. The 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 releases.

The 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 ~180MB. F-Droid does not support architecture specific APKs.

Github

Termux application can be obtained on Github either from Github Releases for version >= 0.118.0 or from Github Build action workflows.

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.

Google Play Store (Deprecated)

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 F-Droid or 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 F-Droid and Github.

You can backup all your data under $HOME/ and $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 F-Droid or 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 apt or 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 termux-tools version >= 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.

Why Disable?

  • 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 shudown 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

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.

Go to 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.

Important Links

Community

All community links are available here.

The main ones are the following.

Wikis

Miscellaneous

Terminal

Terminal resources

Terminal emulators

Debugging

You can help debug problems of the Termux app and its plugins by setting appropriate logcat Log Level in Termux app settings -> -> Debugging -> 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 -> Termux -> Debugging -> 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 More -> 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.

Log Levels
  • Off - Log nothing.
  • Normal - Start logging error, warn and info messages and stacktraces.
  • Debug - Start logging debug messages.
  • Verbose - Start logging verbose messages.

For Maintainers and Contributors

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 termux-shared 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.

Check Termux Libraries for how to import termux libraries in plugin apps and Forking and Local Development for how to update termux libraries for plugins.

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 types as 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.

  • Added for new features.
  • Changed for changes in existing functionality.
  • Deprecated for soon-to-be removed features.
  • Removed for now removed features.
  • Fixed for any bug fixes.
  • Security in case of vulnerabilities.
  • Docs for updating documentation.

Changelogs for releases are generated based on Keep a Changelog specs.

The versionName in 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 versionName in 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 v0.1. The 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.

Forking

  • Check TermuxConstants javadocs for instructions on what changes to make in the app to change package name.
  • You also need to recompile bootstrap zip for the new package name. Check here and here for experimental work on it.
  • Currently, not all plugins use TermuxConstants from termux-shared library and have hardcoded com.termux values and will need to be manually patched.
  • If forking termux plugins, check Forking and Local Development for info on how to use termux libraries for plugins.
Comments
  • No more exec from data folder on targetAPI >= Android Q

    No more exec from data folder on targetAPI >= Android Q

    The ability to run execve() on files within an application's home directory will be removed in target API > 28. Here is the issue on Google bug tracker: https://issuetracker.google.com/issues/128554619 As expected it is yet another "working-as-intended", furthermore, as commented in the issue,

    Relying on exec() may be problematic in future Android versions.

    This seems to completely break Termux in a long-term, as all its packages contain executables.

    information 
    opened by n0n3m4 308
  • [Bug]: Android 12 Phantom Processes Killed

    [Bug]: Android 12 Phantom Processes Killed "[Process completed (signal 9) - press Enter]"

    Problem description

    I get a message saying [Process completed (signal 9) - press Enter] at, seemingly, random intervals. Once I press Enter, Termux closes. This may happen while I am running a Python script or simply under the "Welcome to Termux!" text after leaving Termux idle for a while (leaving the app/turning off the screen) and not having run any commands.

    Steps to reproduce the behavior.

    I upgraded my Pixel 3a phone to Android 12 and downloaded Termux from F-Droid as well as Termux:API. I did the termux-setup-storage command and gave the app unrestricted battery usage under the Android Apps settings. Lastly, I installed Python using pkg install python.

    What is the expected behavior?

    Previously, on Android 11, I had installed Termux from the Google Play Store. Not once did I ever get that [Process completed (signal 9) - press Enter] message. I was able to leave Termux running in the background indefinitely.

    System information

    • Termux application version: 0.117
    • Android OS version: 12
    • Device model: PIxel 3a
    bug report 
    opened by V-no-A 78
  • Bounty $$: Termux ReactNative Integration issue support

    Bounty $$: Termux ReactNative Integration issue support

    Hello termux community! I hope this is the right place to ask for your help. I'm running some issues while trying to integrate the termux app into a React Native app.

    Looks like the installation of packages is done OK however I'm getting this error when lauching TermuxActivity: exec("/data/data/com.justshare/files/usr/bin/login"): No such file or directory

    with the following output in the Run window:

    I/com.justshare: Background concurrent copying GC freed 5842(2286KB) AllocSpace objects, 0(0B) LOS objects, 17% free, 27MB/33MB, paused 960us total 540.557ms I/com.justshare: Background young concurrent copying GC freed 89594(5243KB) AllocSpace objects, 0(0B) LOS objects, 15% free, 28MB/33MB, paused 8.651ms total 268.872ms W/com.justshare: type=1400 audit(0.0:145): avc: granted { execute } for name="login" dev="vdc" ino=82904 scontext=u:r:untrusted_app_27:s0:c140,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c140,c256,c512,c768 tclass=file app=com.justshare W/com.justshare: Accessing hidden field Ljava/io/FileDescriptor;->descriptor:I (greylist, reflection, allowed)

    I'm attaching a brief gif showing the problem: termuxIntegrationIssue

    I have tried lots of different alternatives but I'm getting out of ideas honestly as I'm not a mobile dev expert neither totally understand termux code (even after weeks of study lol)

    I'm offering a $40 US dollar bounty in crypto ( Monero, Ripple, TRX, BTT or any TRON token) to whoever finds a solution and publish it here first.

    I think it should be a really easy to solve issue for you but honestly cannot see the light now and I'm a bit desperate to find a solution now lol.

    Link to the complete repo: https://github.com/simbadMarino/dCloud

    Let me know if you need additional info. Thanks and I hope I can your support :)

    opened by simbadMarino 73
  • Option to disable the [Process completed - press Enter to close] message

    Option to disable the [Process completed - press Enter to close] message

    Is that possible to have access to an option menu to have several sessions and set the font size, I would be happy to be able to set a smaller font to show more information or have possibility to remove the end message. Thanks.

    enhancement 
    opened by Almtesh 69
  • Termux Various Fixes And Improvements

    Termux Various Fixes And Improvements

    Some minor fixes to TermuxActivity and RunCommandService. Need to add/fix some other stuff, but will do it together when I do some (major) refactoring, have yet to see whether committing to master or android-10 will be more wiser, depending on differences in existing files.

    opened by agnostic-apollo 68
  • Can't access files on sdcard / termux-setup-storage doesn't do anything

    Can't access files on sdcard / termux-setup-storage doesn't do anything

    Hello, problem is, that I can't access "/sdcard" and also termux-setup-storage doesn't help and doesn't create the symlinks as described. My android is 6.0.1 (cyanogen). Maybe there was another change, that broke it? Or anything else I can do?

    opened by ChristianS99 61
  • Add overlay keyboard with Alt, Ctrl, Tab, arrow keys (and a few more keys) #97

    Add overlay keyboard with Alt, Ctrl, Tab, arrow keys (and a few more keys) #97

    Hi

    It will be good if there be any UI for changing cursor in Termux. It's very annoying to press vol button for simulating ctrl key for changing direction (if you have worked with nano you know what I'm saying).

    Or it can be simple direction arrow in app or Termux be able to change cursor position on touch.

    thank you.

    enhancement extra keys row 
    opened by AliShahrivarian 57
  • Storage access not working on Android 11 beta (Pixel 3)

    Storage access not working on Android 11 beta (Pixel 3)

    Problem description

    Access to phone storage isn't working on Android 11 (RPB1.200504.020) on Pixel 3.

    Steps to reproduce

    1. Start Termux
    2. Run termux-setup-storage (Nothing happens)
    3. Run ln -s /storage/emulated/0 ~/storage (The first time it worked, and I had access to storage, but now I get cd: permission denied: storage when attempting to access the directory)

    Expected behavior

    Access to device storage. In permissions for Termux, it says it has full access to storage.

    Additional information

    • Termux application version: 0.95
    • Android OS version: 11 (RPB1.200504.020)
    • Device model: Google Pixel 3
    opened by solarfl4re 56
  • Characters are not echoed on Samsung keyboard

    Characters are not echoed on Samsung keyboard

    I am using Termux on a Samsung Note8 and what annoys me is that I cannot see what I type because Termux doesn't echo the characters. Only when I type a space, a dash or similar Termux echoes what I have typed so far. Is this a big or a wrong setting?

    opened by ghost 47
  • RunCommandService : TermuxService terminates before command completion

    RunCommandService : TermuxService terminates before command completion

    Following is the code which I am executing from my app .... command executes successfully but it exits before completion i.e it doesn't download the packages fully using pkg install commands and exits the service.

                Intent intent = new Intent();
                intent.setClassName("com.termux", "com.termux.app.RunCommandService");
                intent.setAction("com.termux.RUN_COMMAND");
                intent.putExtra("com.termux.RUN_COMMAND_PATH",      "/data/data/com.termux/files/usr/bin/pkg");
                intent.putExtra("com.termux.RUN_COMMAND_BACKGROUND", true);
                intent.putExtra("com.termux.RUN_COMMAND_ARGUMENTS", new String[]{"install -y jq gettext curl openssh"});
                startService(intent);
    

    this is the output from logcat

    2021-05-24 03:32:27.250 28306-7451/com.termux I/termux-task: [7448] starting: [/data/data/com.termux/files/usr/bin/pkg, install -y jq gettext curl openssh] 2021-05-24 03:32:29.643 28306-7451/com.termux I/termux-task: [7448] stdout: Checking availability of current mirror: ok 2021-05-24 03:32:29.659 28306-7450/com.termux I/termux-task: [7448] stderr: 2021-05-24 03:32:29.659 28306-7450/com.termux I/termux-task: [7448] stderr: WARNING: apt does not have a stable CLI interface. Use with caution in scripts. 2021-05-24 03:32:29.659 28306-7450/com.termux I/termux-task: [7448] stderr: 2021-05-24 03:32:32.627 28306-7451/com.termux I/termux-task: [7448] stdout: Get:1 https://k51qzi5uqu5dg9vawh923wejqffxiu9bhqlze5f508msk0h7ylpac27fdgaskx.ipns.dweb.link stable InRelease [14.0 kB] 2021-05-24 03:32:35.393 28306-7451/com.termux I/termux-task: [7448] stdout: Hit:2 https://grimler.se/game-packages-24 games InRelease 2021-05-24 03:32:35.558 28306-7451/com.termux I/termux-task: [7448] stdout: Hit:3 https://grimler.se/science-packages-24 science InRelease 2021-05-24 03:32:35.683 28306-7451/com.termux I/termux-task: [7448] stdout: Fetched 14.0 kB in 6s (2333 B/s) 2021-05-24 03:32:35.707 28306-7451/com.termux I/termux-task: [7448] stdout: Reading package lists... 2021-05-24 03:32:35.711 28306-7451/com.termux I/termux-task: [7448] stdout: Building dependency tree... 2021-05-24 03:32:35.711 28306-7451/com.termux I/termux-task: [7448] stdout: Reading state information... 2021-05-24 03:32:35.711 28306-7451/com.termux I/termux-task: [7448] stdout: All packages are up to date. 2021-05-24 03:32:35.716 28306-7450/com.termux I/termux-task: [7448] stderr: 2021-05-24 03:32:35.716 28306-7450/com.termux I/termux-task: [7448] stderr: WARNING: apt does not have a stable CLI interface. Use with caution in scripts. 2021-05-24 03:32:35.716 28306-7450/com.termux I/termux-task: [7448] stderr: 2021-05-24 03:32:35.723 28306-7451/com.termux I/termux-task: [7448] stdout: Reading package lists... 2021-05-24 03:32:35.724 28306-7451/com.termux I/termux-task: [7448] stdout: Building dependency tree... 2021-05-24 03:32:35.724 28306-7451/com.termux I/termux-task: [7448] stdout: Reading state information... 2021-05-24 03:32:35.727 28306-7451/com.termux I/termux-task: [7448] stdout: The following package was automatically installed and is no longer required: 2021-05-24 03:32:35.727 28306-7451/com.termux I/termux-task: [7448] stdout: oniguruma 2021-05-24 03:32:35.727 28306-7451/com.termux I/termux-task: [7448] stdout: Use 'apt autoremove' to remove it. 2021-05-24 03:32:35.728 28306-7451/com.termux I/termux-task: [7448] stdout: 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 2021-05-24 03:32:35.729 28306-7451/com.termux I/termux-task: [7448] exited normally

    Any help please?

    opened by bilalilyas90 40
  • Using Termux to fix a non-Termux issue (access file denied)

    Using Termux to fix a non-Termux issue (access file denied)

    Yesterday there was the upgrade from Android 10 to 11 on my tablet and after that I cannot use ungoogled Chromium to access my local files (e.g. .html). Indeed I discovered in the Settings that Chromium now has access only to multimedia files (instead Termux and other apps have access to ALL files). With Chromium I can browse file:///sdcard/FOLDERS but only multimedia files are visible. So, is there some command I can run on Termux to add Chromium and other apps to the list of apps which have access to ALL files?

    TIA

    question 
    opened by angelog0 39
  • [Bug]: Problems with DNS (?) when trying to send email with shoutrrr

    [Bug]: Problems with DNS (?) when trying to send email with shoutrrr

    Problem description

    I am trying to send an email from termux with shoutrrr (https://github.com/containrrr/shoutrrr). From a regular Linux CLI it works perfect. But from termux it doesn't. This is the error I get:

    error getting SMTP client: error connecting to server: dial tcp: lookup the.mailserver.tld on [::1]:53: read udp  [::1]:39153-> [::1]:53 read: connection refused
    

    Pinging the.mailserver.tld from termux does work without a problem.

    I use shoutrrr only because it is a simple way to send out notifications, in my case emails. Only one binary required. If there is a comparably easy way to send emails from termux, I would do without shoutrrr.

    Steps to reproduce the behavior.

    ./shoutrrr send --url "smtp://username:password@host:port/?auth=Plain&fromaddress=email%40email.com&fromname=MyName&subject=MySubject&toaddresses=other%40email.com" --message "My Message"

    What is the expected behavior?

    Email should be sent out.

    System information

    • Termux application version: 0.118.0
    • Android OS version: 13
    • Device model: Pixel
    bug report 
    opened by rucksman 0
  • [Bug]: `ping` fails but `dig` works

    [Bug]: `ping` fails but `dig` works

    Problem description

    ping system333.duckdns.org fails with Unknown host but dig system333.duckdns.org. ping duckdns.org works.

    Steps to reproduce the behavior.

    ping system333.duckdns.org

    What is the expected behavior?

    That it works.

    System information

    • Termux application version: 0.118.0
    • Android OS version: 11
    • Device model: Pixel 5
    bug report 
    opened by DUOLabs333 2
  • [Bug]: Cannot install termux

    [Bug]: Cannot install termux

    Problem description

    Termux installation cannot be done as Screenshot_2022-12-21-15-57-15-537_com termux it displays fileutils error and missing file path but the path exists when I check from my file manager.

    Steps to reproduce the behavior.

    I am using redmi 6a Android 9.

    What is the expected behavior?

    No response

    System information

    • Termux application version: 0.118.0
    • Android OS version: Android 9
    • Device model: Redmi 6a MIUI 11
    bug report 
    opened by INeT-NiNjA 4
  • [Bug]: The LICENSE file describing termux-shared does not appear to allow the use case described in the wiki.

    [Bug]: The LICENSE file describing termux-shared does not appear to allow the use case described in the wiki.

    Problem description

    Hi, I think I've identified an incompatibility with the termux-shared library's license and the instructions on the wiki here and also here.

    Assumptions

    1. The Termux project intends for 3rd party apps to use the termux-shared library constants for integration.
    2. Integration with the library constants is not intended to cause the 3rd party app to adopt the GPLv3.

    These assumptions seem clear based on the advice that:

    Termux plugins and 3rd party apps only need to import termux-shared library for interacting with the termux-app, like for using TermuxConstants and all other utilities provided by it.`

    And the license file specifies exceptions for the contants files by name:

    GPLv3 only

    The GPLv3 only license applies to all files unless specifically specified by a file/directory, like the src/main/java/com/termux/shared/termux/TermuxConstants.java and src/main/java/com/termux/shared/termux/settings/properties/TermuxPropertyConstants.java files are released under the MIT license.

    It seems clear that you want people to use the constants files freely, since they are MIT licensed.

    The Problem

    The GPLv3 affects any software that is compiled with or linked to GPLv3-licensed code. The GPL uses a very broad definition for linking, including things like interpreted code and classpath resources. Specifically, this includes importing a GPLv3-licensed library via the wiki's suggestion of implementation 'com.termux.termux-app:termux-shared:0.117' or downloading the aar file directly. For this reason, there is a "classpath exception" that the author may apply to the GPLv3, but this is not currently the case for the files in src/main/java/com/termux/shared/termux.

    This means that when including termux-shared in your project, you are linking to a GPLv3 library, and your application is now subject to the GPL. If the app is then distributed, it is not only redistributing termux-shared, but the app itself is also being conveyed as a modified version of termux-shared due to the classpath "linking" that occurs when importing the library. This results in the entire app being legally subject to the GPLv3, and any party that receives the application is now entitled to the entire source code, pursuant to the GPLv3 terms.

    I tested to make sure there wasn't something prevented this, and I have confirmed that a sample Android app that merely declares implementation 'com.termux.termux-app:termux-shared:0.117' will contain GPLv3 Java bytecode in the resulting APK.

    Workarounds

    This issue can be avoided by doing one of the following:

    • A developer can use a tool strip the GPLv3 artifacts/code out of the imported library, such that GPLv3 code is never classpath "linked" with the app.
    • A developer can simply copy the MIT licensed files from the termux-shared library, such that no GPLv3 files are ever in the project in any way.
    • Termux can modify its license to clarify the issue (ex: with a classpath exception).
    • Termux can release a new library that only contains the MIT licensed files.

    Steps to reproduce the behavior.

    N/A

    What is the expected behavior?

    A developer is provided a way to integrate with the Termux API without being forced to license their code under the GPLv3.

    System information

    • Termux application version: all versions
    • Android OS version: N/A
    • Device model: N/A
    bug report 
    opened by BLuFeNiX 2
  • [Bug]: Not able to install parcel

    [Bug]: Not able to install parcel

    Problem description

    Everytime i try to install parcel i get this error. Parcel bundler is working if it was saved in global environment but it's not the case with parcel

    ERR! build error gyp ERR! stack Error: make failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/data/data/com.termux/files/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:201:23) gyp ERR! stack at ChildProcess.emit (node:events:513:28) gyp ERR! stack at ChildProcess._handle.onexit (node:internal/child_process:291:12) gyp ERR! System Linux 4.4.273-IceCold-v16.0 gyp ERR! command "/data/data/com.termux/files/usr/bin/node" "/data/data/com.termux/files/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /data/data/com.termux/files/usr/lib/node_modules/parcel/node_modules/@parcel/watcher gyp ERR! node -v v18.12.1 gyp ERR! node-gyp -v v9.1.0 gyp ERR! not ok npm ERR! code 1 npm ERR! path /data/data/com.termux/files/usr/lib/node_modules/parcel/node_modules/@parcel/watcher npm ERR! command failed npm ERR! command sh -c -- node-gyp-build

    Steps to reproduce the behavior.

    Npm i parcel -g

    What is the expected behavior?

    No response

    System information

    • Termux application version: 0.118.0
    • Android OS version: Android 11
    • Device model: OnePlus 5t(rooted)
    bug report 
    opened by Suhail-007 5
Releases(v0.118.0)
  • v0.118.0(Jan 7, 2022)

    v0.118.0 - 2022-01-07 22.35

    Changelog

    Added

    • Allow users to directly open URL links in terminal transcript when clicked or tapped. The user can add terminal-onclick-url-open=true entry to termux.properties file to enable opening of URL links in terminal transcript when clicked or tapped. The default value is false. Running termux-reload-settings command will also update the behaviour instantaneously if changed. Implemented by @trygveaa in #2146. (af16e79b, 1a5a66d0)

    • Allow users to disable auto capitalization of extra keys text. The user can add extra-keys-text-all-caps=false entry to termux.properties file to disable auto capitalization of extra keys text for both normal and popup buttons. The default value is true. Running termux-reload-settings command will also update the behaviour instantaneously if changed. (5c72c3ca)

    • Allow users to adjust terminal horizontal and vertical margin. The terminal-margin-horizontal key can be used to adjust the terminal left/right margin and the terminal-margin-vertical can be used to adjust the terminal top/bottom margin. This will also affect drawer. The user can set an integer value between 0 and 100 as dp units. The default value is still 3 for horizontal and 0 for vertical margin. So adding an entry like terminal-margin-horizontal=10 to termux.properties file will allow users to set a horizontal margin of 10dp. After updating the value, either restart termux or run termux-reload-settings for changes to take effect.

      This was added since for some users text on edges would not be shown on the screen or they had screen protectors/cases that covered screen edges (Of course, that would require fixing every single app and android system UI itself, so kinda stupid to use). Moreover, horizontal margin of like 10dp may be helpful with peek-and-slide for people having gesture navigation enabled on android 10+ since they won't be to touch at exactly the edge of the screen to trigger peek (#1325).
      Closes #2210

      (63504f0a)

    • Allow users to disable hardware keyboard shortcuts. The user can add disable-hardware-keyboard-shortcuts=true entry to termux.properties file to disable hardware keyboard shortcuts. The default value is false. Running termux-reload-settings command will also update the behaviour instantaneously if changed. Note that for ctrl+alt+p to work, you need to unset shortcut.rename-session = ctrl + n. https://wiki.termux.com/wiki/Terminal_Settings. Closes #1825. (829cc398, fcc0d362)

    • Request android.permission.PACKAGE_USAGE_STATS permission. The permission can be granted from Android Settings -> System -> Usage Access. Closes #2269. (865f29d4)

    • Add TERMUX_API_VERSION to termux shell environment. This can be used to check if Termux:API is installed and enabled for cases where users try to run termux-api commands and it hangs. (0cf3cef7)

    • Add TERMUX_IS_DEBUGGABLE_BUILD, TERMUX_APK_RELEASE and TERMUX_APP_PID to termux shell environment.

      The TERMUX_IS_DEBUGGABLE_BUILD env variable will be set to 1 if termux APK is a debuggable APK and 0 otherwise. Note that the dev_keystore.jks shipped with termux app and plugin source code can also be used to create a release APK even though its mainly used for Github Debug Builds, in which case value will be 0.

      The TERMUX_APK_RELEASE will be set to GITHUB, F_DROID or GOOGLE_PLAY_STORE depending on release type. It will be set to UNKNOWN if signed with a custom key.

      The TERMUX_APP_PID will be set to the process of the main app process of the termux app package (com.termux), assuming its running when shell is started, like for termux-float. This variable is included since pidof com.termux does not return anything for release builds. It does work for debug builds and over adb/root. However, you still won't be able to get additional process info with ps, like that of threads, even with the pid and will need to use adb/root. However, kill $TERMUX_APP_PID will work from termux-app and termux-float.

      These variables can be used by termux devs and users for custom logic in future depending on release type.

      (da07826a, 7b10a35f)

    • Add support for ~/.termux/termux.float.properties. (bc779d2f)

    • ! Convert extra-keys to agnosticism by moving them to termux-shared library so that they can be imported and used by other apps for their own needs as long as they comply with GPLv3 license. Almost everything is customizable and has no dependency on termux specific logic. (2a74d43c)

    • Add support for SHIFT or SHFT extra-keys. Closes #1038. (2a74d43c, 91172409)

    • Add support for PASTE extra-keys for pasting text from clipboard. (7d76e8b1)

    • Add support to long hold on CTRL, ALT, SHIFT and FN to lock those control keys. They will not be released when you press another key and will only be released by pressing the respective control key again. Closes #2049, Closes #1861. 2a74d43c)

    • Add support for com.termux.execute.background_custom_log_level and com.termux.RUN_COMMAND_BACKGROUND_CUSTOM_LOG_LEVEL. Check the commit and https://github.com/termux/termux-tasker#custom-log-level for details. (60f37bde, e889d84d, 1259a212, 197979fd)

    • Add warning that hax support is not provided and asking questions will likely result in issue automatically closed or even ban. (6409019a)

    • Add warning reports with (partial) screenshots of error reports instead of text will likely be automatically closed/deleted. (7047bbef)

    • Add termux-api log level settings in termux app settings. (582e5693)

    • Add termux-float log level settings in termux app settings. (d55c1001)

    • Add termux-widget log level settings in termux app settings. (4953b126)

    • Add isTermuxAppInstalled() and isTermuxAppAccessible() functions to TermuxUtils. The TermuxUtils.isTermuxAppInstalled() function can be used by external apps to check if termux app is installed and enabled. The TermuxUtils.isTermuxAppAccessible() function can be used by termux plugin apps to check if termux app is installed, enabled, accessible as per sharedUserId and TERMUX_PREFIX_DIR_PATH is accessible and has read, write and execute permission. (e5c05489)

    • Bootstrap error and report issue (optionally) will contain primary termux files stat info and logcat dump

      Users have been reporting issues with bootstrap installation (and login file access) failure on email and github but "most" have been useless since they don't follow instructions to debug the issue and report back. The real reason may depend on device. One could be that /data/data/com.termux does not exist on the device in which case termux won't work on the device, at least without root. Other reasons could be wrong ownership or selinux context, selinux denials or attempting to install on external sd card (as reported by a user) where likely files dir was different from /data/data/com.termux/files.

      This commit will save dev and possibly user time and automatically generate the required info to debug such issues. The ls command will generate stat info for all the major termux directories and files so that existence or ownership issues can be shown. It will also run logcat command to take a dump (last 3000 lines) in case other failures are being logged, like selinux denials as per avc entries. It will also show if app is installed on external sd card. This info will automatically be shown on bootstrap install failure report.

      Moreover, users can generate termux files stat info and logcat dump manually too with terminal's long hold options menu More -> 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, instead of (partial) screenshots which won't be accepted anymore.

      There has been some design changes in android 11 for /data/data and /data/user/0 directory. You can check javadoc for isTermuxFilesDirectoryAccessible() function in TermuxFileUtils for details.

      (24ea83d6)

    • ! Added support to save reports to files and fixed large reports generating TransactionTooLargeException

      If ReportActivity was started with a large report, i.e a few hundred KB, like for terminal transcript or other command output, the activity start would fail. To solve the issue, if the serialized size of the ReportInfo info object is above DataUtils.TRANSACTION_SIZE_LIMIT_IN_BYTES (100KB), it will be saved to a file in a cache directory /data/data/com.termux/cache/report_activity as a serialized object and loaded when activity is started. Now these large reports can't be copied or shared with other apps since that would again result in TransactionTooLargeException exceptions and ShareUtils automatically truncates the data (now from end) to 100KB length so that the exception doesn't occur. So now a Save To File option has been added in context menu (3 dots on top right) of ReportActivity so that large or small reports can be saved to a file if needed. They will be save in root of /storage/emulated/0 or whatever is the default public external storage directory. The filename would depend on type of report. The storage permissions will be asked if missing. On android 11, if you get permission denied errors even after granting permission, disable permission and grant it again. To solve privacy issues of report being saved to public storage since it may contain private info, an option for custom path will be added in future. The default directory is public storage instead of termux home since its easily accessible via all file managers or from pc. Instructing amateur users to get files via SAF from termux home is not something I wanna take on.

      Another issue is that ReportActivity itself may not be able to show the entire report since Android may throw OutOfMemoryError exceptions if device memory is low. To solve this issue, ReportActivity will truncate the report to 1MB from end that's shown to the user. It will add a header showing that report was truncated. To view the full report, the user will have to use the Save To File option and view the file in an external app or on pc that supports opening large files. The QuickEdit app on Android has been a reliable one in my experience that supports large files, although it has max row/column limits too at a few hundred thousand, depending on android version.

      Despite all this, OutOfMemoryError exceptions could still be thrown if you try to view too large a report, like a few MB, since original report + the truncated report is still held in memory by the app and will consume 2-3 times memory when saving. It's fun coding for android, right?

      The terminal transcript will not be truncated anymore that's generated via Report Issue option in terminal.

      (351934a6)

    • Add TextIOActivity and TextIOInfo. The TextIOActivity can be used to edit or view text based on various config options defined by TextIOInfo and supports monospace font and horizontal scrolling for editing scripts, etc. Current max text limit is 95KB, which can be increased in future. (c3280a94)

    • Add constants for launcher activities of termux plugins. (5e2bec0f)

    • Add Theme.MaterialComponents.DayNight.TermuxPrimaryActivity theme can be used by activities for day and night mode. (0bf4b1ec)

    • ! Support for delete intent for Notification.Builder in NotificationUtils. (baacabdf)

    Changed

    • ! Only allow ContentProvider access if allow-external-apps is set to true. The termux-open and xdg-open commands will now silently fail if value is not set to true. An error notification will be added in future versions. The caller app like QuickEdit may still show a flash error. Check https://github.com/termux/termux-tasker#allow-external-apps-property-optional on info on how to change the value. (dcedf394)

    • Move to semantic versioning for app and library versions and add commit hash and github to APK file names and add support for TERMUX_APP_VERSION_NAME and TERMUX_APK_VERSION_TAG, TERMUX_SPLIT_APKS_FOR_DEBUG_BUILDS, TERMUX_SPLIT_APKS_FOR_RELEASE_BUILDS environmental variable in app/build.gradle. The RELEASE_TAG variable will not be used anymore since it may conflict with possibly other variables used by users. The TERMUX_SPLIT_APKS_FOR_DEBUG_BUILDS can be set to 0 to disable building split APKs which may be helpful for users building termux on device considering they will extra space and build time. Instructions for building are at https://github.com/termux/termux-packages/pull/7227#issuecomment-893022283.

      export TERMUX_SPLIT_APKS_FOR_DEBUG_BUILDS=0  
      ./gradlew assembleDebug  
      

      The APK will be found at ./app/build/outputs/apk/debug/termux-app_debug_universal.apk

      Note that F-Droid uses algorithm at https://gitlab.com/fdroid/fdroidserver/-/blob/2.1a0/fdroidserver/build.py#L746 to automatically detect built APKs, so ensure any modifications to location or file name are compliant. Auto updates are detected by checkupdates bot at https://gitlab.com/fdroid/fdroidserver/-/blob/master/fdroidserver/checkupdates.py

      (177fb048)

    • Store termux-widget token synchronously to the SharedPreferences file on creation. Attempt to solve termux/termux-widget#16. (4f66786b)

    • ! Do not wait for the user to press enter for failed terminal session commands if plugin expects the result back. (c19e01fc)

    • Make sure full path is included in FileUtilsErrnos. (f00738fe)

    • Disable shrinkResources for testing reproducible builds. (23b707a8)

    • Ensure bootstrap installation creates prefix and prefix staging directory before extraction. (4e5f2c7e)

    • Ensure termux files directory is accessible before bootstrap installation and provide better info when running as secondary user/profile. Related issue #2168. (6fa4b9b7)

    • Add selinux context info to termux files info of debug output. (f97f07df)

    • Use multi-process SharedPrefernces for log level of plugin apps. Since termux-app runs in a separate process from other apps, if a user sets log level in termux settings, then it would require exiting the termux-app completely since android caches SharedPrefernces in memory and only writes to the file on app exit. Now updated value will be instantly written to the file so that plugins can directly read at startup. If plugins are already running, they would need to be restarted since usually log levels are loaded at startup. (9f1203f0)

    • Drawer extra-keys button will toggle instead of just opening. (16c56a96)

    • Renamed typo TERMUX_ACTIVITY.ACTION_FAILSAFE_SESSION to TERMUX_ACTIVITY.EXTRA_FAILSAFE_SESSION. (b68a398f)

    • Set default cursor color to white. (4a74618f)

    • Use millisecond timestamps for reports. (98edf1fb)

    • Add gemini to the list of url regex protocols. Implemented by @the-blank-x in #2217. (cac9a769)

    • Convert issue templates to forms. (23d2c1f0)

    • Bump bootstrap to v2022.01.07-r1. (d37cd405)

    • Update LICENSE.md. (fefbf2ec)

    Fixed

    • Fix TermuxFileReceiverActivity incorrect handling of intent extras. Closes #2247. (5a8c4f10)

    • Fix terminal cursor blinker not stopping when typing a character in non-gboard keyboards. (8387b70f)

    • Fix extra-keys shift key not uppercasing for all soft keyboards and added docs for keyboard key characters mapping. (994df1c4)

    • Ensure FN extra key is read by the terminal. (d1478fb6)

    • Use default values if extra-keys or extra-keys-style termux.properties values are empty. (fbb91149)

    • Fix NullPointerException when running bell/vibrate on Samsung devices on android 8 and handled deprecated code

      Apparently occurs on only Samsung android 8 devices and there is no fix for vibrator except catching the exception so that app doesn't crash. (956e20e5)

    • Fix Stdin value not being logged for background execution commands. (486faf7f)

    • Prevent new plugin error or crash notifications overriding content of old ones. (e7fc60af)

    • Fix RunCommandService notification not being cleared if an error was raised. (fabcc4fa)

    • Fix issue where wrong IME inputType would be set if termux was returned to from another app with text input view mode selected. (2b7aa5e8)

    • Fix extra-keys repeatable input from getting stuck in some cases. Related issue #2156. (0308d6a6)

    • Fix calculation of row number for selection and URL clicking. Implemented by @trygveaa in #2146. (54bb83de)

    • Ensure failsafe session can still be opened if files directory is not accessible and fix comment. (a189f636)

    • Fix bootstrap checksum check if it contained leading zeros. (97af7943, 32dcea72)

    • Fix markdown link generation. (8ee0c5a6)

    • Fix permissions for lib/apt/apt-helper. (1b62f7c9)

    • Invert text color under block cursor. Implemented in #2228. Related issue #219. (f65f384a, 19c6134c)

    • Revert "Changed: Bump compileSdkVersion to 31" commit 296ee60d. We do not need to bump to compileSdkVersion 31 currently, since I have decided not to bump androidx.window to 1.0.0-alpha10 or higher currently, since it has changed APIs and ViewUtils will break. Moreover, bumping compileSdkVersion to 31 requires openjdk 11 in build environment, which will break Jitpack library build and possibly still F-Droid as well, unless changes are made. (c59835ed)

    • Fix Discord badge. Implemented by @wmcbtech30 in #2199. (1578ab55)

    • Update urls to https. Implemented by @TotalCaesar659 in #2190. (9a306ca1)

    Source code(tar.gz)
    Source code(zip)
    sha256sums(558 bytes)
    termux-app_v0.118.0+github-debug_arm64-v8a.apk(29.93 MB)
    termux-app_v0.118.0+github-debug_armeabi-v7a.apk(28.49 MB)
    termux-app_v0.118.0+github-debug_universal.apk(100.72 MB)
    termux-app_v0.118.0+github-debug_x86.apk(29.42 MB)
    termux-app_v0.118.0+github-debug_x86_64.apk(31.04 MB)
  • v0.117(Jul 8, 2021)

    0.117 - 2021-07-08

    Changelog

    Added

    • Enable split apks for debug builds. APKs for each architecture and a universal APK that is compatible for all architectures will now be available from Github Actions page from the workflow runs labeled Build. The APKs will be available as zips under the Artifact section named termux-app-*. Architecture specific APKs can be used by users with low disk space since F-Droid releases are universal (since it doesn't support split APKs #1904) and their install+bootstrap installation size is ~180MB instead of ~120MB if an architecture specific APK is used. This should also reduce bandwidth usage and download time for debug builds users if they download an architecture specific zip instead of the universal one. Related #2153. (dccd155b, b90d5947)

    • Add app and device info too for crash notification shown when bootstrap installation or setup storage fails. (56c38266)

    • Trigger termux library builds on jitpack on releases. (d49fd6b0)

    Changed

    • Allow users to disable terminal margin adjustment from termux settings. Previously in v0.115 (32135025) support was added with disable-terminal-margin-adjustment termux.properties property to disable terminal margin adjustment in case in causes screen flickering or other issues on some devices. It has now been removed in (7aefd943) and moved to Termux Settings since if it causes issues at startup and users can't access termux.properties file from the terminal, they will have to use SAF or root to access it, which will require an external app. Users can set the value from the Termux Settings -> Termux -> Terminal View -> Terminal Margin Adjustment toggle. The Termux Settings can be accessed from left drawer in termux and from the android launcher shortcut for Termux Settings, usually accessible by long holding on Termux icon. (e0ad9ff5)

    Fixed

    • Fix java.lang.AbstractMethodError: androidx.window.sidecar.SidecarInterface$SidecarCallback.onDeviceStateChanged. The crash was reported for Microsoft Surface Duo, which would affect some Samsung and other devices as well, mainly dual screens/foldables. It was caused by androidx:window library that has been used by termux-shared since v0.115 having a typo in its proguard rules which didn't stop the removal of the required method for release builds (not debug) by proguard. For people who are getting the crash in v0.115 and v0.116 should set disable-terminal-margin-adjustment=true in termux.properties created as per instructions here and then start termux again and see if it fixes the issue. If you had termux installed before updating, you should be able to directly access the ~/.termux/termux.properties file with SAF. The property will not work in v0.117 as mentioned in Changed section above. (4361c5e0)

    • Fix issue where a colour tint/highlight would be added to the terminal. This would happen when soft keyboard was to be disabled or hidden at startup and a hardware keyboard was attached and user started typing on hardware keyboard without tapping on the terminal first. (c6b4114f)

    • Fix issue where RUN_COMMAND intent was failing for coreutils/busybox applets. (cce6dfed)

    • Attempt to fix bootstrap installation failure that may be caused by invalid mkdirs return value. (dc8bdfe6)

    Github Build APK. Check Installation for more info on Github Build APKs.

    Source code(tar.gz)
    Source code(zip)
  • v0.116(Jul 1, 2021)

    0.116 - 2021-07-01

    Changelog

    Fixed

    • Jitpack library publishing failed for initial v0.115 release so 886e52dc was done to fix it and v0.115 was re-released but jitpack kept building pre-fix initial release as per commit Date in build.log, likely due to one time download. So releasing v0.116 so that it gets picked up. Users can import library based on entries like the following. The one mentioned in b7b12ebe are invalid.

    • implementation 'com.termux.termux-app:termux-shared:0.116'

    • implementation 'com.termux.termux-app:termux-shared:master-SNAPSHOT'

    • implementation 'com.termux.termux-app:termux-shared:e547c15481'

    • implementation 'com.github.termux.termux-app:termux-shared:0.116'

    Note that the first time someone imports a new version, it will take some time to build and you may get errors like Unable to resolve dependency for ':app@debug/compileClasspath'. It will take a few minutes for builds to be downloadable even after build.log shows them to have succeeded, run Sync Project with Gradle Files again to try to redownload. You can check builds and their logs at https://jitpack.io/#termux/termux-app and the API at e.g https://jitpack.io/api/resolve/com.termux/termux-app/master-SNAPSHOT.

    Github Build APK. Check Installation for more info on Github Build APKs.

    Source code(tar.gz)
    Source code(zip)
  • v0.115(Jul 1, 2021)

    0.115 - 2021-07-01

    Changelog

    Added

    • Add support to send back or store RUN_COMMAND intent command results in files and provide way to fix argument splitting sent with am command caused by commas , in arguments itself. Native support has been added inside termux to store results of both foreground and background commands inside files, that also sends back internal errmsgs as long as result files extras are valid. This can be used to run synchronous commands from inside termux, with other apps that have Run commands in Termux environment (com.termux.permission.RUN_COMMAND) like Tasker, from pc over adb or inside adb shell if you have a rooted device, or from pc if you have setup termux sshd. The RUN_COMMAND intent can only be sent by the termux user itself, by an app that has the permission or by the root user. The shell user of adb cannot send it. A script will be provided at a later time that will automatically detect these cases to easily run RUN_COMMAND intent commands which will also automatically create temp directories and do cleanup. This can also be useful inside termux itself, like if you want to start a new foreground session and to automatically store its output to a log file when you exit. Support can also be added for this to be done for termux-boot and termux-widget as well but will require updates for them. Check the commit message for full details and examples for this since too long to be added here. (2aafcf84)

    • Add termux settings button to left drawer too since apparently people can't find the one in context menu. (59877a08)

    • Allow users to disable terminal margin adjustment. The user can add disable-terminal-margin-adjustment=true entry to termux.properties file to disable terminal view margin adjustment that is done to prevent soft keyboard from covering bottom part of terminal view on some devices. Margin adjustment may cause screen flickering on some devices and so should be disabled. The default value is false. So adding the entry disable-terminal-margin-adjustment=true to termux.properties file will disable margin adjustment. Exit termux and restart for changes to take affect after updating value. In case e5a9b99a did not fix screen flickering issues for #2127, then this can be used to disable it. Closes #2127.

    • Show crash notification when bootstrap installation or setup storage failures. Sometimes users report that bootstrap installation failed on their devices but provide no details. Since they don't check logcat for the exception or exception is one time only, we can't know what happened. Although, reasons are likely root ownership files. The notification will show the full stacktrace including suppressed ones for why failure occurred and hopefully be easier to find the problems and we can get reports too. (e408fdcc)

    • Updated bootstrap to 2021.06.30-r1. (56701282)

    Changed

    • Move from github packages to https://jitpack.io for hosting termux library packages. Github Package hosting is considered a private repository since it requires github APIs keys if a hosted library needs to be imported as a dependency. Importing from private repositories is not allowed as per F-Droid policy so termux plugin apps can't import termux libraries as dependencies so hence we move to Jitpack. Usage details for importing termux libraries in your own app as dependencies are in the commit message. (b7b12ebe, 69e5deed, 886e52dc)

    • Change license for non-termux utils from GPLv3 to MIT so that they can be used by other termux plugin apps or apps that may be released under a different license. Termux is already using a lot of libraries that are not GPL and such general utils shouldn't be restrictive anyways. Moreover, TermuxConstants and TermuxPropertyConstants should be MIT licensed as well so that other non-FOSS or non-GPLv3 apps can use them, like for RUN_COMMAND intent. Any code not listed in exceptions of LICENSE.md files is still under GPLv3, mainly termux specific code and it will and should remain that way. All code in files whose license is changed was authored by me (@agnostic-apollo) as far as I can tell, but if any code in them is not that I missed, let me know, so that changes can be made since I can't and won't change the license of code authored by someone else. If some other objection is raised, let me know too. Future contributors should check the LICENSE.md files and see if they are okay with contributing code as MIT and if they are not, then they should create separate file/package in termux-shared. Check termux-app/LICENSE.md and termux-app/termux-shared/LICENSE.md for exceptions. (70e1acca, 49265160)

    • Implement Errno system. This commit adds onto 679e0de0. Now Error class has been implemented which will used to return errors, including suppressed throwables. Requirement for Context object has been removed from FileUtils so that they can be called from anywhere in code instead of having to pass around Context objects. Previously, string.xml was used to store error messages in case multi language support had to be added in future since error messages are displayed to users and not just for dev usage. However, now this will have to handled in java code if needed, based on locale. (4494bc66)

    • The ExecutionCommand has been updated and command result variables have been moved to ResultData and result configuration to ResultConfig since the later two should be agnostic of what type of command there are for. They don't necessarily have to be for terminal/shell commands and can be used for plugin APIs, etc. The ResultData instead of a String errmsg now stores a list of Error objects. This is necessary since multiple errors may be picked up while a command is run, like say working directory is invalid and an error is returned by FileUtils and while sending the result to the caller, the ResultSender returns an additional error because result configuration like result directory or result output format was invalid. In these situations PluginUtils will show a notification to the user with info of each error thrown. In addition to above, in ResultData, the stdout and stderr are converted to StringBuilder instead of a String so that data can appended to each from various places in code. This commit also adds onto 679e0de0 and 4494bc66. (2aafcf84)

    • Move ReportActivity to termux-shared so that other termux plugins can use it too. (7f36d7bb)

    • Move storage permission logic to PermissionUtils and add disable battery optimizations code. Option to disable battery optimizations will be added in termux settings later. (80b495e5)

    • Make TermuxTask and TermuxSession agnostic to termux environment. Those classes shouldn't be tied to termux environment like variables, interpreters and working directory since commands may need to be executed with a different environment like android's or with a different logic. (53c1a49b)

    • Move termux related file utils from FileUtils to TermuxFileUtils. (4494bc66)

    • Move Termux app specific logic out of PermissionUtils. (12f910c3)

    • Move Android specific utils from TermuxUtils to AndroidUtils. (6bca378c)

    • Divide DialogUtils. (553913cd)

    • Move Termux app specific logic out of NotificationUtils. (1c7f9166)

    • Move Termux app specific logic out of CrashHandler. (23a900c4)

    Fixed

    • Fix issues with TermuxActivityRootView margin adjustment. Margin adjustment was causing screen flickering due to invalid values being calculated in landscape and split screen mode. Attempts to fix issue #2127. (e5a9b99a)

    • Redo fix for execution commands exceptions not being logged or sent back to plugin. The f62febbf commit mentioned that it solved the bug where Termux:Tasker would hang indefinitely if Runtime.getRuntime().exec raised an exception, like for invalid or missing interpreter errors and Termux:Tasker wasn't notified of it. Now the errmsg will be used to send any exceptions back to Termux:Tasker and other 3rd party calls. . This however was still broken due to local design changes made to TermuxTask after testing was already done. This commit should solve that problem. Moreover, now a notification will be shown if execution commands fail to start that are run by plugins that don't expect the result back, like with termux-widget, termux-boot or RUN_COMMAND intent. This should make it easier for users to debug problems, since otherwise logcat needs to be looked. But logcat would still need to be looked if commands/scripts fail after they have started due to internal errors. Notifications can be disabled from Termux Settings by disabling the Plugin Error Notifications toggle. (5f2ccca4)

    • Fix issue where terminal cursor blinking would not automatically start again if termux activity is started after device display timeout with double tap and not power button. Fixes #2138. (f77c8863)

    • Fix issue where cursor blinker wouldn't automatically start after session change. (d3c34ad1)

    • Fix issue where cursor blinker wouldn't automatically start after terminal reset if it was disabled before reset. (00f805f7)

    • Fix suppressed exceptions not being logged and long logcat message being truncated. If an exception is thrown, the exception message might not contain the full errors. Individual failures may get added to suppressed throwables which can be extracted from the exception object by calling Throwable[] getSuppressed(). So just logging the exception message may not be enough, the throwable and its suppressed throwables need to be logged as well. This was mainly a concern for FileUtils where guava MoreUtils library was used to delete directories but exceptions weren't being fully logged on failures, like bootstrap failures, so user wouldn't know what really caused the failure. This also adds support with log*Extended() functions so that logcat entries longer than LOGGER_ENTRY_MAX_PAYLOAD do not get truncated by android. This is done by splitting the log message into multiple messages if the limit is crossed. This is specially necessary for logging long stacktraces, suppressed throwables and errmsg of ExecutionCommand, etc. (679e0de0, 5a511a2b)

    • Fixed issue where back button would not exit the activity if bootstrap installation failed and users dismissed the error dialog. (9c922515)

    • Do not start login shell and load ~/.profile if starting a failsafe session. This is done by not starting arg 0 with -. The /system/etc/mkshrc must still be valid for failsafe session to start properly. Fixes #2150. (94c5f367, 93a7525d)

    • Fix issues where crash throwable message wasn't been added to crash log. (20341217)

    Github Build APK. Check Installation for more info on Github Build APKs.

    Source code(tar.gz)
    Source code(zip)
  • v0.114(Jun 10, 2021)

    0.114 - 2021-06-11

    Changelog

    Added

    • Allow users to adjust terminal transcript rows with termux.properties. The terminal-transcript-rows key can be used to adjust the terminal transcript rows. The user can set an integer value between 100 and 50000. The default value is still 2000. So adding an entry like terminal-transcript-rows=10000 to termux.properties file will allow users to scroll back ~10000 lines of command output. After updating the value, termux must be restarted. You can also run termux-reload-settings command so that termux loads the updated value, but only new sessions will use the updated value, existing sessions will not be affected. Be advised that using large values may have a performance impact depending on your device capabilities, so use at your own risk. Closes #2071. (0b4bbaf2)

    • Allow users to set terminal cursor style with termux.properties. The terminal-cursor-style key can be used to set the terminal cursor style. The user can set a string value to block for , underline for _ or bar for | cursor style. The default value is still block. So adding an entry like terminal-cursor-style=bar to termux.properties file will allow users to change to the bar cursor style. After updating the value, termux must be restarted. You can also run termux-reload-settings command so that termux loads the updated value, but only new sessions will use the updated value, existing sessions will not be affected unless you Reset them from terminal's long hold options menu More -> Reset or restart termux activity after double back press to exit. Closes #2075. (f545ebf0)

    • Allow users to disable terminal session change toast. The user can add disable-terminal-session-change-toast=true entry to termux.properties file to disable terminal session change toast. The default value is false. Running termux-reload-settings command will also update the behaviour instantaneously if changed. Closes #2118. (7ac62c98)

    • Updated bootstrap to 2021.06.04-r1. (7620800c)

    Changed

    • Change default extra keys style. If a user does not define a custom value in termux.properties file, then by default 2 rows will be shown with all arrow keys (up/down/left/right) for ease of terminal use. (fd80cdaf)

    Fixed

    • Do not close soft keyboard when toolbar text input view is focused on. Fixes #2077. (e08e3b53)

    • Fix issue where soft keyboard would not show in some cases. Fixes #2111, Fixes #2112. (1ad038ec)

    • Fix issue where soft keyboard overlaps extra keys or terminal in some cases. Check TermuxActivityRootView javadocs for the details. This affected people who had set enforce-char-based-input=true in termux.properties and Gboard clipboard suggestions covered part of extra keys/terminal, but only when text is copied and clipboard suggestions and number keys row toggles are enabled in its settings. Reports have been received for other keyboards as well, like for SwiftKey number key rows overlapping, but hopefully it should be fixed now. If not, then report it. Related #538 and #1539. (e7dd0eee)

    • Remove hardcoded wiki.termux.com url from HelpActivity. (7ef92554)

    • Fix issue where terminal cursor blinking would not automatically start again if termux activity was restarted after exiting it with double back press. (e119d34b)

    • Fix issue where if termux installer failed with an exception after prefix directory was already created, then try again would load a broken environment. (19c690d0)

    Github Build APK. Check Installation for more info on Github Build APKs.

    Source code(tar.gz)
    Source code(zip)
  • v0.113(May 16, 2021)

    0.113 - 2021-05-16

    Changelog

    Added

    • Allow users to enable/disable keyboard instead of just show/hide with KEYBOARD toggle buttons. This soft-keyboard-toggle-behaviour key can be used to change the behaviour. The default behaviour is show/hide. The user can add a line soft-keyboard-toggle-behaviour=enable/disable in ~/termux.properties file to change default behaviour of keyboard toggle buttons to enable/disable. In this mode, tapping the keyboard toggle button will disable (and hide) the keyboard and tapping on the terminal view will not open the keybaord automatically, until the keyboard toggle button is pressed again manually. This applies to split screen and floating keyboard as well. The keyboard can also be enabled from Termux Settings -> Termux -> Terminal I/O -> Soft Keyboard Enabled toggle. Running termux-reload-settings command will also update the behaviour instantaneously if changed. Also fixes #1098. (e4e638bd)
    • Allow users to disable soft keyboard automatically if hardware keyboard is connected. Users can enable this behaviour by enabling the Termux Settings -> Termux -> Terminal I/O -> Soft Keyboard Only If No Hardware toggle. (90c9a7b3)
    • Allow users to enable terminal cursor blinking with termux.properties. This terminal-cursor-blink-rate key can be used to enable terminal cursor blinking. The user can set an int value between 100 and 2000 which will be used as blink rate in millisecond. The default value is 0, which disables cursor blinking. So adding an entry like terminal-cursor-blink-rate=600 to ~/termux.properties file will make the cursor attempt to blink every 600ms. Running termux-reload-settings command will also update the cursor blinking rate instantaneously if changed. This will have a performance impact, so use wisely and at your own risk. Note that you can also change the cursor color by adding cursor property to ~/colors.properties file, like cursor=#FFFFFF for a white cursor. Closes #153. (31298b88, 89a1e02)
    • Add in-app Donation link in Termux Settings for non google playstore releases. We require donations due to bintray shutdown to pay for termux apt repository hosting costs. Related issue termux-packages#6348. (6de37130)
    • Moved Termux app settings into dedicated "directory" in Termux Settings and added About page to show info of all termux apps installed and important links. (d42514d8)
    • Added support for showing APK release type in App Info reports and About page. (1e30022c)
    • Add support for setting Termux:Tasker log level from Termux Settings. (339b2a24)
    • All invalid values stored in termux.properties file during load time will be logged. (f8ccbb49)
    • Updated bootstrap to 2021.05.16-r1. (6524a619)

    Fixed

    • Disable error flashes when clearing TMPDIR directory on termux app exit. (b268b6ed)
    • Fixed NullPointerException on com.termux.app.TermuxService.wantsToStop(). Fixes #2026. (42ad3723)
    • Attempt to fix issues where soft keyboard was not shown in some cases when hardware keyboard was attached. The extra keys and drawer KEYBOARD toggle button and ctrl+alt+k hardware keyboard shortcut will all behave the same now and may help in showing soft keyboard forcefully. Related issues #1995. (Requires testers). (4d1851e6, 39c69db8)
    • Release terminal beep SoundPool resources on activity stop to attempt to prevent exception. (58d5770)
    • Generate potentially long running reports in background threads instead of main UI thread. (2f828255)

    Github Build APK. Check Installation for more info on Github Build APKs.

    Source code(tar.gz)
    Source code(zip)
  • v0.112(Apr 22, 2021)

    0.112 - 2021-04-22

    Fixed

    • Reverted the versioning logic change done in a6ae656c since that caused F-Droid bot and Github Packages to fail to pick up new releases. The versions must be bumped directly in build.gradle file in future and not through other files like gradle.properties. Thanks to @jspricke for notifying us. (0aa5a123)

    Github Build APK. Check Installation for more info on Github Build APKs.

    Source code(tar.gz)
    Source code(zip)
  • v0.111(Apr 21, 2021)

    0.111 - 2021-04-21 (RE-RELEASED)

    Changed

    • Bumped gradle wrapper to 7.0. (1d06ff9b)

    Fixed

    • Fixed termux-reset not working properly since v0.109. (d6eb5e35)
    • Fixed cases where bootstrap was not reinstalled even if PREFIX was broken, i.e if it was empty or only contained the tmp directory. (107927f5, b34f60b1)

    Github Build APK. Check Installation for more info on Github Build APKs.

    Source code(tar.gz)
    Source code(zip)
  • v0.110(Apr 15, 2021)

    0.110 - 2021-04-15

    Added

    • Add support to include source jar files for libraries published by termux so that developers that import the libraries can see javadocs and comments. (3306c3c2)

    Fixed

    • Fix Termux Settings crash for release builds. Fixes #2005 (cde0bd22)
    Source code(tar.gz)
    Source code(zip)
  • v0.109(Apr 13, 2021)

    Change Log:

    • Updated bootstrap archives.
    • Lots of fixes and improvements (see expandable list below).
    Full change log

    Added

    • Added SettingsActivity (Termux Settings) which can be accessed by Long pressing terminal view -> More -> Settings. This will allow GUI based management of settings in future, like keyboard key mapping, etc. Currently supports controlling log level, plugin errors and softkeyboard state. (d39972b3)

    • Add SettingsActivity to launcher shortcuts. (2b3f6817, 325a6f7d)

    • Added ReportActivity and ReportInfo to be used as base for showing reports to users. Currently supports plugin errors, app crashes and issue reports. (9d36e9ad)

    • Added centralized Logging framework to the entire app and terminal-view and terminal-emulator libraries which has 4 levels, Off, Normal (default), Debug, Verbose which can be used by users via logcat to debug problems. Users can set the log level from Termux Settings -> Debugging -> Log Level. Terminal view key logging can now also be enabled with the Terminal View Key Logging toggle without having to recompile the app. Support for writing to files in addition to writing to logcat will/can be added in future. (d39972b3)

    • Added logging for termux bootstrap package installation and setup of storage symlinks. (92b804dc).

    • Requested android.permission.DUMP permission so that users can use dumsys commands without root after running adb shell pm grant com.termux android.permission.DUMP. (356a442c)

    • Requested android.permission.REQUEST_INSTALL_PACKAGES permission to allow users to access Android/obb on android 11 after explicitly granting Termux the permission by going to Termux App Info in Android Settings -> Advance -> Install unknown apps. (93a5bf8d)

    • Added support to warn users if Draw over other apps permission is missing when attempting to start Termux foreground session from the background with plugin commands, like for RUN_COMMAND intent. Check android background restrictions for more info. Now, the Termux foreground session will not even be attempted to be started if permission is missing since it would fail randomly otherwise and users would report bugs for it. (d3ddb217)

    • Added hide-soft-keyboard-on-startup termux.properties property which when set to true will automatically hide the soft keyboard on Termux startup to solve issues for when users use hardware keyboard and soft keyboard wastes screen space. Fixes #1978. (1ef8eb92)

    • Added support for disabling soft keyboard completely for when users use hardware keyboard. Users can toggle the state from Termux Settings -> Keyboard I/O -> Soft Keyboard toggle. (2a8d5e29)

    • Added support for adjusting termux toolbar height with terminal-toolbar-height termux.properties property. The user can set a float value between 0.4 and 3.0 which will be used as the scaling factor for the default height. The default scaling factor is 1. So adding an entry like terminal-toolbar-height=2.0 to termux.properties file will make the toolbar height twice its original height. Fixes #1857. (ff0440d7)

    • Added executable and working directory validation for RUN_COMMAND intent. The working directory will also also be created if its under TermuxConstants.TERMUX_FILES_DIR_PATH. (b4995ef9)

    • Added support for session actions for foreground session commands received via RUN_COMMAND intent or termux-tasker. (ec7568d2)

    • Added support for sending back background and foreground command results for RUN_COMMAND intent and foreground command results for Termux:Tasker. Check RUN_COMMAND Intent Wiki for more info. (a2209ddd)

    • Added support to notify users of errors via flashes and notifications for plugin commands, like for allow-external-apps not set to true when RUN_COMMAND intent is received. Clicking the notification will open the ReportActivity to show the report. The flashes and notifications can be controlled with the Termux Settings -> Debugging -> Plugin Error Notifications toggle. (8612a1d0, 31371b5e)

    • Added support for stdin for background RUN_COMMAND intent, TERMUX_SERVICE.ACTION_SERVICE_EXECUTE and Termux:Tasker (will require update) commands. This will allow users to pass (bash, python, etc) scripts or other data via stdin to the executable. Arguments would still be passed to the executable and not the script. (192b2088, f1034c2e)

    • Added crash reporting so that whenever the Termux app crashes, the crash report (stacktrace, app and device info) will be logged to ~/crash_log.md file in markdown format. When the user will reopen the app, a notification will be shown which when clicked will show the crash report content in ReportActivity. The activity will have important links like email ([email protected]), reddit, github issues of termux app and packages at which the user can optionally report an issue if necessary after copying the crash report text. The ~/crash_log.md file will be moved to ~/crash_log-backup.md so that a notification is not shown again on next startup and can be viewed again via SAF, etc. The notifications can be controlled with the Termux Settings -> Debugging -> Crash Report Notifications toggle. (69e4b575, cf5bb69f)

    • Added support to allow users to report an issue based on terminal transcript with Long pressing terminal view -> More -> Report Issue. Selecting the option will open the ReportActivity with the terminal transcript, app device and APT info with important links like email ([email protected]), reddit, github issues of termux app and packages at which the user can optionally report an issue after copying the report text. The report text will be in markdown format so that it is more readable and will take a few seconds to generate. (939338aa, df4d8ac7, 6293f5f1)

    • Added termux-shared library. This defines shared constants and utils of Termux app and its plugins. This allows for removal of all hardcoded paths in Termux app. The termux plugins should use this in future as well. (682ce083)

    • Added TermuxConstants class to store all shared constants of Termux app and its plugins. This also has info on what changes need to be made if forking Termux app and changing its package name. (14c49867, 0225a8b1)

    • Added TermuxPropertyConstants class that defines shared constants of SharedProperties used by Termux app and its plugins. Also added TermuxSharedProperties class that acts as manager for handling termux properties. (7b4acb53)

    • Added TermuxPreferenceConstants class that defines shared constants of the SharedPreferences used by Termux app and its plugins. Also added TermuxSharedPreferences class that acts as manager for handling termux preferences. (93b506a0, 9e825618)

    • Added SharedProperties class which is an implementation similar to android's SharedPreferences interface for reading from .properties files which also maintains an in-memory cache for the key/value pairs. Write support is currently not there since .properties files also have comments and escapes, so in-place editing would be required to update values. For this apron library could be looked into. (7b4acb53)

    • Added ExecutionCommand to stores all data related to an execution command. This allows easier management and passing of execution command data between classes and management of it, like post processing and failure management. (bccc35bc, 31371b5e, 1b5e5b56)

    • Added ShellUtils to provide utilities for shell related stuff, since they don't belong in BackgroundJob which has been removed. (dff27945, 249f7c6b, 8598b92d)

    • Added the TermuxSession class for linking a TerminalSession to an ExecutionCommand and to maintain info for foreground Termux sessions. (78a99fdd, 0cd7cb81)

    • Added the TermuxTask class for linking a Process to an ExecutionCommand and to maintain info for background Termux tasks. It also supports synchronous command execution as well to run shell commands and scripts from anywhere for internal use by termux app and its plugins. (f62febbf, 0cd7cb81)

    • Added StreamGobbler class which has been imported from libsuperuser and partially modified to read stdout and stderr of background commands. (f62febbf)

    • Added interface methods to TerminalViewClient in terminal-view library so that it becomes agnostic of termux.properties files. (10d6eaa5)

    • Added MarkdownUtitls to provide utilities for markdown support in the app, like for error and crash reports. It uses the commonmark-spec via the markwon library. (131f4817)

    • Added ShareUtils to provide utilities for sharing data from termux apps. It will also try to prevent android.os.TransactionTooLargeException exceptions when sharing large data. (c28990a1)

    • Added TermuxUtils to provide utilities for termux app specific operations, like getting termux app info, device info, report info, Context object of each termux plugin app, etc. (c9e18e5b, 34919563, 69e4b575, 15eb56d4)

    • Added NotificationUtils to provide utilities to build and manage notifications. (20d20f42)

    • Added PackageUtils to provide utilities to get various package related info. This will be used to get info based on app Context objects instead of using BuildConfig which wouldn't have been available across termux plugins. (15eb56d4)

    • Added FileUtils to provide utilities to safely manage files. Also added support to get detailed UNIX file attributes by porting classes from android's libcore/ojluni. (d4fc34ca)

    Changed

    • Refactored TermuxActivity. Dedicated classes and functions have been created for various actions and commands. (c9e18e5b)

    • The dedicated TerminalToolbarViewPager class has been created to handle the now called toolbar that shows on the bottom of the terminal view. (c9e18e5b)

    • The dedicated TermuxSessionsListViewController class has been created to handle view related functionality of the termux sessions list shown in the left drawer. (c9e18e5b)

    • The dedicated TermuxTerminalSessionClient class has been created to handle TerminalSession class TerminalSessionClient interface (previously SessionChangedCallback). (c9e18e5b, 824b3e65)

    • Refactored TermuxService. Dedicated classes and functions have been created for various actions and commands. (d9b5344b)

    • Refactored terminal-view. Dedicated classes and functions have been created for various actions and commands. (ada5087f)

    • The dedicated CursorController, TextSelectionCursorController(previously SelectionModifierCursorController) and TextSelectionHandleView (previously HandleView) classes have been created to handle text selection and have been moved from TerminalView. (ada5087f)

    • Get TERMUX_VERSION while building shell environment via Termux package context instead of BuildConfig so that termux plugin apps can use it too. (d4653d05)

    • Use FileUtils for bootstrap and shared storage symlinks setup. (b2cd20c0)

    • Use FileUtils for clearing TMPDIR and move clearing function to ShellUtils from TermuxService. (8598b92d)

    • Disable obfuscation of termux-app in release builds without disabling optimizations and shrinking to allow stacktraces to have full class and method names when a crash report is generated. (067709bf)

    • Changed compileSdkVersion (NOT targetSdkVersion) to 29 so that newer APIs can be used. (8e80e889)

    • Moved activities and fragments to respective packages. (b856e169)

    • Fixed xml files naming convention. (c9e18e5b, 4eced52c)

    • Fixed string resources naming convention. (eeb85545)

    Fixed

    • Fixed Duplicate finish request for ActivityRecord errors. (f50d15d3)

    • Fixed executable and working directory path expansion in RunCommandService where it was not expanding path if exactly $PREFIX is passed and was adding extra trailing slashes in some cases. (80858bab)

    • Fixed the issue when cwd is empty and is passed to Runtime.getRuntime().exec(progArray, env, new File(cwd));, it raises the No such file or directory exceptions when targeting sdk 29. (85b2c44a)

    • Fixed non-crashing NoClassDefFoundError exceptions for TermuxActivity. (9fd2cf98)

    • Fixed few potential null pointer exceptions (and probably added a few more). (dbf84773)

    • Fix old issue where termux app would crash if sessions list ListView was not notified of new sessions. (ae260fad)

    • Fixed issue which caused the java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. exception to be thrown when long pressing the down key while simultaneously long pressing the terminal view for text selection and crashed the app. Fixes #1501. (ada5087f)

    • Fixed issue to restore keyboard input into terminal view when toggling extra-keys slider input with VOL_UP+q. Fixes #1420. (395759cc)

    • Fixed TermuxActivityBroadcastReceiver wrongly designed intent actions and extras. (e5c5174f)

    • Fixed potential crashes of TermuxService due to startForeground() and stopForeground() not being called in all the right places. (d9b5344b)

    • Fixed performance degradation of background commands since logging of every line separately was enabled. They will now only be logged if log level is set to verbose. This will also prevent potentially private user data from being sent to logcat by default. (f62febbf)

    • Fixed issue where TermuxService was stopped and Termux notification canceled if background tasks were still running but all sessions had been closed. (f888f35e)

    • Fixed issue where Termux:Tasker would hang indefinitely when the command was executed with Runtime.getRuntime().exec() and it raised an exception, like for invalid or missing interpreter errors and Termux:Tasker was not notified of it. Now the errmsg will be used to send any exceptions back to Termux:Tasker and other 3rd party calls. (f62febbf)

    • Fixed issue where stdout or stderr were too large in size and the TransactionTooLargeException exception was raised and result of background commands was not sent back to the caller. This previously only applied to Termux:Tasker which would hang indefinitely. Now stdout and stderr will be truncated from the start to max 100KB combined. The original size of stdout and stderr will now also be sent to the caller so that they can check if either of them were truncated, these additional variables need to be implemented in Termux:Tasker but will be available for the now supported RUN_COMMAND intent results. The errmsg will also be truncated from end to max 25KB to preserve start of stacktraces. (f62febbf)

    • Fixed issue where Termux:Tasker would hang indefinitely for background commands when TermuxService was killed before the commands completed or before they even started because TermuxService was about to be killed since Termux:Tasker was not notified of it. Now, TermuxService will kill all background commands started by plugins for which the result is expect back via a pending intent before it is destroyed and notify Termux:Tasker. For commands that have not even started, Termux:Tasker will be notified that they have been canceled. This previously only applied to Termux:Tasker and not RUN_COMMAND intent, but now will apply to the later as well if result is expected back. Note that there may still be cases where TermuxService is killed without even having the chance to notify the command sender, in which case reasonable timeout values should be used, like the one available for Tasker actions. (0cd7cb81)

    Deprecated

    • TERMUX_ACTIVITY.EXTRA_RELOAD_STYLE (com.termux.app.reload_style) which was previously used for requesting storage permissions if its value equaled storage has been deprecated. (e5c5174f)
    Source code(tar.gz)
    Source code(zip)
  • v0.108(Feb 19, 2021)

    Special release to fix F-Droid build issue as new build configuration (split apks) is not supported by F-Droid in way how it was introduced. Now it is reverted back to all-in-one architecture apk. Otherwise, changelog is same as unreleased v0.107.

    Source code(tar.gz)
    Source code(zip)
  • v0.107(Feb 3, 2021)

    Changes:

    • Implement numpad arrows/home/end/pgup/pgdn/ins/del when num lock is off.
    • Extra keys: handle multiple defined special buttons and in popup. Fix for https://github.com/termux/termux-app/issues/1881.
    • ~/.termux/termux.properties: add option fullscreen to toggle fullscreen mode. You may need to enable use-fullscreen-workaround on some devices to fix layout issues, though on some devices it still doesn't work properly. Consider fullscreen mode as unstable for now.
    • ~/.termux/termux.properties: add option default-working-directory which allows to open Termux in a specified directory instead of home.
    • Added back PNG icons in addition to current adaptive/vector icon. This should fix issues with launchers still not supporting adaptive icons.
    • Export current application version as environment variable TERMUX_VERSION.
    • Update bootstrap archives.

    ~~From this point Termux does split-apk builds. One APK per CPU architecture: for aarch64, arm, i686 and x86_64.~~

    Source code(tar.gz)
    Source code(zip)
  • v0.106(Jan 17, 2021)

    This is actually fixed v0.105 release, so changes are same by comparing to v0.104:

    • Remove restrictions from file types viewable by ~/bin/termux-file-editor.
    • If Termux:Styling is not installed, suggest to install it from F-Droid instead of Play Store, when attempting to change terminal font/colors.
    • Add property ctrl-space-workaround to enable ctrl+space usable on hardware keyboard for some devices.
    • Updated bootstrap archives.
    Source code(tar.gz)
    Source code(zip)
  • v0.105(Jan 6, 2021)

    • Remove restrictions from file types viewable by ~/bin/termux-file-editor.
    • If Termux:Styling is not installed, suggest to install it from F-Droid instead of Play Store, when attempting to change terminal font/colors.
    • Add property ctrl-space-workaround to enable ctrl+space usable on hardware keyboard for some devices.
    • Updated bootstrap archives.

    This release is broken, sorry. Use v0.104 instead!

    Source code(tar.gz)
    Source code(zip)
  • v0.104(Dec 29, 2020)

  • v0.103(Nov 17, 2020)

    • Added READ_LOGS and WRITE_SECURE_SETTINGS permissions for advanced users. These permissions can be enabled with ADB.
    • Updated bootstrap archives.
    Source code(tar.gz)
    Source code(zip)
  • v0.102(Oct 12, 2020)

  • v0.101(Sep 28, 2020)

    • Terminal emulation: fix handling of DECRQM sequence. Issue https://github.com/termux/termux-app/issues/1752.
    • Fix crash when using RunCommandService and issue with foreground sessions. Pull request https://github.com/termux/termux-app/pull/1764.
    • Update bootstrap archives.

    Resubmission of v0.100 but with fixed bootstrap archives.

    Source code(tar.gz)
    Source code(zip)
  • v0.100(Sep 27, 2020)

    • Terminal emulation: fix handling of DECRQM sequence. Issue https://github.com/termux/termux-app/issues/1752.
    • Fix crash when using RunCommandService and issue with foreground sessions. Pull request https://github.com/termux/termux-app/pull/1764.
    • Update bootstrap archives.

    Note: bootstrap archives contain broken dpkg (crashes on ARM devices). Fixed app will be resubmitted as v0.101.

    Source code(tar.gz)
    Source code(zip)
  • v0.99(Aug 26, 2020)

    • Provide a workaround for input issues with some keyboards. Issue https://github.com/termux/termux-app/issues/686.
    • Fix linter errors. Issue https://github.com/termux/termux-app/issues/1670.
    • Always flush terminal output before closing session. Issue https://github.com/termux/termux-app/issues/1695.
    • Fix permission description for RUN_COMMAND intent. Issue https://github.com/termux/termux-app/issues/1713.
    • Updated bootstrap archives.
    Source code(tar.gz)
    Source code(zip)
  • v0.98(Aug 7, 2020)

    • Fix width of some unicode characters. Some unicode characters where updated in wcwidth/libandroid-support previously, but the WcWidth.java was not, leading to some characters being detected as having the wrong width. With this the java code is in-sync with the c code in libandroid-support. Thanks @landfillbaby.
    • Update bootstrap archives.
    Source code(tar.gz)
    Source code(zip)
  • v0.97(Aug 7, 2020)

    • Fix width of some unicode characters

    Some unicode characters where updated in wcwidth/libandroid-support previously, but the WcWidth.java was not, leading to some characters being detected as having the wrong width. With this the java code is in-sync with the c code in libandroid-support. Thanks @landfillbaby.

    Not a release due to version mismatch between this tag and value in app/build.gradle!

    Source code(tar.gz)
    Source code(zip)
  • v0.96(Jul 30, 2020)

    • Export environment variables specific to Android 11 if available.
    • Export environment variable COLORTERM=truecolor - used by certain programs when checking for True Color support. (https://github.com/termux/termux-app/pull/1610)
    • Fixed selection rendering when alternate cursor styles are used. (https://github.com/termux/termux-app/pull/1627)
    • Fixed invisible text issue on some color schemes - now colors are being inverted. (https://github.com/termux/termux-app/pull/1628)
    • Fixed notification icon. (https://github.com/termux/termux-app/pull/1649)
    • Fixed argument handling for com.termux.RUN_COMMAND intent action + allow background command execution. (https://github.com/termux/termux-app/pull/1679)
    Source code(tar.gz)
    Source code(zip)
  • v0.95(Jun 9, 2020)

    • Fixed incorrect message which is shown in case when bootstrap installation fails.
    • Updated bootstrap archives.
    • Fixed issue when malformed \uXXXX tokens in termux.properties lead to application crash. Issue https://github.com/termux/termux-app/issues/1589.
    • Introduced support for auto-detection of system dark theme (https://github.com/termux/termux-app/pull/1476).
    • Properly set orientation of text selection handle (https://github.com/termux/termux-app/pull/1477).
    • Update notification icon to match the launcher icon (https://github.com/termux/termux-app/pull/1478).
    • Extended extra keys configuration (https://github.com/termux/termux-app/pull/1479).
    • Support opening log files with view intent (https://github.com/termux/termux-app/pull/1502).
    • Provide a way to allow third-party applications to execute commands within Termux environment. Issue https://github.com/termux/termux-app/issues/804.
    • Use vector drawables for text selection handles.
    Source code(tar.gz)
    Source code(zip)
  • v0.94(Mar 24, 2020)

  • v0.92(Feb 9, 2020)

  • v0.90(Feb 2, 2020)

  • v0.88(Jan 18, 2020)

  • v0.86(Jan 5, 2020)

    • Handle text selection better when scrolling (#1289).
    • Clear scrollback buffer when resetting to initial state (#1390).
    • Properly set the BOOTCLASSPATH environment variable (#1409).
    • Handle magnet links with termux-url-opener (#1382).
    • Expose more information to Termux:Tasker (#1365).
    • Create new terminal sessions with directory of active session (#1009).
    Source code(tar.gz)
    Source code(zip)
  • v0.84(Nov 24, 2019)

Owner
Termux
Android terminal and Linux environment.
Termux
A plugin for Termux to use native Android GUI components from CLI applications.

Termux:GUI This is a plugin for Termux that enables command line programs to use the native android GUI. In the examples directory you can find demo v

Termux 345 Jan 1, 2023
An Android Library for in-app switching between environment variables

android-env-picker An Android Library for in-app switching between environment variables. Central use case is picking a desired endpoint for backend c

Bayerischer Rundfunk 8 May 1, 2022
OSGeo4A is a build environment to cross-compile opensource GIS software for android devices

OSGeo4A This provides a set of scripts to build opensource geo tools for Android. This is Experimental Dependencies instructions you need a JDK v8 or

OPENGIS.ch 31 Aug 5, 2022
A multi-platform Collins Dictionary client, supports for Desktop(Windows/Linux/MacOS) and Android.

Collins Dictionary This is a multi-platform Collins Dictionary client, supports for Desktop(Windows/Linux/MacOS) and Android. For Linux and MacOS, ple

KonYaco 57 Dec 30, 2022
Linux GUI for Kuri's userspace tablet drivers. Supports non-wacom (XP-Pen, Huion, Gaomon) graphics tablets and pen displays

Kuri's Userspace tablet driver utility (GUI) This is a new GUI implementation for the userland driver I've written here: https://github.com/kurikaesu/

Aren Villanueva 12 Jan 4, 2023
A rewrite of the popular project GitUp that works in Linux, Mac, and Windows.

GitDown This is a rewrite from the ground up of the popular GitUp library available on Mac. It is built using Kotlin and Compose Desktop from Jetbrain

Cody Mikol 20 Dec 16, 2022
Andorid app which provides a bunch of useful Linux commands.

Linux Command Library for Android The app currently has 3203 manual pages, 1351 one-line scripts and a bunch of general terminal tips. It works 100% o

Simon Schubert 285 Jan 3, 2023
Math World is an Android Application specialized in mathematics, where the application includes some sections related to arithmetic, unit conversion, scientific math laws and constants, as well as some mathematical questions that need some intelligence to reach the solution.

Math World is an Android Application specialized in mathematics, where the application includes some sections related to arithmetic, unit conversion, scientific math laws and constants, as well as some mathematical questions that need some intelligence to reach the solution.

null 7 Mar 12, 2022
Connect is an Android Application to connect people for a project and can then work on the application to efficiently complete the project

Connect is an Android Application to connect people for a project and can then work on the application to efficiently complete the project

Shubhaprasad Padhy 1 Jan 9, 2022
A blogging mobile application built with Kotlin using MVC design pattern and Take some advantage of Jetpack , View & Data Binding It's a mimic for Tumblr application , But a little prettier than him 😉

A blogging mobile application built with Kotlin using MVC design pattern and Take some advantage of Jetpack , View & Data Binding It's a mimic for Tum

Ahmed Ihab 17 Dec 23, 2022
Quiz-Application - A quiz application which uses opentdb api to get quiz of different levels like Easy Hard and Medium

Quiz-Application A quiz application which uses opentdb api to get quiz of differ

Pranat Praveer 2 Jan 25, 2022
The Android Trivia application is an application that asks the user trivia questions about Android development

The Android Trivia application is an application that asks the user trivia questions about Android development. It makes use of the Navigation component within Jetpack to move the user between different screens. Each screen is implemented as a Fragment. The app navigates using buttons, the Action Bar, and the Navigation Drawer.

Srihitha Tadiparthi 1 Feb 10, 2022
Android application compatible with ZX2C4's Pass command line application

Password Store Download Documentation We're in the process of rewriting our documentation from scratch, and the work-in-progress state can be seen her

Android Password Store 2.2k Jan 8, 2023
Android Phishing Application.This Project is for Educational purposes only.The Developer of this application is not responsible of any bad usage

Android Phishing Application.This Project is for Educational purposes only.The Developer of this application is not responsible of any bad usage

Aria Shirazi 93 Oct 23, 2022
Realtime SOS Android Application. Location (GPS + Cellular Network) tracing application by alerting guardians of the User.

WomenSaftey Women Safety Android Application: Realtime SOS Android Application. Designed a Location (GPS + Cellular Network) tracing application by al

jatin kasera 6 Nov 19, 2022
Application: SLA report This application calculates, based on an input, the average duration per service of Axon.

Application: SLA report This application calculates, based on an input, the average duration per service of Axon.

null 3 Aug 5, 2022
A mobile application that allows you to get random information every time you enter the application.

Knowledge Repository A mobile application that allows you to get random information every time you enter the application. Google Play Store : Screensh

Nisa Efendioğlu 2 Jul 10, 2022
AppUI Sample Application - display how you can create your own custom AppUI application within a few minutes

AppUI Sample Application This is an open-source project to display how you can create your own custom AppUI application within a few minutes. I have a

Formaloo 5 Sep 5, 2022