Giter Site home page Giter Site logo

termux / termux-app Goto Github PK

View Code? Open in Web Editor NEW
31.0K 1.2K 3.3K 4.38 MB

Termux - a terminal emulator application for Android OS extendible by variety of packages.

Home Page: https://f-droid.org/en/packages/com.termux

License: Other

Java 98.26% C 0.37% Makefile 0.02% Shell 0.15% Assembly 0.02% C++ 1.17%
android terminal termux linux hacktoberfest

termux-app's Introduction

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.

We are looking for Termux Android application maintainers.


NOTICE: Termux may be unstable 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, phantom cached and empty processes docs and this TLDR comment on how to disable trimming of phantom and excessive cpu usage 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.


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 ASAP for various bug fixes, including a critical world-readable vulnerability reported here. 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 with full support for apps and packages.

Support for both app and packages was dropped for Android 5 and 6 on 2020-01-01 at v0.83, however it was re-added just for the app without any support for package updates on 2022-05-24 via the GitHub sources. Check here for the details.

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. For android >= 7, only install apt-android-7 variants. For android 5 and 6, only install apt-android-5 variants.

The APKs for GitHub Releases will be listed under Assets drop-down of a release. These are automatically attached when a new version is released.

The APKs for GitHub Build action workflows will be listed under Artifacts section of a workflow run. These are created for each commit/push done to the repository and can be used by users who don't want to wait for releases and want to try out the latest features immediately or want to test their pull requests. Note that for action workflows, you need to be logged into a GitHub account for the Artifacts links to be enabled/clickable. If you are using the GitHub app, then make sure to open workflow link in a browser like Chrome or Firefox that has your GitHub account logged in since the in-app browser may not be logged in.

The APKs for both of these are debuggable and are compatible with each other but they are not compatible with other sources.

Both universal and architecture specific APKs are released. The APK and bootstrap installation size will be ~180MB if using universal and ~120MB if using architecture specific. Check here for details.

Security warning: APK files on GitHub are signed with a test key that has been shared with community. This IS NOT an official developer key and everyone can use it to generate releases for own testing. Be very careful when using Termux GitHub builds obtained elsewhere except https://github.com/termux/termux-app. Everyone is able to use it to forge a malicious Termux update installable over the GitHub build. Think twice about installing Termux builds distributed via Telegram or other social media. If your device get caught by malware, we will not be able to help you.

The test key shall not be used to impersonate @termux and can't be used for this anyway. This key is not trusted by us and it is quite easy to detect its use in user generated content.

Keystore information
Alias name: alias
Creation date: Oct 4, 2019
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=APK Signer, OU=Earth, O=Earth
Issuer: CN=APK Signer, OU=Earth, O=Earth
Serial number: 29be297b
Valid from: Wed Sep 04 02:03:24 EEST 2019 until: Tue Oct 26 02:03:24 EEST 2049
Certificate fingerprints:
         SHA1: 51:79:55:EA:BF:69:FC:05:7C:41:C7:D3:79:DB:BC:EF:20:AD:85:F2
         SHA256: B6:DA:01:48:0E:EF:D5:FB:F2:CD:37:71:B8:D1:02:1E:C7:91:30:4B:DD:6C:4B:F4:1D:3F:AA:BA:D4:8E:E5:E1
Signature algorithm name: SHA1withRSA (disabled)
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3

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.

Termux developers do not have access to Play Store Console account where Termux is published and therefore can't remove the app. You are encouraged to move to F-Droid or GitHub builds as soon as possible and suggest doing so for other users via social media.

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 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?

  • Play store apps have multiple critical vulnerabilities as reported at https://termux.github.io/general/2022/02/15/termux-apps-vulnerability-disclosures.html and since they cannot be updated with fixes, any users using older versions would be vulnerable.

  • They should be disabled because deprecated things get removed and are not supported after some time, its the standard practice. It has been many months now since deprecation was announced and updates have not been released on Play Store since after 29 September 2020.

  • The new versions have lots of new features and fixes which you can mostly check out in the Changelog of GitHub Releases that you may be missing out. Extra detail is usually provided in commit messages.

  • Users on old versions are quite often reporting issues in multiple repositories and support forums that were fixed months ago, which we then have to deal with. The maintainers of @termux work in their free time, majorly for free, to work on development and provide support and having to re-re-deal with old issues takes away the already limited time from current work and is not possible to continue doing. Play Store page of termux-app has been filled with bad reviews of "broken app", even though its clearly mentioned on the page that app is not being updated, yet users don't read and still install and report issues.

  • Asking people to pay for plugins when the termux-app at installation time is broken due to repository issues and has bugs is unethical.

  • Old versions don't have proper logging/debugging and crash report support. Reporting bugs without logs or detailed info is not helpful in solving them.

  • It's also easier for us to solve package related issues and provide custom functionality with app updates, which can't be done if users continue using old versions. For example, the bintray shutdown causing package install/update failures for new Play Store users is/was not an issue for F-Droid users since it is being shipped with updated bootstrap and repo info, hence no reported issues from new F-Droid users.

Uninstallation

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 -> <APP_NAME> -> 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.

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.

Commit Messages Guidelines

Commit messages must use the Conventional Commits spec so that chagelogs as per the Keep a Changelog spec can automatically be generated by the create-conventional-changelog script, check its repo for further details on the spec. The first letter for type and description must be capital and description should be in the present tense. The space after the colon : is necessary. For a breaking change, add an exclamation mark ! before the colon :, so that it is highlighted in the chagelog automatically.

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

Only the types listed below must be used exactly as they are used in the changelog headings. For example, 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): Fix some bug. Do not use anything else as type, like add instead of Added, etc.

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

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 building bootstrap, here and here.
  • 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.

termux-app's People

Contributors

agnostic-apollo avatar archenoth avatar auxilus avatar dependabot[bot] avatar dkramer95 avatar easyaspi314 avatar fornwall avatar friederbluemle avatar grimler91 avatar hannesa2 avatar kzlin129 avatar l-jonas avatar landfillbaby avatar maoabc avatar michalbednarski avatar mklein994 avatar nikam14 avatar pvagner avatar quasic avatar rakslice avatar robertvandeneynde avatar tareksander avatar thunder-coding avatar tomty89 avatar trygveaa avatar utzcoz avatar vindeville avatar whydoubt avatar x0b avatar xqdoo00o avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

termux-app's Issues

Don't vibrate on backspace key press.

Currently when backspace key is pressed, the device vibrates.

When backspace key is hold after clearing the text, the device continuously vibrates. This is kind of annoying.

Please remove vibration on backspace key press..

apt update invalid message error

Hi. I am receiving this error below on apt update. dpkg works without problems.

$ apt update
0% [Working]res_send: select: Connection refused
Hit:1 http://apt.termux.com stable InRelease
Reading package lists... Done
E: Invalid message from method http: ;; new DG socket
102 Status
URI: http://apt.termux.com/dists/stable/InRelease
Message: Connecting to apt.termux.com

Not sure if this is a local configuration issue or something on the repo side.

Nix package manager

Hi, has someone tried getting nix to work inside termux? This would mean to have lot of packages available.
Here's a guide to get it on various distro.
Thanks, Nicolò

Google Pixel C Keyboard Escape key handling

Hi,

I have recently (naturally) aquired a Pixel C with the Pixel C Keyboard. Almost everything seems to be working, there is just an annoyance preventing me from using termux fully.
Since they Pixel C Keyboard is missing keys, there are build-in hotkeys for the missing ones. However:

If I press the ...+1 key that maps to escape I also get the extended-keys soft-keyboard. It makes vi quite frustrating to use :)

I believe this is an issue with termux because:

  • other programs I tried to not have this behaviour
  • termux does not have this behavour with other keys like [ or ] that are also not present as physical keys.
  • escape keys are funny with terminals :)

programs that produce a lot of output freezes app.

I ran to this issue again today,
https://plus.google.com/u/0/105143408064070053742/posts/SckNbhF6RQY
I was busy with other stuffs so I had made a quick post there hoping someone would chime in.. great to know that issues I wanted to report with C++ linking and play-audio have been resolved already.

Anyways back to current issue, programs that write a lot of output to terminal freezes app. I investigated it a bit and it doesnt happen if the write is limited..

Here's a test case..
Run a program that writes to terminal
find $PREFIX/lib
The terminal will output until a new line and freeze until the command completes.

Now limit the output with pv.
apt install pv
find $PREFIX/lib | pv -L 2048
The output will be scrolled too fast to read in the terminal but it doesnt freeze the app.

Option to show bold text in bright color

Some programs like htop show bold black text on black background, and it's impossible to see, so it would be nice to have an option to display bold text in bright color.

Volume keys don't seem to work on CM12.1 (bacon)

The volume keys don't seem to work on Cyanogenmod 12.1 on my OnePlus One. When I hit VolDown+d, the device vibrates as long as hold VolDown, and the "d" shows up as if nothing had happened.

Cannot write to external SD card

$ touch /storage/extSdCard/test
touch: /storage/extSdCard/test: Permission denied

I guess this comes from Android 5's new permissions for SD cards. Any way to fix it?

I am stuck in Google's keyboard...

This started about the time I bought the styling app, so I suppose there is a slight chance this is related. Google's keyboard lacks too many modifier, function, and arrow keys to be useful on a cli app like Termux. I have the hacker's keyboard set, and it works in all other apps; with the exception of Termux.

I am sorry for not reporting this sooner, but I've been setting up a new laptop. I am running on a 1st gen N7 rooted w/ cyanogenMod.

I updated Termux/packages on an Identical N7 except 4 it's stock rooted, w/o the styling app; and it's Termux still picks up the Hacker's Keyboard just fine.

I am going to try w/o the styling app, and see if that helps. I might also try wiping the app cache 4 Termux. If these steps fail I will try a backup/reinstall of Termux.

I'll report back if anything I can come up w/ works.

btw This is Kevin Lausen from G+ & kjlw_99 on irc

Option to get previous behavior with respect to hiding keyboard and entering ESC

Now termux by default behaves standardly, with the triangle retracting the keyboard instead of sending the escape key. I like the old behavior better, with the triangle sending the escape key and a touch on the screen hiding the keyboard. I've managed to get the triangle=esc behavior back by setting that up on termux.properties, and I am wondering if I can also set the single touch on the screen to hide the keyboard. Is there a way?

FR:add mitmproxy and build-essentials.

Hi

It would be nice if these packages are in the repo. I tried to jnstall mimtoroxy using pip but getting errors, tgere are couple dependencies that i could not get ftom the trrmyx repo.

thanks

How to donate?

Hi, I've not found a donate button, paypal addres nor bitcoin address on the website.
How do I donate? :D

Ctrl key with Sogou Pinyin doesn't work

I'm connecting a keyboard with USB OTG. Pressing ctrl on the keyboard works neither in shell nor in any command line applications. (vtshowkeys prints nothing when I press ctrl).
Here is the logcat output when I pressed ctrl-C in shell, if helpful:
screenshot_2016-02-13-20-26-02_com termux
The IM I'm using is Sogou Pinyin. Its keyboard is hidden during testing.
Changing IM to Google Pinyin fixes ctrl, but Esc won't work, similar to #40.
Thanks

Incompability with MI PAD

When I tried to install termux on MI PAD, but sadly Google Play tells me that

This item is not compatible with your device

As far as I know, MI PAD doesn't have a GPS module, but I don't think that is the cause. How can I look into this issue?

[FR] option to read password with termux-api?

I'm new to termux (very nice package and Android interaction concept!) and tried to use termux-api to query a password from a script, but termux-dialog seems to be rather limited so far.

Do you think it makes sense and is possible to add such an option, for example to perform encfs or sshfs mounts controlled by scripts?

Can't select text on the left side of the terminal because of the drawer

Right now, I can't select text that starts at column 0 in the terminal because the drawer that slides out from the left takes precedence. That drawer should be disabled when selecting.

It would also be nice if there was some way of confirming/correcting the selection, since it's difficult to tell which tiny character my finger is about to touch.

The simplest hack would be a little pop-up that says "is this selection correct?", and if not, the user is put back into selection mode.

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.

Support for Android < 5 (4.*)

I think that you was waiting for this request from your community :D

The Android Support Library is very useful for that.

(For the records: sadly my latest avaiable CyanogenMod is a 4.4)

Escape sequence for scrolling down broken with a top scroll margin

The Termux implementation of the ${CSI}${N}T escape sequence to scroll down N lines (SD - Pan Up) does not take the top margin into account when figuring out where to place the scrolled rows.

A simple shell script to reproduce the issue

clear
for i in 1 2 3 4 5; do printf "${i}\r\n"; done
printf "\033[3r" # Top scroll margin to 3.
printf "\033[2T" # Scroll down.
read
reset

This should leave the screen containing

1
2


3
4
5

due to the scroll margin protecting the top two lines.

One program that is affected is htop, which (with a long enough list of processes relative to the terminal) sets the top margin to protect the upper CPU usage area before scrolling the list below, causing garbled display in Termux. This was reported in termux/termux-packages#86.

"libcrypto.so" is 32-bit instead of 64-bit

$ ssh
CANNOT LINK EXECUTABLE DEPENDENCIES: "libcrypto.so" is 32-bit instead of 64-bit
$ df -h
CANNOT LINK EXECUTABLE DEPENDENCIES: "libcrypto.so" is 32-bit instead of 64-bit

[FR] The alternative offline-install apk

First, thank you for this application. It's really promising.
I was surprised by small apk size (130kB), but the first run ruined that surprise. It took 7 minutes to download the bootstrap package on my 64kb/s connection. Having the base pacakge installed with the apk would be useful for people with no or limited internet access.
Cheers!

Usable on 2nd user?

Termux app when installed in 2nd user and opened, complains that it can only be installed on primary account.

Can it be made usable on 2nd user? Only for those commands not requiring superuser access.

Erase sequences should not be affected by current coloring

This will color the whole termux terminal red: echo -e '\033[41m\033[J'. No other terminal emulators that I know of exhibit this behavior.

This is because termux fill the affected area with the current foreground and background coloring when it receives the erase area sequence \033[J.

The erase line sequence, \033[K, is also affected.

Can't upload file

I tried to upload a file via the ownCloud app, using Termux to pick the file. I can upload the file using a file manager app:

--------- beginning of main
02-05 12:34:35.625 27391 27391 V UploadSourceDialogFragment: constructor
02-05 12:34:35.634 27391 27391 I AppCompatDelegate: The Activity's LayoutInflater already has a Factory installed so we can not install AppCompat's
--------- beginning of system
02-05 12:34:37.477   455   467 I ActivityManager: START u0 {act=android.intent.action.CHOOSER cmp=android/com.android.internal.app.ChooserActivity (has extras)} from uid 10126 on display 0
02-05 12:34:37.498 27391 27391 V FileDisplayActivity: onPause() start
02-05 12:34:37.499 27391 27391 D FileDisplayActivity: onPause() ending
02-05 12:34:37.499 27391 27391 V FileDisplayActivity: onPause() end
02-05 12:34:37.511   455   685 I ActivityManager: Start proc 12077:android:ui/1000 for activity android/com.android.internal.app.ChooserActivity
02-05 12:34:37.651   455   467 W IntentResolver: resolveIntent: multiple matches, only some with CATEGORY_DEFAULT
02-05 12:34:37.652   455   931 W IntentResolver: resolveIntent: multiple matches, only some with CATEGORY_DEFAULT
02-05 12:34:37.666   455   996 I ActivityManager: START u0 {act=android.intent.action.GET_CONTENT cat=[android.intent.category.OPENABLE] typ=*/* flg=0x3000000 cmp=com.android.documentsui/.DocumentsActivity (has extras)} from uid 10126 on display 0
02-05 12:34:37.701   455   469 I ActivityManager: Killing 12077:android:ui/1000 (adj 13): empty #2
02-05 12:34:37.722   455   465 I art     : Background sticky concurrent mark sweep GC freed 132037(7MB) AllocSpace objects, 11(364KB) LOS objects, 30% free, 18MB/26MB, paused 3.813ms total 120.922ms
02-05 12:34:37.795 11399 11399 D Documents: Found volume path: primary:/storage/emulated/0
02-05 12:34:37.812   455   996 W IntentResolver: resolveIntent: multiple matches, only some with CATEGORY_DEFAULT
02-05 12:34:37.815 11399 11412 W Documents: Failed to restore stack: java.io.FileNotFoundException: Failed to find matching root for Root{authority=com.android.externalstorage.documents, rootId=primary, title=Internal storage}
02-05 12:34:37.851 11399 11429 I OpenGLRenderer: Initialized EGL, version 1.4
02-05 12:34:37.852 11399 11429 I libdgv1.so: Just saved you by loading '/system/lib/egl/libGLESv2_tegra' instead of 'egl/libGLESv2_tegra'
02-05 12:34:37.969   455   474 I ActivityManager: Displayed com.android.documentsui/.DocumentsActivity: +277ms (total +469ms)
02-05 12:34:38.063 11399 11428 D Documents: Before filtering 5, after 5
02-05 12:34:38.067 11399 11428 D Documents: Before filtering 64, after 64
02-05 12:34:38.069 11399 11428 D Documents: Before filtering 21, after 21
02-05 12:34:38.069 11399 11428 D Documents: Found 3 of 3 recent queries done
02-05 12:34:38.323 27391 27391 V FileDisplayActivity: onSaveInstanceState() start
02-05 12:34:38.323 27391 27391 D FileDisplayActivity: onSaveInstanceState(Bundle) starting
02-05 12:34:38.323 27391 27391 D ExtendedListFragment: onSaveInstanceState()
02-05 12:34:38.323 27391 27391 V FileDisplayActivity: onSaveInstanceState() end
02-05 12:34:38.323 27391 27391 V FileDisplayActivity: onStop() start
02-05 12:34:38.324 27391 27391 D FileDisplayActivity: onStop() ending
02-05 12:34:38.324 27391 27391 V FileDisplayActivity: onStop() end
02-05 12:34:40.745   455   685 I ActivityManager: START u0 {act=android.intent.action.GET_CONTENT cat=[android.intent.category.OPENABLE] typ=*/* flg=0x1000000 cmp=com.termux/.filepicker.TermuxFilePickerActivity (has extras)} from uid 10031 on display 0
02-05 12:34:40.778   455  2933 I ActivityManager: Start proc 12091:com.termux/u0a250 for activity com.termux/.filepicker.TermuxFilePickerActivity
02-05 12:34:40.909 11399 11429 D OpenGLRenderer: endAllStagingAnimators on 0x48704d80 (ListView) with handle 0x42742380
02-05 12:34:40.964 12091 12104 D OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: false
02-05 12:34:41.018 12091 12104 I libdgv1.so: Loaded to help save your day
02-05 12:34:41.018 12091 12104 D libEGL  : loaded /system/lib/egl/libEGL_tegra.so
02-05 12:34:41.052 12091 12104 D libEGL  : loaded /system/lib/egl/libGLESv1_CM_tegra.so
02-05 12:34:41.059 12091 12104 I libdgv1.so: Just saved you by loading '/system/lib/egl/libGLESv2_tegra' instead of 'egl/libGLESv2_tegra'
02-05 12:34:41.068 12091 12104 I libdgv1.so: Just saved you by loading '/system/lib/egl/libGLESv1_CM_tegra' instead of 'egl/libGLESv1_CM_tegra'
02-05 12:34:41.069 12091 12104 I libdgv1.so: Just saved you by loading '/system/lib/egl/libGLESv2_tegra' instead of 'egl/libGLESv2_tegra'
02-05 12:34:41.115 12091 12104 D libEGL  : loaded /system/lib/egl/libGLESv2_tegra.so
02-05 12:34:41.153 12091 12104 I OpenGLRenderer: Initialized EGL, version 1.4
02-05 12:34:41.212   455   474 I ActivityManager: Displayed com.termux/.filepicker.TermuxFilePickerActivity: +453ms
02-05 12:34:42.350   455   469 I ActivityManager: Start proc 12108:ca.rmen.android.frenchcalendar/u0a110 for broadcast ca.rmen.android.frenchcalendar/.FrenchCalendarAppWidgetNarrow
02-05 12:34:42.400 12108 12108 W System  : ClassLoader referenced unknown path: /data/app/ca.rmen.android.frenchcalendar-1/lib/arm
02-05 12:34:42.477   455   467 I ActivityManager: Start proc 12122:com.manor.currentwidget/u0a106 for broadcast com.manor.currentwidget/.library.CurrentWidget
02-05 12:34:42.478   455   467 I ActivityManager: Killing 12108:ca.rmen.android.frenchcalendar/u0a110 (adj 15): empty #2
02-05 12:34:42.584 12122 12122 W System  : ClassLoader referenced unknown path: /data/app/com.manor.currentwidget-1/lib/arm
02-05 12:34:42.670   455   931 I ActivityManager: Killing 12122:com.manor.currentwidget/u0a106 (adj 15): empty #2
02-05 12:34:45.846   455 31421 D NetlinkSocketObserver: NeighborEvent{elapsedMs=147660897, 192.168.1.254, [5CF4ABF225AD], RTM_NEWNEIGH, NUD_STALE}
02-05 12:34:47.775 11399 11399 D Documents: onActivityResult() code=-1
02-05 12:34:47.819 27391 27391 V FileActivity: onRestart() start
02-05 12:34:47.820 27391 27391 V FileActivity: onRestart() end
02-05 12:34:47.821 27391 27391 V FileDisplayActivity: onStart() start
02-05 12:34:47.821 27391 27391 D FileDisplayActivity: onStart() starting
02-05 12:34:47.832 27391 27391 D FileDisplayActivity: Initializing Fragments in onAccountChanged..
02-05 12:34:47.854 27391 27391 V FileDisplayActivity: onStart() end
02-05 12:34:47.854 27391 27391 V FileDisplayActivity: onResume() start
02-05 12:34:47.854 27391 27391 D FileDisplayActivity: onResume() starting
02-05 12:34:47.878 27391 27391 V FileDisplayActivity: onResume() end
02-05 12:34:47.881 27391 27391 D FileUploader: Starting command with id 4
02-05 12:34:47.884 27391 10788 D FileUploader: Account [email protected] exists
02-05 12:34:47.891 27391 10788 D SimpleFactoryManager: getClientFor(OwnCloudAccount ... : 
02-05 12:34:47.891 27391 10788 D OwnCloudClient #36: Creating OwnCloudClient
02-05 12:34:47.891 27391 10788 V SimpleFactoryManager:     new client {[email protected], 136779177}
02-05 12:34:47.901 27391 10788 D OwnCloudClient #36: REQUEST HEAD /remote.php/webdav/
02-05 12:34:48.000 12091 12104 D OpenGLRenderer: endAllStagingAnimators on 0x427bf200 (ListView) with handle 0x5bf2e170
02-05 12:34:48.000 11399 11399 I art     : Starting a blocking GC Explicit
02-05 12:34:48.028 11399 11399 I art     : Explicit concurrent mark sweep GC freed 1723(149KB) AllocSpace objects, 0(0B) LOS objects, 25% free, 4MB/6MB, paused 534us total 25.075ms
02-05 12:34:48.032 11399 11399 I art     : Starting a blocking GC Explicit
02-05 12:34:48.050 11399 11399 I art     : Explicit concurrent mark sweep GC freed 1327(122KB) AllocSpace objects, 5(100KB) LOS objects, 24% free, 4MB/6MB, paused 416us total 17.603ms
02-05 12:34:48.050 11399 11399 I art     : Starting a blocking GC Explicit
02-05 12:34:48.058 27391 12146 D SimpleFactoryManager: getClientFor(OwnCloudAccount ... : 
02-05 12:34:48.059 27391 12146 D OwnCloudClient #37: Creating OwnCloudClient
02-05 12:34:48.059 27391 12146 V SimpleFactoryManager:     new client {[email protected], 183756590}
02-05 12:34:48.066 27391 12146 D OwnCloudClient #37: REQUEST GET /status.php
02-05 12:34:48.067 27391 12146 D AdvancedSslSocketFactory: Creating SSL Socket with remote my.ownstorage.com:443, local null:0, params: org.apache.commons.httpclient.params.HttpConnectionParams@ee36b0
02-05 12:34:48.067 27391 12146 D AdvancedSslSocketFactory:  ... with connection timeout 60000 and socket timeout 60000
02-05 12:34:48.084 11399 11399 I art     : Explicit concurrent mark sweep GC freed 3(96B) AllocSpace objects, 0(0B) LOS objects, 24% free, 4MB/6MB, paused 1.148ms total 33.807ms
02-05 12:34:48.134 27391 12146 I ServerNameIndicator: SSLSocket implementation: com.android.org.conscrypt.OpenSSLSocketImpl
02-05 12:34:48.134 27391 12146 I ServerNameIndicator: SNI done, hostname: my.ownstorage.com
02-05 12:34:48.224   455   469 I ActivityManager: Killing 12091:com.termux/u0a250 (adj 13): empty #2
02-05 12:34:48.232   455  2934 I WindowState: WIN DEATH: Window{d44b964 u0 com.termux/com.termux.filepicker.TermuxFilePickerActivity}
02-05 12:34:48.232   455  2933 D GraphicsStats: Buffer count: 11
02-05 12:34:48.295 27391 10788 D ExistenceCheckRemoteOperation: Existence check for https://my.ownstorage.com/remote.php/webdav/ targeting for  existence finished with HTTP status 200
02-05 12:34:48.303 27391 10788 D OwnCloudClient #36: REQUEST HEAD /remote.php/webdav/trinity
02-05 12:34:48.316 27391 12146 W HttpMethodBase: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
02-05 12:34:48.327 27391 12146 D UpdateOCVersionOperation: Got new OC version 8.2.2.2
02-05 12:34:48.327 27391 12146 I UpdateOCVersionOperation: Check for update of ownCloud server version at https://my.ownstorage.com/remote.php/webdav: Operation finished with HTTP status code -1 (success)
02-05 12:34:48.328 27391 12146 D SimpleFactoryManager: getClientFor(OwnCloudAccount ... : 
02-05 12:34:48.328 27391 12146 D OwnCloudClient #38: Creating OwnCloudClient
02-05 12:34:48.328 27391 12146 V SimpleFactoryManager:     new client {[email protected], 98411215}
02-05 12:34:48.330 27391 12146 D OwnCloudClient #38: REQUEST GET /ocs/v1.php/cloud/capabilities
02-05 12:34:48.660   455   468 W art     : Long monitor contention event with owner method=void com.android.server.am.ActivityStackSupervisor$ActivityStackSupervisorHandler.activityIdleInternal(com.android.server.am.ActivityRecord) from ActivityStackSupervisor.java:4016 waiters=0 for 437ms
02-05 12:34:48.661   455   470 W art     : Long monitor contention event with owner method=void com.android.server.am.ActivityStackSupervisor$ActivityStackSupervisorHandler.activityIdleInternal(com.android.server.am.ActivityRecord) from ActivityStackSupervisor.java:4016 waiters=1 for 436ms
02-05 12:34:48.661   455   474 W art     : Long monitor contention event with owner method=void com.android.server.am.ActivityStackSupervisor$ActivityStackSupervisorHandler.activityIdleInternal(com.android.server.am.ActivityRecord) from ActivityStackSupervisor.java:4016 waiters=2 for 435ms
02-05 12:34:48.663   455  2933 W art     : Long monitor contention event with owner method=void com.android.server.am.ActivityStackSupervisor$ActivityStackSupervisorHandler.activityIdleInternal(com.android.server.am.ActivityRecord) from ActivityStackSupervisor.java:4016 waiters=3 for 431ms
02-05 12:34:48.709 27391 10788 D ExistenceCheckRemoteOperation: Existence check for https://my.ownstorage.com/remote.php/webdav/trinity targeting for  existence finished with HTTP status 404(FAIL)
02-05 12:34:48.718   631   634 E sdcard  : *** NOTIFY FAILED *** 22
02-05 12:34:48.718   631   634 E sdcard  : *** NOTIFY FAILED *** 22
02-05 12:34:48.719 27391 10788 E UploadFileOperation: Upload of //data/data/com.termux/files/home/.shortcuts/trinity to /trinity: Operation finished with HTTP status code -1 (fail)
02-05 12:34:48.720 27391 10788 D FileUploader: NotifyUploadResult with resultCode: LOCAL_STORAGE_NOT_COPIED
02-05 12:34:48.727 27391 10788 D FileUploader: Stopping command after id 4
02-05 12:34:48.735 27391 12146 W HttpMethodBase: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
02-05 12:34:48.736 27391 12146 D GetRemoteCapabilitiesOperation: Successful response: {"ocs":{"meta":{"status":"ok","statuscode":100,"message":null},"data":{"version":{"major":8,"minor":2,"micro":2,"string":"8.2.2","edition":""},"capabilities":{"core":{"pollinterval":60},"files_sharing":{"api_enabled":true,"public":{"enabled":true,"password":{"enforced":false},"expire_date":{"enabled":false},"send_mail":true,"upload":true},"user":{"send_mail":true},"resharing":true,"federation":{"outgoing":true,"incoming":true}},"files":{"bigfilechunking":true,"undelete":true,"versioning":true}}}}}
02-05 12:34:48.737 27391 12146 D GetRemoteCapabilitiesOperation: *** Added version
02-05 12:34:48.737 27391 12146 D GetRemoteCapabilitiesOperation: *** Added core
02-05 12:34:48.737 27391 12146 D GetRemoteCapabilitiesOperation: *** Added files_sharing
02-05 12:34:48.737 27391 12146 D GetRemoteCapabilitiesOperation: *** Added files
02-05 12:34:48.737 27391 12146 D GetRemoteCapabilitiesOperation: *** Get Capabilities completed 
02-05 12:34:48.760 27391 12146 D RefreshFolderOperation: Checking changes in [email protected]/
02-05 12:34:48.762 27391 12146 D OwnCloudClient #37: REQUEST PROPFIND /remote.php/webdav/
02-05 12:34:49.110 27391 12146 I RefreshFolderOperation: Checked [email protected]/ : not changed
02-05 12:34:49.135 27391 12146 D RefreshFolderOperation: Send broadcast com.owncloud.android.operations.RefreshFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED
02-05 12:34:49.140 27391 27391 D FileDisplayActivity: Received broadcast com.owncloud.android.operations.RefreshFolderOperation.EVENT_SINGLE_FOLDER_CONTENTS_SYNCED
02-05 12:34:49.144 27391 12146 D OwnCloudClient #37: REQUEST GET /ocs/v1.php/apps/files_sharing/api/v1/shares
02-05 12:34:49.168 27391 27391 D FileDisplayActivity: Setting progress visibility to true
02-05 12:34:49.516 27391 12146 W HttpMethodBase: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
02-05 12:34:49.520 27391 12146 D GetRemoteSharesForFileOperation: Got 0 shares
02-05 12:34:49.553 27391 12146 D FileDataStorageManager: Sending 11 operations to FileContentProvider
02-05 12:34:49.554 27391 12146 D FileContentProvider: applying batch in provider com.owncloud.android.providers.FileContentProvider@c16462f (temporary: false)
02-05 12:34:49.567 27391 12146 D FileContentProvider: applied batch in provider com.owncloud.android.providers.FileContentProvider@c16462f
02-05 12:34:49.567 27391 12146 D RefreshFolderOperation: Send broadcast com.owncloud.android.operations.RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED
02-05 12:34:49.577 27391 27391 D FileDisplayActivity: Received broadcast com.owncloud.android.operations.RefreshFolderOperation.EVENT_SINGLE_FOLDER_SHARES_SYNCED
02-05 12:34:49.606 27391 27391 D FileDisplayActivity: Setting progress visibility to false
02-05 12:34:51.016   455 31421 D NetlinkSocketObserver: NeighborEvent{elapsedMs=147666067, 192.168.1.254, [5CF4ABF225AD], RTM_NEWNEIGH, NUD_REACHABLE}
02-05 12:34:59.446   455 31421 D NetlinkSocketObserver: NeighborEvent{elapsedMs=147674498, 192.168.1.254, [5CF4ABF225AD], RTM_NEWNEIGH, NUD_STALE}
02-05 12

Using a Nexus 7 2012 with an Android 6 custom ROM.

Won't run Android Runtime for Chrome

Following the official instructions and using ARC Welder with the latest apk, I got the following error:

capture image

Weirdly, running plugin.shell('logcat') in the JavaScript console, which is supposed to do the same thing as a logcat on Android, doesn't give me anything.

As a side note, running plugin.shell('getprop ro.build.version.sdk') outputs 21 which means that ARC is emulating Android 5.0. Also, the ARC team considers incompatibilities due to difference between ARC and Android to be bugs of ARC, so I think technically it is possible. Is there any interest?

PS. I came here because I wanted to debug this elvish bug and wondered if I could do that on my Chromebook :)

Cannot use mercurial

I keep on getting amazed by this app. I'm trying to use mercurial, I installed it by:

apt install python2 python2-dev gcc
pip2 install mercurial

It works! But then:

$ hg help
Traceback (most recent call last):
  File "/data/data/com.termux/files/usr/bin/hg", line 41, in <module>
    mercurial.util.setbinary(fp)
  File "/data/data/com.termux/files/usr/lib/python2.7/site-packages/mercurial/demandimport.py", line 130, in __getattribute__
    self._load()
  File "/data/data/com.termux/files/usr/lib/python2.7/site-packages/mercurial/demandimport.py", line 96, in _load
    mod = _hgextimport(_import, head, globals, locals, None, level)
  File "/data/data/com.termux/files/usr/lib/python2.7/site-packages/mercurial/demandimport.py", line 53, in _hgextimport
    return importfunc(name, globals, *args, **kwargs)
  File "/data/data/com.termux/files/usr/lib/python2.7/site-packages/mercurial/util.py", line 33, in <module>
    cachestat = platform.cachestat
  File "/data/data/com.termux/files/usr/lib/python2.7/site-packages/mercurial/demandimport.py", line 130, in __getattribute__
    self._load()
  File "/data/data/com.termux/files/usr/lib/python2.7/site-packages/mercurial/demandimport.py", line 96, in _load
    mod = _hgextimport(_import, head, globals, locals, None, level)
  File "/data/data/com.termux/files/usr/lib/python2.7/site-packages/mercurial/demandimport.py", line 53, in _hgextimport
    return importfunc(name, globals, *args, **kwargs)
  File "/data/data/com.termux/files/usr/lib/python2.7/site-packages/mercurial/posix.py", line 32, in <module>
    oslink = os.link
AttributeError: 'module' object has no attribute 'link'

I'm not sure if I did something wrong, if it is Termux bug, Mercurial's, or if the fix would be a Mercurial package. Any help please?

Termux app not working in Andy

Hi and Happy New Year. How can I get the Termux app to work in Andy? It says not compatible with my xps 13 running Win 10.

ranger doesn't launch

I installed several packages, all of them work fine except ranger crashes with the following message:

emacs and file segfault

I just installed emac, it crash at boot with Error 11: Segmentation faultSegmantation fault
Also, using file on a file gives:
"file: filetype
Segmetation fault"

both have been installed from the repo.
Thanks, Nicolò

Closing virtual keyboard with back button

Termux does not seem to allow you to close the virtual keyboard with the back button, even though the icon turns into a downwards-pointing triangle. This is annoying in apps that take control of the mouse such as htop.

SSH doesn't work on 64-bit Android

I'm trying to generate ssh keys but I'm getting this error.

CANNOT LINK EXECUTABLE DEPENDENCIES: "libcrypto.so" is 32-bit instead of 64-bit

Package request: mono

It would be fantastic if mono support was included in termux to at least run cli applications.

Install python lxml

Hi, I'd like to install lxml.
I installed python2, and pip2 works for many packages, but not for lxml (pyconfig.h not found)
Anybody had success installing it?
Thanks :)

Add support for mouse gestures.

In certain programs you can use mouse gestures to do various tasks, for example:

  • tmux lets you resize panes with click and drag.
  • weechat has swipe left and right gestures to switch buffer.

This works when connecting to termux via SSH from a computer with mouse but it does not work when using the termux app.
I realize that this would cause a conflict with the swipe to scroll feature, but maybe we can come up with a solution that can incorporate both these features.
Some ways I came up with:

  • Move the long press menu into the left side drawer and have long press function as a click and drag.
  • Have a switch (or one time function like select) in the long press menu to switch between click and drag and scroll. In the two programs I came across with mouse dragging it is not something you have to do all the time, so having an additional step between might not be that bad.

Maybe someone has a better idea?

Which version(s) of Apache license?

Hi.

In README.md, it is written that "Contains code from Terminal Emulator for Android which is released under the Apache License". But is it under version 1.0, version 2.0, version 1.0 and 2.0, version 1.0 or at your option any later, version 2.0 or at your option any later?

Regards.

Support armeabi and mips

Any reason why native code for these architectures isn't compiled? As far as I can tell, it would be as simple as adding those to Application.mk. Unless you intentionally left them out for a reason.

Add swipe gestures to switch between open terminals

Hi,

I often have multiple terminal open, and switching between them is cumbersome: edge swipe for menu, select other terminal, I have not found a key shortcut for it either.

Since swiping up/down scrolls the buffer, swiping left/right coud easily switch between the open terminals.

This featuree request relates to or can interact with mouse event generation of #35

Possibility of Termux bundle

I have a device that doesn't have any user facing Internet connection (Android Wear smartwatch)

I was wondering is there a way to transfer a pre-setup environment along with the application on install or maybe placing the environment in the right place after install? It's unable to download the initial environment due to no Internet access directly on the watch. (Termux actually launches and tries but just continues to spin on the setup screen)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.