From fde3d9d7481f2a9ad8e3779591d8fb7c99f7015d Mon Sep 17 00:00:00 2001 From: Auxilus Date: Mon, 25 Sep 2017 09:08:39 +0530 Subject: [PATCH 01/12] Update TerminalSession.java Endprocess string modified to check for `hushlogout` if exists then exit the terminal without echoing exit string --- .../com/termux/terminal/TerminalSession.java | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java index 5b82b0f98c..141a4233d6 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java @@ -115,24 +115,35 @@ public void handleMessage(Message msg) { mEmulator.append(mReceiveBuffer, bytesRead); notifyScreenUpdate(); } - } else if (msg.what == MSG_PROCESS_EXITED) { - int exitCode = (Integer) msg.obj; + } + File tmpDir = new File("/data/data/com.termux/files/home/.hushlogout"); + boolean exists = tmpDir.exists(); + if (exists) { cleanupResources(exitCode); mChangeCallback.onSessionFinished(TerminalSession.this); - - String exitDescription = "\r\n[Process completed"; - if (exitCode > 0) { - // Non-zero process exit. - exitDescription += " (code " + exitCode + ")"; - } else if (exitCode < 0) { - // Negated signal. - exitDescription += " (signal " + (-exitCode) + ")"; - } - exitDescription += " - press Enter]"; - - byte[] bytesToWrite = exitDescription.getBytes(StandardCharsets.UTF_8); - mEmulator.append(bytesToWrite, bytesToWrite.length); notifyScreenUpdate(); + } + else { + if (msg.what == MSG_PROCESS_EXITED) { + int exitCode = (Integer) msg.obj; + cleanupResources(exitCode); + mChangeCallback.onSessionFinished(TerminalSession.this); + + String exitDescription = "\r\n[Process completed"; + if (exitCode > 0) { + // Non-zero process exit. + exitDescription += " (code " + exitCode + ")"; + } else if (exitCode < 0) { + // Negated signal. + exitDescription += " (signal " + (-exitCode) + ")"; + } + exitDescription += " - press Enter]"; + + byte[] bytesToWrite = exitDescription.getBytes(StandardCharsets.UTF_8); + mEmulator.append(bytesToWrite, bytesToWrite.length); + notifyScreenUpdate(); + } + } } }; From 54cca8bd458ae61b3835f1c4f88d18e7b29205d4 Mon Sep 17 00:00:00 2001 From: Auxilus Date: Mon, 25 Sep 2017 09:23:09 +0530 Subject: [PATCH 02/12] Update TerminalSession.java --- .../src/main/java/com/termux/terminal/TerminalSession.java | 1 + 1 file changed, 1 insertion(+) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java index 141a4233d6..24dc8f93c3 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java @@ -8,6 +8,7 @@ import android.system.OsConstants; import android.util.Log; +import java.io.File import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileOutputStream; From 4c21856ee369ff11575d1f497d13d374381f3b97 Mon Sep 17 00:00:00 2001 From: Auxilus Date: Mon, 25 Sep 2017 09:24:04 +0530 Subject: [PATCH 03/12] Update TerminalSession.java --- .../src/main/java/com/termux/terminal/TerminalSession.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java index 24dc8f93c3..619d8c0e03 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java @@ -8,7 +8,7 @@ import android.system.OsConstants; import android.util.Log; -import java.io.File +import java.io.File; import java.io.FileDescriptor; import java.io.FileInputStream; import java.io.FileOutputStream; From 05986025a44cdee141617ad25f2f1a3e415e46ec Mon Sep 17 00:00:00 2001 From: Auxilus Date: Mon, 25 Sep 2017 09:27:39 +0530 Subject: [PATCH 04/12] Update TerminalSession.java --- .../main/java/com/termux/terminal/TerminalSession.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java index 619d8c0e03..b2754875ff 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java @@ -120,9 +120,12 @@ public void handleMessage(Message msg) { File tmpDir = new File("/data/data/com.termux/files/home/.hushlogout"); boolean exists = tmpDir.exists(); if (exists) { - cleanupResources(exitCode); - mChangeCallback.onSessionFinished(TerminalSession.this); - notifyScreenUpdate(); + + mShellExitStatus = exitStatus; + mShellPid = -1; + mTerminalToProcessIOQueue.close(); + mProcessToTerminalIOQueue.close(); + JNI.close(mTerminalFileDescriptor); } else { if (msg.what == MSG_PROCESS_EXITED) { From c597f764d7b699caaf1e344481dbb0a201830fb6 Mon Sep 17 00:00:00 2001 From: Auxilus Date: Mon, 25 Sep 2017 09:30:02 +0530 Subject: [PATCH 05/12] Update TerminalSession.java --- .../src/main/java/com/termux/terminal/TerminalSession.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java index b2754875ff..914b991f61 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java @@ -120,12 +120,13 @@ public void handleMessage(Message msg) { File tmpDir = new File("/data/data/com.termux/files/home/.hushlogout"); boolean exists = tmpDir.exists(); if (exists) { - - mShellExitStatus = exitStatus; + int exitCode = (Integer) msg.obj; + mShellExitStatus = exitCode; mShellPid = -1; mTerminalToProcessIOQueue.close(); mProcessToTerminalIOQueue.close(); JNI.close(mTerminalFileDescriptor); + mChangeCallback.onSessionFinished(TerminalSession.this); } else { if (msg.what == MSG_PROCESS_EXITED) { From ac841cd1542f34b736c067ed4b55b258d85ba2d1 Mon Sep 17 00:00:00 2001 From: Auxilus Date: Mon, 25 Sep 2017 09:43:31 +0530 Subject: [PATCH 06/12] Update TerminalSession.java --- .../com/termux/terminal/TerminalSession.java | 57 ++++++++++--------- 1 file changed, 30 insertions(+), 27 deletions(-) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java index 914b991f61..07a50d858d 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java @@ -117,37 +117,40 @@ public void handleMessage(Message msg) { notifyScreenUpdate(); } } - File tmpDir = new File("/data/data/com.termux/files/home/.hushlogout"); - boolean exists = tmpDir.exists(); - if (exists) { - int exitCode = (Integer) msg.obj; - mShellExitStatus = exitCode; - mShellPid = -1; - mTerminalToProcessIOQueue.close(); - mProcessToTerminalIOQueue.close(); - JNI.close(mTerminalFileDescriptor); - mChangeCallback.onSessionFinished(TerminalSession.this); - } + else { if (msg.what == MSG_PROCESS_EXITED) { - int exitCode = (Integer) msg.obj; - cleanupResources(exitCode); - mChangeCallback.onSessionFinished(TerminalSession.this); - - String exitDescription = "\r\n[Process completed"; - if (exitCode > 0) { - // Non-zero process exit. - exitDescription += " (code " + exitCode + ")"; - } else if (exitCode < 0) { - // Negated signal. - exitDescription += " (signal " + (-exitCode) + ")"; + File tmpDir = new File("/data/data/com.termux/files/home/.hushlogout"); + boolean exists = tmpDir.exists(); + if (exists) { + int exitCode = (Integer) msg.obj; + mShellExitStatus = exitCode; + mShellPid = -1; + mTerminalToProcessIOQueue.close(); mProcessToTerminalIOQueue.close(); + JNI.close(mTerminalFileDescriptor); + mChangeCallback.onSessionFinished(TerminalSession.this); } - exitDescription += " - press Enter]"; + - byte[] bytesToWrite = exitDescription.getBytes(StandardCharsets.UTF_8); - mEmulator.append(bytesToWrite, bytesToWrite.length); - notifyScreenUpdate(); - } + else { + int exitCode = (Integer) msg.obj; + cleanupResources(exitCode); + mChangeCallback.onSessionFinished(TerminalSession.this); + + String exitDescription = "\r\n[Process completed"; + if (exitCode > 0) { + // Non-zero process exit. + exitDescription += " (code " + exitCode + ")"; + } else if (exitCode < 0) { + // Negated signal. + exitDescription += " (signal " + (-exitCode) + ")"; + } + exitDescription += " - press Enter]"; + + byte[] bytesToWrite = exitDescription.getBytes(StandardCharsets.UTF_8); + mEmulator.append(bytesToWrite, bytesToWrite.length); + notifyScreenUpdate(); + } } } From 38ba8b3a952fd8d0a25bfc67a26a7176a7caa84c Mon Sep 17 00:00:00 2001 From: Auxilus Date: Mon, 25 Sep 2017 09:52:27 +0530 Subject: [PATCH 07/12] Update TerminalSession.java --- .../src/main/java/com/termux/terminal/TerminalSession.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java index 07a50d858d..7abc7cabae 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java @@ -151,7 +151,7 @@ public void handleMessage(Message msg) { mEmulator.append(bytesToWrite, bytesToWrite.length); notifyScreenUpdate(); } - + } } } }; From 498fed0ec9c8a903370d96ee1063cee9440ce37a Mon Sep 17 00:00:00 2001 From: Auxilus Date: Mon, 25 Sep 2017 17:06:36 +0530 Subject: [PATCH 08/12] Update TerminalSession.java --- .../main/java/com/termux/terminal/TerminalSession.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java index 7abc7cabae..875e3051dd 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java @@ -120,15 +120,11 @@ public void handleMessage(Message msg) { else { if (msg.what == MSG_PROCESS_EXITED) { - File tmpDir = new File("/data/data/com.termux/files/home/.hushlogout"); + File tmpDir = new File("/sdcard/.hushlogout"); boolean exists = tmpDir.exists(); if (exists) { int exitCode = (Integer) msg.obj; - mShellExitStatus = exitCode; - mShellPid = -1; - mTerminalToProcessIOQueue.close(); mProcessToTerminalIOQueue.close(); - JNI.close(mTerminalFileDescriptor); - mChangeCallback.onSessionFinished(TerminalSession.this); + cleanupResources(exitCode); } From 4e2ddf6cdbb946dd7b9650db8361b8dc1fb55e1b Mon Sep 17 00:00:00 2001 From: Auxilus Date: Mon, 25 Sep 2017 17:34:05 +0530 Subject: [PATCH 09/12] Update TerminalSession.java Echo message only if exit code is zero --- .../main/java/com/termux/terminal/TerminalSession.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java index 875e3051dd..8513a34e66 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java @@ -124,7 +124,15 @@ public void handleMessage(Message msg) { boolean exists = tmpDir.exists(); if (exists) { int exitCode = (Integer) msg.obj; + if (exitCode == 0) { + exitDescription = "session ended with exit code 0"; + byte[] bytesToWrite = exitDescription.getBytes(StandardCharsets.UTF_8); + mEmulator.append(bytesToWrite, bytesToWrite.length); + notifyScreenUpdate(); + } + else { cleanupResources(exitCode); + } } From c0bfa96a3799c6eb458b3a8b1213c58e385430ad Mon Sep 17 00:00:00 2001 From: Auxilus Date: Mon, 25 Sep 2017 18:07:39 +0530 Subject: [PATCH 10/12] Update TerminalSession.java --- .../src/main/java/com/termux/terminal/TerminalSession.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java index 8513a34e66..4555e0e962 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java @@ -125,7 +125,7 @@ public void handleMessage(Message msg) { if (exists) { int exitCode = (Integer) msg.obj; if (exitCode == 0) { - exitDescription = "session ended with exit code 0"; + String exitDescription = "session ended with exit code 0"; byte[] bytesToWrite = exitDescription.getBytes(StandardCharsets.UTF_8); mEmulator.append(bytesToWrite, bytesToWrite.length); notifyScreenUpdate(); From e48dcb135d2e20bd28abcef22e0f23caaa6cf79f Mon Sep 17 00:00:00 2001 From: Auxilus Date: Tue, 7 Nov 2017 09:56:49 +0530 Subject: [PATCH 11/12] Show toast after session exit --- .../src/main/java/com/termux/terminal/TerminalSession.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java index 4555e0e962..2c8ec8f32f 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java @@ -7,6 +7,7 @@ import android.system.Os; import android.system.OsConstants; import android.util.Log; +import android.widget.toast import java.io.File; import java.io.FileDescriptor; @@ -131,7 +132,10 @@ public void handleMessage(Message msg) { notifyScreenUpdate(); } else { - cleanupResources(exitCode); + printString = "Session exited with exit code"; + printString += exitCode; + showToast(toToastTitle(printString) , false); + cleanupResources(exitCode); } } From 05769dad28a8595200e2c5899a6470c011d3bdcd Mon Sep 17 00:00:00 2001 From: Auxilus Date: Tue, 7 Nov 2017 10:02:51 +0530 Subject: [PATCH 12/12] Update TerminalSession.java --- .../java/com/termux/terminal/TerminalSession.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java index 2c8ec8f32f..4936b13c91 100644 --- a/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java +++ b/terminal-emulator/src/main/java/com/termux/terminal/TerminalSession.java @@ -73,7 +73,14 @@ private static FileDescriptor wrapFileDescriptor(int fileDescriptor) { public final String mHandle = UUID.randomUUID().toString(); TerminalEmulator mEmulator; - + + void showToast(String text, boolean longDuration) { + if (mLastToast != null) mLastToast.cancel(); + mLastToast = Toast.makeText(TermuxActivity.this, text, longDuration ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT); + mLastToast.setGravity(Gravity.TOP, 0, 0); + mLastToast.show(); + } + /** * A queue written to from a separate thread when the process outputs, and read by main thread to process by * terminal emulator. @@ -134,7 +141,7 @@ public void handleMessage(Message msg) { else { printString = "Session exited with exit code"; printString += exitCode; - showToast(toToastTitle(printString) , false); + showToast(printString , false); cleanupResources(exitCode); } }