Releases: termux/termux-app
v0.119.0-beta.3
v0.119.0-beta.3 - 2025-05-22 10:48
Commit history: v0.119.0-beta.2...v0.119.0-beta.3
Downloads
Android 7+ only
termux-app_v0.119.0-beta.3+apt-android-7-github-debug_universal.apktermux-app_v0.119.0-beta.3+apt-android-7-github-debug_arm64-v8a.apktermux-app_v0.119.0-beta.3+apt-android-7-github-debug_armeabi-v7a.apktermux-app_v0.119.0-beta.3+apt-android-7-github-debug_x86_64.apktermux-app_v0.119.0-beta.3+apt-android-7-github-debug_x86.apk
Android 5 and 6 only
termux-app_v0.119.0-beta.3+apt-android-5-github-debug_universal.apktermux-app_v0.119.0-beta.3+apt-android-5-github-debug_arm64-v8a.apktermux-app_v0.119.0-beta.3+apt-android-5-github-debug_armeabi-v7a.apktermux-app_v0.119.0-beta.3+apt-android-5-github-debug_x86_64.apktermux-app_v0.119.0-beta.3+apt-android-5-github-debug_x86.apk
NOTICE: Use apt-android-7 variant for Android >= 7 and apt-android-5 variant for Android 5/6 and do not mix. Use universal variant if device/Android architecture is unknown. Basically, use termux-app_v0.119.0-beta.3+apt-android-7-github-debug_universal.apk variant for Android >= 7 if in doubt. Check install and GitHub install source docs for more info.
v0.118.3
v0.118.3 - 2025-05-22 10:47
Commit history: v0.118.2...v0.118.3
Changelog
Changed
- ! Remove
TERMUX_APP__BUILD_DATA_DIRas a different naming scheme will be used for build variables and renameTERMUX__ROOTFStoTERMUX__ROOTFS_DIR. (849e6b10)
Fixed
-
Bump
org.lsposed.hiddenapibypass:hiddenapibypassto6.1to fix crash on Android 16 QPR1. Related commit LSPosed/AndroidHiddenApiBypass@9efadf06. Related commit https://android-review.googlesource.com/c/platform/libcore/+/3380841. Related commit https://cs.android.com/android/_/android/platform/libcore/+/0dc31afe. Closes #4556. (fda17afa) -
Declare
MANAGE_EXTERNAL_STORAGEas it being added in Termux:API version0.51.0is revoking the storage permission of Termux app after updates and sometimes later. Related issue #4486. (23756528) -
Add explicit
serialVersionUIDtoSerializableclasses likeReportInfoandTextIOInfo. ReadingReportInfowithBundle.getSerializable()byReportActivityis triggering exception when default algorithm is used forserialVersionUIDin Termux:API plugin app when error notification created inResultReturner.returnData()byTermuxPluginUtils.sendPluginCommandErrorNotification()is clicked. Related issue termux/termux-api#762. (4f033b34)
v0.119.0-beta.2
v0.119.0-beta.2 - 2025-03-29 07:05
Commit history: v0.119.0-beta.1...v0.119.0-beta.2
Downloads
Android 7+ only
termux-app_v0.119.0-beta.2+apt-android-7-github-debug_universal.apktermux-app_v0.119.0-beta.2+apt-android-7-github-debug_arm64-v8a.apktermux-app_v0.119.0-beta.2+apt-android-7-github-debug_armeabi-v7a.apktermux-app_v0.119.0-beta.2+apt-android-7-github-debug_x86_64.apktermux-app_v0.119.0-beta.2+apt-android-7-github-debug_x86.apk
Android 5 and 6 only
termux-app_v0.119.0-beta.2+apt-android-5-github-debug_universal.apktermux-app_v0.119.0-beta.2+apt-android-5-github-debug_arm64-v8a.apktermux-app_v0.119.0-beta.2+apt-android-5-github-debug_armeabi-v7a.apktermux-app_v0.119.0-beta.2+apt-android-5-github-debug_x86_64.apktermux-app_v0.119.0-beta.2+apt-android-5-github-debug_x86.apk
NOTICE: Use apt-android-7 variant for Android >= 7 and apt-android-5 variant for Android 5/6 and do not mix. Use universal variant if device/Android architecture is unknown. Basically, use termux-app_v0.119.0-beta.2+apt-android-7-github-debug_universal.apk variant for Android >= 7 if in doubt. Check install and GitHub install source docs for more info.
v0.118.2
v0.118.2 - 2025-03-29 07:00
Commit history: v0.118.1...v0.118.2
Changelog
Added
-
Add package
SE_PROCESS_CONTEXT,SE_FILE_CONTEXTandSE_INFOwhen generating app info markdown string. (999f10d7) -
Add info to device info for supported ABIs for armv8l and 64-bit-only aarch64 devices and
PAGE_SIZEfor16KBpage size devices. (3aa986cf) -
Export additional primary
TERMUX_*scoped shell environment variables, i.eTERMUX__ROOTFS,TERMUX__HOME,TERMUX__PREFIX,TERMUX_APP__DATA_DIR,TERMUX_APP__LEGACY_DATA_DIR,TERMUX_APP__BUILD_DATA_DIR,TERMUX__SE_PROCESS_CONTEXT,TERMUX_APP__SE_FILE_CONTEXT,TERMUX_APP__SE_INFOandANDROID__BUILD_VERSION_SDK. This is also required forlibtermux-exec-*-ld-preload.so$LD_PRELOADlibrary as well fortermux-execversion>= 2.0.0. (b7d2a4b6,8440a728) -
Basic MIME type recognition in ContentProvider. (
c5f000a1) -
Terminal CSI reporting of window and cell pixel size. (
254e885f) -
Fill
.ws_xpixeland.ws_ypixelinwinsize. (bb7fa88f) -
Do not show AutoFill UI on Termux start and add support for usernames. Closes #3909. (
043923e6) -
Add support for
Share selected textof terminal in long holdMOREmenu so that users don't have to copy and paste to move text between apps. (2d38a1ca)
Changed
-
Bump
apt-android-7bootstraps to2025.03.28-r1. (a8f8be18) -
Add
PGUPandPGDNextra keys to repetitive keys so that long holding them triggers page scrolling instead of having to repeatedly press the key to change pages. (fa710c47) -
Make Shift-PgUp and Shift-PgDn scroll by pages rather than lines. (
915e053a)
Fixed
-
Generate debug report before deleting broken prefix directory after bootstrap second stage failure to get
statinfo at time of failure. (7f632cf4) -
Fully consume unknown CSI sequences containing unsupported parameter and intermediate bytes. Closes #4338. Co-authored-by: @krobelus and @agnostic-apollo. (
3f237502) -
Implement colon separated CSI parameters. (
0415681d) -
Make ScrollDown escape respect margins. Closes #2576. (
4baf12ba) -
Use Canvas.drawTextRun instead of drawText. drawText does (very) basic BiDi, which causes inconsistent behaviour. This ensures everything is LtR. (
c1544076) -
Mark view as important for AutoFill before requesting an AutoFill. Co-authored-by: @AChep and @agnostic-apollo. (
ee9b31a0) -
Parse (but ignore for now) terminal APC sequences. (
f35063da) -
Fix
SHIFT+PAGE_UPandSHIFT+PAGE_DOWNbehaviour to scroll1line of scrollback history instead of scrolling command history or changing pages. Closes #867. (791bf5f8) -
Improve handling of empty ';' SGR sequences. (
5b5e7194)
v0.119.0-beta.1
v0.119.0-beta.1 - 2024-06-18 00.11
Commit history: v0.118.0...v0.119.0-beta.1
Downloads
Android 7+ only
termux-app_v0.119.0-beta.1+apt-android-7-github-debug_universal.apktermux-app_v0.119.0-beta.1+apt-android-7-github-debug_arm64-v8a.apktermux-app_v0.119.0-beta.1+apt-android-7-github-debug_armeabi-v7a.apktermux-app_v0.119.0-beta.1+apt-android-7-github-debug_x86_64.apktermux-app_v0.119.0-beta.1+apt-android-7-github-debug_x86.apk
Android 5 and 6 only
termux-app_v0.119.0-beta.1+apt-android-5-github-debug_universal.apktermux-app_v0.119.0-beta.1+apt-android-5-github-debug_arm64-v8a.apktermux-app_v0.119.0-beta.1+apt-android-5-github-debug_armeabi-v7a.apktermux-app_v0.119.0-beta.1+apt-android-5-github-debug_x86_64.apktermux-app_v0.119.0-beta.1+apt-android-5-github-debug_x86.apk
NOTICE: Use apt-android-7 variant for Android >= 7 and apt-android-5 variant for Android 5/6 and do not mix. Use universal variant if device/Android architecture is unknown. Basically, use termux-app_v0.119.0-beta.1+apt-android-7-github-debug_universal.apk variant for Android >= 7 if in doubt. Check install and GitHub install source docs for more info.
v0.118.1
v0.118.1 - 2024-06-18 00.05
Commit history: v0.118.0...v0.118.1
Changelog
Added
-
Add support for Termux bootstrap second stage by running
termux-bootstrap-second-stage.sh. (2c82a558) -
Request
SET_ALARMpermission to allow broadcasting an intent to set an alarm or timer in an alarm clock app. Closes #3990. (9735ae28)
Changed
-
Update support and donate users to
termux.devdomain. (2a008d83) -
Use black or white cursor color based on terminal background instead of always white if
colors.propertiesdidn't have cursor color set. Credit for algorithm link belong to @Jamie-Landeg-Jones. Closes #2653. (160ab68e) -
Update
WcWidth.javato Unicode15.0.0. (63833d9c,fc8245bb,6ece249c)
Fixed
-
Limit max combining characters in TerminalRow to
15characters to prevent buffer overflows. Closes #3839. (0813e463) -
Fix shared terminal transcript joining back lines. (
c9e2a75e) -
Ensure CSI parameter value is not greater than
9999as pervt510. (9433f107) -
Fix CSI parameters parsing like for SGR sequences that start with a
;or have sequential;characters. Credits for finding the issue belongs to @Screwtapello. Closes #2272, Closes mawww/kakoune#4339. (fbf55fd4) -
Fix message dialog button text not showing in day mode due to white text. (
903f2496) -
Fix wrong input type selected if toolbar is switched back to extra keys after tapping terminal if in text input mode. Closes #2503. (
2dc7381b) -
Change extra keys and terminal input view background to black. Required for day/night theming and should fix issues where both views were translucent with light terminal color themes. (
e55639e4) -
Fix issue where a colour tint/highlight would be added to the terminal on activity re-creation. (
087da0b5) -
Fix termux app restarting on samsung dex version
< 3.0when switching modes. (d7f22982) -
Fix
ArrayIndexOutOfBoundsExceptionwhen setting zero width terminal character. (f222315b) -
Log exception instead of crashing app on
NumberFormatExceptionfor invalid termcap/terminfo string requested. (e11bcfc9) -
Fix
CSIDeletePsColumn(s) (DECDC). (af5fef4c) -
Fix
ArrayIndexOutOfBoundsExceptionthrown because length was less than 0 when selecting text from terminal buffer. (03e31d19) -
Fix issue where menu wouldn't show when text on bottom row of terminal was selected. Closes #2233. (
d24a04a1)
v0.118.0
[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=trueentry totermux.propertiesfile to enable opening of URL links in terminal transcript when clicked or tapped. The default value isfalse. Runningtermux-reload-settingscommand 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=falseentry totermux.propertiesfile to disable auto capitalization of extra keys text for both normal and popup buttons. The default value istrue. Runningtermux-reload-settingscommand will also update the behaviour instantaneously if changed. (5c72c3ca) -
Allow users to adjust terminal horizontal and vertical margin. The
terminal-margin-horizontalkey can be used to adjust the terminal left/right margin and theterminal-margin-verticalcan be used to adjust the terminal top/bottom margin. This will also affect drawer. The user can set an integer value between0and100asdpunits. The default value is still3for horizontal and0for vertical margin. So adding an entry liketerminal-margin-horizontal=10totermux.propertiesfile will allow users to set a horizontal margin of10dp. After updating the value, either restart termux or runtermux-reload-settingsfor 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
10dpmay be helpful with peek-and-slide for people having gesture navigation enabled on android10+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=trueentry totermux.propertiesfile to disable hardware keyboard shortcuts. The default value isfalse. Runningtermux-reload-settingscommand will also update the behaviour instantaneously if changed. Note that forctrl+alt+pto work, you need to unsetshortcut.rename-session = ctrl + n. https://wiki.termux.com/wiki/Terminal_Settings. Closes #1825. (829cc398,fcc0d362) -
Request
android.permission.PACKAGE_USAGE_STATSpermission. The permission can be granted fromAndroid Settings->System->Usage Access. Closes #2269. (865f29d4) -
Add
TERMUX_API_VERSIONto termux shell environment. This can be used to check ifTermux:APIis installed and enabled for cases where users try to runtermux-apicommands and it hangs. (0cf3cef7) -
Add
TERMUX_IS_DEBUGGABLE_BUILD,TERMUX_APK_RELEASEandTERMUX_APP_PIDto termux shell environment.The
TERMUX_IS_DEBUGGABLE_BUILDenv variable will be set to1if termux APK is a debuggable APK and0otherwise. Note that thedev_keystore.jksshipped 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 be0.The
TERMUX_APK_RELEASEwill be set toGITHUB,F_DROIDorGOOGLE_PLAY_STOREdepending on release type. It will be set toUNKNOWNif signed with a custom key.The
TERMUX_APP_PIDwill 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 fortermux-float. This variable is included sincepidof com.termuxdoes 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 withps, like that of threads, even with the pid and will need to use adb/root. However,kill $TERMUX_APP_PIDwill work fromtermux-appandtermux-float.These variables can be used by termux devs and users for custom logic in future depending on release type.
-
Add support for
~/.termux/termux.float.properties. (bc779d2f) -
! Convert
extra-keysto agnosticism by moving them totermux-sharedlibrary 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
SHIFTorSHFTextra-keys. Closes #1038. (2a74d43c,91172409) -
Add support for
PASTEextra-keysfor pasting text from clipboard. (7d76e8b1) -
Add support to long hold on
CTRL,ALT,SHIFTandFNto 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_levelandcom.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-apilog level settings in termux app settings. (582e5693) -
Add
termux-floatlog level settings in termux app settings. (d55c1001) -
Add
termux-widgetlog level settings in termux app settings. (4953b126) -
Add
isTermuxAppInstalled()andisTermuxAppAccessible()functions toTermuxUtils. TheTermuxUtils.isTermuxAppInstalled()function can be used by external apps to check if termux app is installed and enabled. TheTermuxUtils.isTermuxAppAccessible()function can be used by termux plugin apps to check if termux app is installed, enabled, accessible as persharedUserIdandTERMUX_PREFIX_DIR_PATHis accessible and has read, write and execute permission. (e5c05489) -
Bootstrap error and report issue (optionally) will contain primary termux files
statinfo andlogcatdumpUsers have been reporting issues with bootstrap installation (and
loginfile 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.termuxdoes 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
lscommand will generatestatinfo for all the major termux directories and files so that existence or ownership issues can be shown. It will also runlogcatcommand to take a dump (last3000lines) in case other failures are being logged, like selinux denials as peravcentries. 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
statinfo andlogcatdump manually too with terminal's long hold options menuMore->Report Issueoption and selectingYESin the prompt shown to add debug info. This can be helpful for reporting and debugging other issues. If the report generated is too large, thenSave To Fileoption in context menu (3 dots on top right) ofReportActivitycan be used and the file viewed/shar...
v0.117 (F-Droid only)
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 namedtermux-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~180MBinstead of~120MBif 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. (dccd155, b90d594) -
Add app and device info too for crash notification shown when bootstrap installation or setup storage fails. (56c3826)
-
Trigger termux library builds on jitpack on releases. (d49fd6b)
Changed
- Allow users to disable terminal margin adjustment from termux settings. Previously in
v0.115(3213502) support was added withdisable-terminal-margin-adjustmenttermux.propertiesproperty to disable terminal margin adjustment in case in causes screen flickering or other issues on some devices. It has now been removed in (7aefd94) and moved to Termux Settings since if it causes issues at startup and users can't accesstermux.propertiesfile from the terminal, they will have to useSAFor root to access it, which will require an external app. Users can set the value from theTermux Settings->Termux->Terminal View->Terminal Margin Adjustmenttoggle. TheTermux Settingscan be accessed from left drawer in termux and from the android launcher shortcut for TermuxSettings, usually accessible by long holding on Termux icon. (e0ad9ff)
Fixed
-
Fix
java.lang.AbstractMethodError: androidx.window.sidecar.SidecarInterface$SidecarCallback.onDeviceStateChanged. The crash was reported forMicrosoft Surface Duo, which would affect some Samsung and other devices as well, mainly dual screens/foldables. It was caused byandroidx:windowlibrary that has been used bytermux-sharedsincev0.115having 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 inv0.115andv0.116should setdisable-terminal-margin-adjustment=trueintermux.propertiescreated 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.propertiesfile withSAF. The property will not work inv0.117as mentioned inChangedsection above. (4361c5e) -
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. (c6b4114)
-
Fix issue where
RUN_COMMANDintent was failing forcoreutils/busyboxapplets. (cce6dfe) -
Attempt to fix bootstrap installation failure that may be caused by invalid
mkdirsreturn value. (dc8bdfe)
Github Build APK. Check Installation for more info on Github Build APKs.
v0.116 (F-Droid only)
0.116 - 2021-07-01
Changelog
Fixed
-
Jitpack library publishing failed for initial
v0.115release so 886e52d was done to fix it andv0.115was re-released but jitpack kept building pre-fix initial release as per commitDateinbuild.log, likely due to one time download. So releasingv0.116so that it gets picked up. Users can import library based on entries like the following. The one mentioned in b7b12eb 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.
v0.115 (F-Droid only)
[0.115] - 2021-07-01
Changelog
Added
-
Add support to send back or store
RUN_COMMANDintent command results in files and provide way to fix argument splitting sent withamcommand 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 internalerrmsgsas long as result files extras are valid. This can be used to run synchronous commands from inside termux, with other apps that haveRun commands in Termux environment(com.termux.permission.RUN_COMMAND) like Tasker, from pc overadbor insideadb shellif you have a rooted device, or from pc if you have setup termuxsshd. TheRUN_COMMANDintent can only be sent by thetermuxuser itself, by an app that has the permission or by therootuser. Theshelluser ofadbcannot send it. A script will be provided at a later time that will automatically detect these cases to easily runRUN_COMMANDintent 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 fortermux-bootandtermux-widgetas 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. (2aafcf8) -
Add termux settings button to left drawer too since apparently people can't find the one in context menu. (59877a0)
-
Allow users to disable terminal margin adjustment. The user can add
disable-terminal-margin-adjustment=trueentry totermux.propertiesfile 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 isfalse. So adding the entrydisable-terminal-margin-adjustment=truetotermux.propertiesfile will disable margin adjustment. Exit termux and restart for changes to take affect after updating value. In case e5a9b99 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. (e408fdc)
-
Updated
bootstrapto2021.06.30-r1. (5670128)
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-Droidpolicy so termux plugin apps can't import termux libraries as dependencies so hence we move toJitpack. Usage details for importing termux libraries in your own app as dependencies are in the commit message. (b7b12eb, 69e5dee, 886e52d) -
Change license for non-termux utils from
GPLv3toMITso 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,TermuxConstantsandTermuxPropertyConstantsshould beMITlicensed as well so that other non-FOSS or non-GPLv3 apps can use them, like forRUN_COMMANDintent. Any code not listed in exceptions ofLICENSE.mdfiles is still underGPLv3, 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 theLICENSE.mdfiles and see if they are okay with contributing code asMITand if they are not, then they should create separate file/package intermux-shared. Checktermux-app/LICENSE.mdandtermux-app/termux-shared/LICENSE.mdfor exceptions. (70e1acc, 4926516) -
Implement
Errnosystem. This commit adds onto 679e0de. NowErrorclass has been implemented which will used to return errors, including suppressed throwables. Requirement forContextobject has been removed fromFileUtilsso that they can be called from anywhere in code instead of having to pass aroundContextobjects. Previously,string.xmlwas 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. (4494bc6) -
The
ExecutionCommandhas been updated and command result variables have been moved toResultDataand result configuration toResultConfigsince 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. TheResultDatainstead of aStringerrmsgnow stores a list ofErrorobjects. 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, theResultSenderreturns an additional error because result configuration like result directory or result output format was invalid. In these situationsPluginUtilswill show a notification to the user with info of each error thrown. In addition to above, inResultData, thestdoutandstderrare converted toStringBuilderinstead of aStringso that data can appended to each from various places in code. This commit also adds onto 679e0de and 4494bc6. (2aafcf8) -
Move
ReportActivitytotermux-sharedso that other termux plugins can use it too. (7f36d7b) -
Move storage permission logic to
PermissionUtilsand add disable battery optimizations code. Option to disable battery optimizations will be added in termux settings later. (80b495e) -
Make
TermuxTaskandTermuxSessionagnostic 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. (53c1a49) -
Move termux related file utils from
FileUtilstoTermuxFileUtils. (4494bc6) -
Move Termux app specific logic out of
PermissionUtils. (12f910c) -
Move Android specific utils from
TermuxUtilstoAndroidUtils. (6bca378) -
Divide
DialogUtils. (553913c) -
Move Termux app specific logic out of
NotificationUtils. (1c7f916) -
Move Termux app specific logic out of
CrashHandler. (23a900c)
Fixed
-
Fix issues with
TermuxActivityRootViewmargin adjustment. Margin adjustment was causing screen flickering due to invalid values being calculated in landscape and split screen mode. Attempts to fix issue #2127. (e5a9b99) -
Redo fix for execution commands exceptions not being logged or sent back to plugin. The f62febb 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 toTermuxTaskafter 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 withtermux-widget,termux-bootorRUN_COMMANDintent. This should make it easier for users to debug problems, since otherwiselogcatneeds to be looked. Butlogcatwould 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 thePlugin Error Notificationstoggle. (5f2ccca) -
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. (f77c886)
-
Fix issue where cursor blinker wouldn't automatically start after session change. (d3c34ad)
-
Fix issue where cursor blinker wouldn't automatically start after terminal reset if it was disabled before reset. (00f805f)
-
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 obj...