From ee32ef0c7e74fd630d63876d9e422ba2a4502bb0 Mon Sep 17 00:00:00 2001 From: agnostic-apollo Date: Fri, 18 Mar 2022 05:07:46 +0500 Subject: [PATCH] Changed: Maintain terminal session name in `ExecutionCommand.sessionName` in addition to `TerminalSession.mSessionName` --- app/src/main/java/com/termux/app/TermuxService.java | 8 +++++--- .../app/terminal/TermuxTerminalSessionClient.java | 13 ++++++++++++- .../shared/shell/command/ExecutionCommand.java | 12 +++++++++++- .../command/runner/terminal/TermuxSession.java | 7 +++---- 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/termux/app/TermuxService.java b/app/src/main/java/com/termux/app/TermuxService.java index 6f9cbb59..3720a64b 100644 --- a/app/src/main/java/com/termux/app/TermuxService.java +++ b/app/src/main/java/com/termux/app/TermuxService.java @@ -520,12 +520,14 @@ public final class TermuxService extends Service implements AppShell.AppShellCli */ @Nullable public TermuxSession createTermuxSession(String executablePath, String[] arguments, String stdin, String workingDirectory, boolean isFailSafe, String sessionName) { - return createTermuxSession(new ExecutionCommand(getNextExecutionId(), executablePath, arguments, stdin, workingDirectory, Runner.TERMINAL_SESSION.getName(), isFailSafe), sessionName); + ExecutionCommand executionCommand = new ExecutionCommand(getNextExecutionId(), executablePath, arguments, stdin, workingDirectory, Runner.TERMINAL_SESSION.getName(), isFailSafe); + executionCommand.sessionName = sessionName; + return createTermuxSession(executionCommand); } /** Create a {@link TermuxSession}. */ @Nullable - public synchronized TermuxSession createTermuxSession(ExecutionCommand executionCommand, String sessionName) { + public synchronized TermuxSession createTermuxSession(ExecutionCommand executionCommand) { if (executionCommand == null) return null; Logger.logDebug(LOG_TAG, "Creating \"" + executionCommand.getCommandIdAndLabelLogString() + "\" TermuxSession"); @@ -542,7 +544,7 @@ public final class TermuxService extends Service implements AppShell.AppShellCli // Otherwise if command was manually started by the user like by adding a new terminal session, // then no need to set stdout executionCommand.terminalTranscriptRows = mProperties.getTerminalTranscriptRows(); - TermuxSession newTermuxSession = TermuxSession.execute(this, executionCommand, getTermuxTerminalSessionClient(), this, new TermuxShellEnvironmentClient(), sessionName, executionCommand.isPluginExecutionCommand); + TermuxSession newTermuxSession = TermuxSession.execute(this, executionCommand, getTermuxTerminalSessionClient(), this, new TermuxShellEnvironmentClient(), executionCommand.isPluginExecutionCommand); if (newTermuxSession == null) { Logger.logError(LOG_TAG, "Failed to execute new TermuxSession command for:\n" + executionCommand.getCommandIdAndLabelLogString()); // If the execution command was started for a plugin, then process the error diff --git a/app/src/main/java/com/termux/app/terminal/TermuxTerminalSessionClient.java b/app/src/main/java/com/termux/app/terminal/TermuxTerminalSessionClient.java index e15b6e7d..070872d7 100644 --- a/app/src/main/java/com/termux/app/terminal/TermuxTerminalSessionClient.java +++ b/app/src/main/java/com/termux/app/terminal/TermuxTerminalSessionClient.java @@ -345,11 +345,22 @@ public class TermuxTerminalSessionClient extends TermuxTerminalSessionClientBase if (sessionToRename == null) return; TextInputDialogUtils.textInput(mActivity, R.string.title_rename_session, sessionToRename.mSessionName, R.string.action_rename_session_confirm, text -> { - sessionToRename.mSessionName = text; + renameSession(sessionToRename, text); termuxSessionListNotifyUpdated(); }, -1, null, -1, null, null); } + private void renameSession(TerminalSession sessionToRename, String text) { + if (sessionToRename == null) return; + sessionToRename.mSessionName = text; + TermuxService service = mActivity.getTermuxService(); + if (service != null) { + TermuxSession termuxSession = service.getTermuxSessionForTerminalSession(sessionToRename); + if (termuxSession != null) + termuxSession.getExecutionCommand().sessionName = text; + } + } + public void addNewSession(boolean isFailSafe, String sessionName) { TermuxService service = mActivity.getTermuxService(); if (service == null) return; diff --git a/termux-shared/src/main/java/com/termux/shared/shell/command/ExecutionCommand.java b/termux-shared/src/main/java/com/termux/shared/shell/command/ExecutionCommand.java index 90c1fba4..9e3d51cf 100644 --- a/termux-shared/src/main/java/com/termux/shared/shell/command/ExecutionCommand.java +++ b/termux-shared/src/main/java/com/termux/shared/shell/command/ExecutionCommand.java @@ -148,9 +148,12 @@ public class ExecutionCommand { */ public Integer backgroundCustomLogLevel; - /** The session action of foreground commands. */ + + /** The session action of {@link Runner#TERMINAL_SESSION} commands. */ public String sessionAction; + /** The session name of {@link Runner#TERMINAL_SESSION} commands. */ + public String sessionName; /** The command label for the {@link ExecutionCommand}. */ public String commandLabel; @@ -343,6 +346,9 @@ public class ExecutionCommand { if (!ignoreNull || executionCommand.sessionAction != null) logString.append("\n").append(executionCommand.getSessionActionLogString()); + if (!ignoreNull || executionCommand.sessionName != null) { + logString.append("\n").append(executionCommand.getSessionNameLogString()); + } if (!ignoreNull || executionCommand.commandIntent != null) logString.append("\n").append(executionCommand.getCommandIntentLogString()); @@ -434,6 +440,7 @@ public class ExecutionCommand { } markdownString.append("\n").append(MarkdownUtils.getSingleLineMarkdownStringEntry("Session Action", executionCommand.sessionAction, "-")); + markdownString.append("\n").append(MarkdownUtils.getSingleLineMarkdownStringEntry("Session Name", executionCommand.sessionName, "-")); markdownString.append("\n").append(MarkdownUtils.getSingleLineMarkdownStringEntry("isPluginExecutionCommand", executionCommand.isPluginExecutionCommand, "-")); @@ -524,6 +531,9 @@ public class ExecutionCommand { return Logger.getSingleLineLogStringEntry("Session Action", sessionAction, "-"); } + public String getSessionNameLogString() { + return Logger.getSingleLineLogStringEntry("Session Name", sessionName, "-"); + } public String getCommandDescriptionLogString() { return Logger.getSingleLineLogStringEntry("Command Description", commandDescription, "-"); } diff --git a/termux-shared/src/main/java/com/termux/shared/termux/shell/command/runner/terminal/TermuxSession.java b/termux-shared/src/main/java/com/termux/shared/termux/shell/command/runner/terminal/TermuxSession.java index 76e62c7c..2cfeb45d 100644 --- a/termux-shared/src/main/java/com/termux/shared/termux/shell/command/runner/terminal/TermuxSession.java +++ b/termux-shared/src/main/java/com/termux/shared/termux/shell/command/runner/terminal/TermuxSession.java @@ -54,7 +54,6 @@ public class TermuxSession { * @param terminalSessionClient The {@link TerminalSessionClient} interface implementation. * @param termuxSessionClient The {@link TermuxSessionClient} interface implementation. * @param shellEnvironmentClient The {@link ShellEnvironmentClient} interface implementation. - * @param sessionName The optional {@link TerminalSession} name. * @param setStdoutOnExit If set to {@code true}, then the {@link ResultData#stdout} * available in the {@link TermuxSessionClient#onTermuxSessionExited(TermuxSession)} * callback will be set to the {@link TerminalSession} transcript. The session @@ -67,7 +66,7 @@ public class TermuxSession { public static TermuxSession execute(@NonNull final Context context, @NonNull ExecutionCommand executionCommand, @NonNull final TerminalSessionClient terminalSessionClient, final TermuxSessionClient termuxSessionClient, @NonNull final ShellEnvironmentClient shellEnvironmentClient, - final String sessionName, final boolean setStdoutOnExit) { + final boolean setStdoutOnExit) { if (executionCommand.workingDirectory == null || executionCommand.workingDirectory.isEmpty()) executionCommand.workingDirectory = shellEnvironmentClient.getDefaultWorkingDirectoryPath(); if (executionCommand.workingDirectory.isEmpty()) @@ -132,8 +131,8 @@ public class TermuxSession { Logger.logDebug(LOG_TAG, "Running \"" + executionCommand.getCommandIdAndLabelLogString() + "\" TermuxSession"); TerminalSession terminalSession = new TerminalSession(executionCommand.executable, executionCommand.workingDirectory, executionCommand.arguments, environment, executionCommand.terminalTranscriptRows, terminalSessionClient); - if (sessionName != null) { - terminalSession.mSessionName = sessionName; + if (executionCommand.sessionName != null) { + terminalSession.mSessionName = executionCommand.sessionName; } return new TermuxSession(terminalSession, executionCommand, termuxSessionClient, setStdoutOnExit);