├── LICENSE.md ├── README.md ├── app ├── build.gradle ├── proguard-rules.pro └── src │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── termux │ │ │ ├── app │ │ │ ├── BackgroundJob.java │ │ │ ├── DialogUtils.java │ │ │ ├── ExtraKeysView.java │ │ │ ├── TermuxActivity.java │ │ │ ├── TermuxHelpActivity.java │ │ │ ├── TermuxInstaller.java │ │ │ ├── TermuxOpenReceiver.java │ │ │ ├── TermuxPreferences.java │ │ │ ├── TermuxService.java │ │ │ └── TermuxViewClient.java │ │ │ └── filepicker │ │ │ ├── TermuxDocumentsProvider.java │ │ │ └── TermuxFileReceiverActivity.java │ └── res │ │ ├── drawable │ │ ├── banner.png │ │ ├── current_session.xml │ │ ├── ic_new_session.xml │ │ ├── ic_service_notification.xml │ │ ├── selected_session_background.xml │ │ ├── session_ripple.xml │ │ └── terminal_scroll_shape.xml │ │ ├── layout │ │ ├── drawer_layout.xml │ │ ├── extra_keys_main.xml │ │ ├── extra_keys_right.xml │ │ └── line_in_drawer.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── raw │ │ └── bell.ogg │ │ ├── values │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ ├── backupscheme.xml │ │ └── shortcuts.xml │ └── test │ └── java │ └── com │ └── termux │ └── app │ └── TermuxActivityTest.java ├── art ├── copy-to-other-apps.sh ├── feature-graphic.svg ├── generate-feature-graphic.sh ├── generate-launcher-images.sh ├── generate-tv-banner.sh ├── ic_launcher.svg ├── ic_launcher_round.svg └── tv-banner.svg ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── libs ├── animal-sniffer-annotations-1.14.jar ├── animal-sniffer-annotations-1.14.pom ├── animal-sniffer-parent-1.14.pom ├── annotations-12.0.jar ├── annotations-12.0.pom ├── annotations-13.0.jar ├── annotations-13.0.pom ├── annotations-24.5.0.pom ├── annotations-26.0.1.jar ├── annotations-26.0.1.pom ├── antlr4-4.5.3.jar ├── antlr4-4.5.3.pom ├── antlr4-master-4.5.3.pom ├── apache-13.pom ├── apache-16.pom ├── apache-4.pom ├── apache-9.pom ├── apksig-3.0.1.jar ├── apksig-3.0.1.pom ├── asm-5.1.jar ├── asm-5.1.pom ├── asm-analysis-5.1.jar ├── asm-analysis-5.1.pom ├── asm-commons-5.1.jar ├── asm-commons-5.1.pom ├── asm-parent-5.1.pom ├── asm-tree-5.1.jar ├── asm-tree-5.1.pom ├── asm-util-5.1.jar ├── asm-util-5.1.pom ├── baseLibrary-3.0.1.jar ├── baseLibrary-3.0.1.pom ├── bcpkix-jdk15on-1.56.jar ├── bcpkix-jdk15on-1.56.pom ├── bcprov-jdk15on-1.56.jar ├── bcprov-jdk15on-1.56.pom ├── builder-3.0.1.jar ├── builder-3.0.1.pom ├── builder-model-3.0.1.jar ├── builder-model-3.0.1.pom ├── builder-test-api-3.0.1.jar ├── builder-test-api-3.0.1.pom ├── codehaus-parent-4.pom ├── common-26.0.1.jar ├── common-26.0.1.pom ├── commons-codec-1.6.jar ├── commons-codec-1.6.pom ├── commons-compress-1.12.jar ├── commons-compress-1.12.pom ├── commons-io-2.4.jar ├── commons-io-2.4.pom ├── commons-logging-1.1.1.jar ├── commons-logging-1.1.1.pom ├── commons-parent-22.pom ├── commons-parent-25.pom ├── commons-parent-39.pom ├── commons-parent-5.pom ├── compilerCommon-3.0.1.jar ├── compilerCommon-3.0.1.pom ├── ddmlib-26.0.1.jar ├── ddmlib-26.0.1.pom ├── dvlib-26.0.1.jar ├── dvlib-26.0.1.pom ├── ecj-4.6.1.jar ├── ecj-4.6.1.pom ├── error_prone_annotations-2.0.18.jar ├── error_prone_annotations-2.0.18.pom ├── error_prone_parent-2.0.18.pom ├── fastutil-7.2.0.jar ├── fastutil-7.2.0.pom ├── google-1.pom ├── gradle-3.0.1.jar ├── gradle-3.0.1.pom ├── gradle-api-3.0.1.jar ├── gradle-api-3.0.1.pom ├── gradle-core-3.0.1.jar ├── gradle-core-3.0.1.pom ├── gson-2.3.jar ├── gson-2.3.pom ├── guava-22.0.jar ├── guava-22.0.pom ├── guava-parent-22.0.pom ├── httpclient-4.2.6.jar ├── httpclient-4.2.6.pom ├── httpcomponents-client-4.1.pom ├── httpcomponents-client-4.2.6.pom ├── httpcomponents-core-4.2.5.pom ├── httpcore-4.2.5.jar ├── httpcore-4.2.5.pom ├── httpmime-4.1.jar ├── httpmime-4.1.pom ├── intellij-core-26.0.1.jar ├── intellij-core-26.0.1.pom ├── j2objc-annotations-1.1.jar ├── j2objc-annotations-1.1.pom ├── javawriter-2.5.0.jar ├── javawriter-2.5.0.pom ├── jimfs-1.1.jar ├── jimfs-1.1.pom ├── jimfs-parent-1.1.pom ├── jopt-simple-4.9.jar ├── jopt-simple-4.9.pom ├── json-simple-1.1.jar ├── json-simple-1.1.pom ├── jsr305-1.3.9.jar ├── jsr305-1.3.9.pom ├── juniversalchardet-1.0.3.jar ├── juniversalchardet-1.0.3.pom ├── kotlin-reflect-1.1.3-2.jar ├── kotlin-reflect-1.1.3-2.pom ├── kotlin-stdlib-1.1.3-2.jar ├── kotlin-stdlib-1.1.3-2.pom ├── kxml2-2.3.0.jar ├── kxml2-2.3.0.pom ├── layoutlib-api-26.0.1.jar ├── layoutlib-api-26.0.1.pom ├── lint-26.0.1.jar ├── lint-26.0.1.pom ├── lint-api-26.0.1.jar ├── lint-api-26.0.1.pom ├── lint-checks-26.0.1.jar ├── lint-checks-26.0.1.pom ├── lombok-ast-0.2.3.jar ├── lombok-ast-0.2.3.pom ├── manifest-merger-26.0.1.jar ├── manifest-merger-26.0.1.pom ├── mojo-parent-34.pom ├── org.jacoco.build-0.7.4.201502262128.pom ├── org.jacoco.core-0.7.4.201502262128.jar ├── org.jacoco.core-0.7.4.201502262128.pom ├── org.jacoco.report-0.7.4.201502262128.jar ├── org.jacoco.report-0.7.4.201502262128.pom ├── oss-parent-7.pom ├── oss-parent-9.pom ├── ow2-1.3.pom ├── proguard-base-5.3.3.jar ├── proguard-base-5.3.3.pom ├── proguard-gradle-5.3.3.jar ├── proguard-gradle-5.3.3.pom ├── proguard-parent-5.3.3.pom ├── project-4.1.1.pom ├── project-7.pom ├── protobuf-java-3.0.0.jar ├── protobuf-java-3.0.0.pom ├── protobuf-parent-3.0.0.pom ├── protos-26.0.1.jar ├── protos-26.0.1.pom ├── repository-26.0.1.jar ├── repository-26.0.1.pom ├── sdk-common-26.0.1.jar ├── sdk-common-26.0.1.pom ├── sdklib-26.0.1.jar ├── sdklib-26.0.1.pom ├── shared-26.0.1.jar ├── shared-26.0.1.pom ├── tracker-26.0.1.jar ├── tracker-26.0.1.pom ├── transform-api-2.0.0-deprecated-use-gradle-api.jar ├── transform-api-2.0.0-deprecated-use-gradle-api.pom ├── trove4j-20160824.jar ├── trove4j-20160824.pom ├── uast-26.0.1.jar └── uast-26.0.1.pom ├── scripts └── bintray-publish.gradle ├── settings.gradle ├── terminal-emulator ├── build.gradle ├── proguard-rules.pro └── src │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── termux │ │ │ └── terminal │ │ │ ├── ByteQueue.java │ │ │ ├── EmulatorDebug.java │ │ │ ├── JNI.java │ │ │ ├── KeyHandler.java │ │ │ ├── TerminalBuffer.java │ │ │ ├── TerminalColorScheme.java │ │ │ ├── TerminalColors.java │ │ │ ├── TerminalEmulator.java │ │ │ ├── TerminalOutput.java │ │ │ ├── TerminalRow.java │ │ │ ├── TerminalSession.java │ │ │ ├── TextStyle.java │ │ │ └── WcWidth.java │ └── jni │ │ ├── Android.mk │ │ └── termux.c │ └── test │ └── java │ └── com │ └── termux │ └── terminal │ ├── ByteQueueTest.java │ ├── ControlSequenceIntroducerTest.java │ ├── CursorAndScreenTest.java │ ├── DecSetTest.java │ ├── DeviceControlStringTest.java │ ├── HistoryTest.java │ ├── KeyHandlerTest.java │ ├── OperatingSystemControlTest.java │ ├── RectangularAreasTest.java │ ├── ResizeTest.java │ ├── ScreenBufferTest.java │ ├── ScrollRegionTest.java │ ├── TerminalRowTest.java │ ├── TerminalTest.java │ ├── TerminalTestCase.java │ ├── TextStyleTest.java │ ├── UnicodeInputTest.java │ └── WcWidthTest.java └── terminal-view ├── build.gradle ├── proguard-rules.pro └── src └── main ├── AndroidManifest.xml ├── java └── com │ └── termux │ └── view │ ├── GestureAndScaleRecognizer.java │ ├── TerminalRenderer.java │ ├── TerminalView.java │ └── TerminalViewClient.java └── res ├── drawable-xxhdpi ├── text_select_handle_left_mtrl_alpha.png └── text_select_handle_right_mtrl_alpha.png ├── drawable ├── text_select_handle_left_material.xml └── text_select_handle_right_material.xml └── values └── strings.xml /LICENSE.md: -------------------------------------------------------------------------------- 1 | Released under [the GPLv3 license](https://www.gnu.org/licenses/gpl.html). 2 | 3 | Contains code from `Terminal Emulator for Android` by which is released under [the Apache License 2.0](https://www.apache.org/licenses/). 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This project is being built around issues https://github.com/sdrausty/buildAPKs/issues/3 and https://github.com/termux/termux-packages/issues/1756 similar to https://sdrausty.github.io/TermuxPovray/. 2 | 3 | Termux app 4 | ========== 5 | [![Travis build status](https://travis-ci.org/termux/termux-app.svg?branch=master)](https://travis-ci.org/termux/termux-app) 6 | [![Join the chat at https://gitter.im/termux/termux](https://badges.gitter.im/termux/termux.svg)](https://gitter.im/termux/termux) 7 | 8 | [Termux](https://termux.com) is an Android terminal app and Linux environment. 9 | 10 | * [Termux on Google Play Store](https://play.google.com/store/apps/details?id=com.termux) 11 | * [Termux on F-Droid](https://f-droid.org/repository/browse/?fdid=com.termux) 12 | * [Termux Facebook](https://facebook.com/termux/) 13 | * [Termux Google+ community](http://termux.com/community/) 14 | * [Termux Help](http://termux.com/help/) 15 | * [Termux Twitter](http://twitter.com/termux/) 16 | * [Termux Wiki](https://wiki.termux.com/wiki/) 17 | 18 | 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](https://github.com/termux/termux-packages) 19 | 20 | Terminal resources 21 | ================== 22 | * [XTerm control sequences](http://invisible-island.net/xterm/ctlseqs/ctlseqs.html) 23 | * [vt100.net](http://vt100.net/) 24 | * [Terminal codes (ANSI and terminfo equivalents)](http://wiki.bash-hackers.org/scripting/terminalcodes) 25 | 26 | Terminal emulators 27 | ================== 28 | * VTE (libvte): Terminal emulator widget for GTK+, mainly used in gnome-terminal. [Source](https://github.com/GNOME/vte), [Open Issues](https://bugzilla.gnome.org/buglist.cgi?quicksearch=product%3A%22vte%22+), and [All (including closed) issues](https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&chfield=resolution&chfieldfrom=-2000d&chfieldvalue=FIXED&product=vte&resolution=FIXED). 29 | * iTerm 2: OS X terminal application. [Source](https://github.com/gnachman/iTerm2), [Issues](https://gitlab.com/gnachman/iterm2/issues) and [Documentation](http://www.iterm2.com/documentation.html) (which includes [iTerm2 proprietary escape codes](http://www.iterm2.com/documentation-escape-codes.html)). 30 | * Konsole: KDE terminal application. [Source](https://projects.kde.org/projects/kde/applications/konsole/repository), in particular [tests](https://projects.kde.org/projects/kde/applications/konsole/repository/revisions/master/show/tests), [Bugs](https://bugs.kde.org/buglist.cgi?bug_severity=critical&bug_severity=grave&bug_severity=major&bug_severity=crash&bug_severity=normal&bug_severity=minor&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=konsole) and [Wishes](https://bugs.kde.org/buglist.cgi?bug_severity=wishlist&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=konsole). 31 | * hterm: JavaScript terminal implementation from Chromium. [Source](https://github.com/chromium/hterm), including [tests](https://github.com/chromium/hterm/blob/master/js/hterm_vt_tests.js), and [Google group](https://groups.google.com/a/chromium.org/forum/#!forum/chromium-hterm). 32 | * xterm: The grandfather of terminal emulators. [Source](http://invisible-island.net/datafiles/release/xterm.tar.gz). 33 | * Connectbot: Android SSH client. [Source](https://github.com/connectbot/connectbot) 34 | * Android Terminal Emulator: Android terminal app which Termux terminal handling is based on. Inactive. [Source](https://github.com/jackpal/Android-Terminal-Emulator). 35 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 27 5 | buildToolsVersion "27.0.2" 6 | 7 | dependencies { 8 | implementation 'com.android.support:support-annotations:27.0.2' 9 | implementation "com.android.support:support-core-ui:27.0.2" 10 | implementation project(":terminal-view") 11 | } 12 | 13 | defaultConfig { 14 | applicationId "com.termux" 15 | minSdkVersion 21 16 | targetSdkVersion 27 17 | versionCode 59 18 | versionName "0.59" 19 | } 20 | 21 | buildTypes { 22 | release { 23 | minifyEnabled true 24 | shrinkResources true 25 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 26 | } 27 | } 28 | } 29 | 30 | dependencies { 31 | testImplementation 'junit:junit:4.12' 32 | } 33 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in android-sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | -renamesourcefileattribute SourceFile 11 | -keepattributes SourceFile,LineNumberTable 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/termux/app/DialogUtils.java: -------------------------------------------------------------------------------- 1 | package com.termux.app; 2 | 3 | import android.app.Activity; 4 | import android.app.AlertDialog; 5 | import android.content.DialogInterface; 6 | import android.text.Selection; 7 | import android.util.TypedValue; 8 | import android.view.KeyEvent; 9 | import android.view.ViewGroup.LayoutParams; 10 | import android.widget.EditText; 11 | import android.widget.LinearLayout; 12 | import android.widget.TextView; 13 | 14 | public final class DialogUtils { 15 | 16 | public interface TextSetListener { 17 | void onTextSet(String text); 18 | } 19 | 20 | public static void textInput(Activity activity, int titleText, String initialText, 21 | int positiveButtonText, final TextSetListener onPositive, 22 | int neutralButtonText, final TextSetListener onNeutral, 23 | int negativeButtonText, final TextSetListener onNegative, 24 | final DialogInterface.OnDismissListener onDismiss) { 25 | final EditText input = new EditText(activity); 26 | input.setSingleLine(); 27 | if (initialText != null) { 28 | input.setText(initialText); 29 | Selection.setSelection(input.getText(), initialText.length()); 30 | } 31 | 32 | final AlertDialog[] dialogHolder = new AlertDialog[1]; 33 | input.setImeActionLabel(activity.getResources().getString(positiveButtonText), KeyEvent.KEYCODE_ENTER); 34 | input.setOnEditorActionListener(new TextView.OnEditorActionListener() { 35 | @Override 36 | public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 37 | onPositive.onTextSet(input.getText().toString()); 38 | dialogHolder[0].dismiss(); 39 | return true; 40 | } 41 | }); 42 | 43 | float dipInPixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1, activity.getResources().getDisplayMetrics()); 44 | // https://www.google.com/design/spec/components/dialogs.html#dialogs-specs 45 | int paddingTopAndSides = Math.round(16 * dipInPixels); 46 | int paddingBottom = Math.round(24 * dipInPixels); 47 | 48 | LinearLayout layout = new LinearLayout(activity); 49 | layout.setOrientation(LinearLayout.VERTICAL); 50 | layout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); 51 | layout.setPadding(paddingTopAndSides, paddingTopAndSides, paddingTopAndSides, paddingBottom); 52 | layout.addView(input); 53 | 54 | AlertDialog.Builder builder = new AlertDialog.Builder(activity) 55 | .setTitle(titleText).setView(layout) 56 | .setPositiveButton(positiveButtonText, new DialogInterface.OnClickListener() { 57 | @Override 58 | public void onClick(DialogInterface d, int whichButton) { 59 | onPositive.onTextSet(input.getText().toString()); 60 | } 61 | }); 62 | 63 | if (onNeutral != null) { 64 | builder.setNeutralButton(neutralButtonText, new DialogInterface.OnClickListener() { 65 | @Override 66 | public void onClick(DialogInterface dialog, int which) { 67 | onNeutral.onTextSet(input.getText().toString()); 68 | } 69 | }); 70 | } 71 | 72 | if (onNegative == null) { 73 | builder.setNegativeButton(android.R.string.cancel, null); 74 | } else { 75 | builder.setNegativeButton(negativeButtonText, new DialogInterface.OnClickListener() { 76 | @Override 77 | public void onClick(DialogInterface dialog, int which) { 78 | onNegative.onTextSet(input.getText().toString()); 79 | } 80 | }); 81 | } 82 | 83 | if (onDismiss != null) builder.setOnDismissListener(onDismiss); 84 | 85 | dialogHolder[0] = builder.create(); 86 | dialogHolder[0].setCanceledOnTouchOutside(false); 87 | dialogHolder[0].show(); 88 | } 89 | 90 | } 91 | -------------------------------------------------------------------------------- /app/src/main/java/com/termux/app/TermuxHelpActivity.java: -------------------------------------------------------------------------------- 1 | package com.termux.app; 2 | 3 | import android.app.Activity; 4 | import android.content.ActivityNotFoundException; 5 | import android.content.Intent; 6 | import android.net.Uri; 7 | import android.os.Bundle; 8 | import android.view.ViewGroup; 9 | import android.webkit.WebSettings; 10 | import android.webkit.WebView; 11 | import android.webkit.WebViewClient; 12 | import android.widget.ProgressBar; 13 | import android.widget.RelativeLayout; 14 | 15 | /** Basic embedded browser for viewing help pages. */ 16 | public final class TermuxHelpActivity extends Activity { 17 | 18 | WebView mWebView; 19 | 20 | @Override 21 | protected void onCreate(Bundle savedInstanceState) { 22 | super.onCreate(savedInstanceState); 23 | 24 | final RelativeLayout progressLayout = new RelativeLayout(this); 25 | RelativeLayout.LayoutParams lParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 26 | lParams.addRule(RelativeLayout.CENTER_IN_PARENT); 27 | ProgressBar progressBar = new ProgressBar(this); 28 | progressBar.setIndeterminate(true); 29 | progressBar.setLayoutParams(lParams); 30 | progressLayout.addView(progressBar); 31 | 32 | mWebView = new WebView(this); 33 | WebSettings settings = mWebView.getSettings(); 34 | settings.setCacheMode(WebSettings.LOAD_NO_CACHE); 35 | settings.setAppCacheEnabled(false); 36 | setContentView(progressLayout); 37 | mWebView.clearCache(true); 38 | 39 | mWebView.setWebViewClient(new WebViewClient() { 40 | @Override 41 | public boolean shouldOverrideUrlLoading(WebView view, String url) { 42 | if (url.startsWith("https://wiki.termux.com")) { 43 | // Inline help. 44 | setContentView(progressLayout); 45 | return false; 46 | } 47 | 48 | try { 49 | startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); 50 | } catch (ActivityNotFoundException e) { 51 | // Android TV does not have a system browser. 52 | setContentView(progressLayout); 53 | return false; 54 | } 55 | return true; 56 | } 57 | 58 | @Override 59 | public void onPageFinished(WebView view, String url) { 60 | setContentView(mWebView); 61 | } 62 | }); 63 | mWebView.loadUrl("https://wiki.termux.com/wiki/Main_Page"); 64 | } 65 | 66 | @Override 67 | public void onBackPressed() { 68 | if (mWebView.canGoBack()) { 69 | mWebView.goBack(); 70 | } else { 71 | super.onBackPressed(); 72 | } 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BuildAPKs/buildAPKsTermuxApp/c4a70c6046ac8b2e0ffff164f4dde92c53883525/app/src/main/res/drawable/banner.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/current_session.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_new_session.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | 14 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_service_notification.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | 11 | 24 | 25 | 26 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selected_session_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/session_ripple.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/terminal_scroll_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/drawer_layout.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | 14 | 21 | 22 | 33 | 34 | 42 | 43 | 48 | 49 |