mirror of
https://github.com/fankes/termux-app.git
synced 2025-09-06 18:55:31 +08:00
Changed: Maintain terminal session name in ExecutionCommand.sessionName
in addition to TerminalSession.mSessionName
This commit is contained in:
@@ -520,12 +520,14 @@ public final class TermuxService extends Service implements AppShell.AppShellCli
|
|||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public TermuxSession createTermuxSession(String executablePath, String[] arguments, String stdin, String workingDirectory, boolean isFailSafe, String sessionName) {
|
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}. */
|
/** Create a {@link TermuxSession}. */
|
||||||
@Nullable
|
@Nullable
|
||||||
public synchronized TermuxSession createTermuxSession(ExecutionCommand executionCommand, String sessionName) {
|
public synchronized TermuxSession createTermuxSession(ExecutionCommand executionCommand) {
|
||||||
if (executionCommand == null) return null;
|
if (executionCommand == null) return null;
|
||||||
|
|
||||||
Logger.logDebug(LOG_TAG, "Creating \"" + executionCommand.getCommandIdAndLabelLogString() + "\" TermuxSession");
|
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,
|
// Otherwise if command was manually started by the user like by adding a new terminal session,
|
||||||
// then no need to set stdout
|
// then no need to set stdout
|
||||||
executionCommand.terminalTranscriptRows = mProperties.getTerminalTranscriptRows();
|
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) {
|
if (newTermuxSession == null) {
|
||||||
Logger.logError(LOG_TAG, "Failed to execute new TermuxSession command for:\n" + executionCommand.getCommandIdAndLabelLogString());
|
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
|
// If the execution command was started for a plugin, then process the error
|
||||||
|
@@ -345,11 +345,22 @@ public class TermuxTerminalSessionClient extends TermuxTerminalSessionClientBase
|
|||||||
if (sessionToRename == null) return;
|
if (sessionToRename == null) return;
|
||||||
|
|
||||||
TextInputDialogUtils.textInput(mActivity, R.string.title_rename_session, sessionToRename.mSessionName, R.string.action_rename_session_confirm, text -> {
|
TextInputDialogUtils.textInput(mActivity, R.string.title_rename_session, sessionToRename.mSessionName, R.string.action_rename_session_confirm, text -> {
|
||||||
sessionToRename.mSessionName = text;
|
renameSession(sessionToRename, text);
|
||||||
termuxSessionListNotifyUpdated();
|
termuxSessionListNotifyUpdated();
|
||||||
}, -1, null, -1, null, null);
|
}, -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) {
|
public void addNewSession(boolean isFailSafe, String sessionName) {
|
||||||
TermuxService service = mActivity.getTermuxService();
|
TermuxService service = mActivity.getTermuxService();
|
||||||
if (service == null) return;
|
if (service == null) return;
|
||||||
|
@@ -148,9 +148,12 @@ public class ExecutionCommand {
|
|||||||
*/
|
*/
|
||||||
public Integer backgroundCustomLogLevel;
|
public Integer backgroundCustomLogLevel;
|
||||||
|
|
||||||
/** The session action of foreground commands. */
|
|
||||||
|
/** The session action of {@link Runner#TERMINAL_SESSION} commands. */
|
||||||
public String sessionAction;
|
public String sessionAction;
|
||||||
|
|
||||||
|
/** The session name of {@link Runner#TERMINAL_SESSION} commands. */
|
||||||
|
public String sessionName;
|
||||||
|
|
||||||
/** The command label for the {@link ExecutionCommand}. */
|
/** The command label for the {@link ExecutionCommand}. */
|
||||||
public String commandLabel;
|
public String commandLabel;
|
||||||
@@ -343,6 +346,9 @@ public class ExecutionCommand {
|
|||||||
if (!ignoreNull || executionCommand.sessionAction != null)
|
if (!ignoreNull || executionCommand.sessionAction != null)
|
||||||
logString.append("\n").append(executionCommand.getSessionActionLogString());
|
logString.append("\n").append(executionCommand.getSessionActionLogString());
|
||||||
|
|
||||||
|
if (!ignoreNull || executionCommand.sessionName != null) {
|
||||||
|
logString.append("\n").append(executionCommand.getSessionNameLogString());
|
||||||
|
}
|
||||||
if (!ignoreNull || executionCommand.commandIntent != null)
|
if (!ignoreNull || executionCommand.commandIntent != null)
|
||||||
logString.append("\n").append(executionCommand.getCommandIntentLogString());
|
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 Action", executionCommand.sessionAction, "-"));
|
||||||
|
markdownString.append("\n").append(MarkdownUtils.getSingleLineMarkdownStringEntry("Session Name", executionCommand.sessionName, "-"));
|
||||||
|
|
||||||
|
|
||||||
markdownString.append("\n").append(MarkdownUtils.getSingleLineMarkdownStringEntry("isPluginExecutionCommand", executionCommand.isPluginExecutionCommand, "-"));
|
markdownString.append("\n").append(MarkdownUtils.getSingleLineMarkdownStringEntry("isPluginExecutionCommand", executionCommand.isPluginExecutionCommand, "-"));
|
||||||
@@ -524,6 +531,9 @@ public class ExecutionCommand {
|
|||||||
return Logger.getSingleLineLogStringEntry("Session Action", sessionAction, "-");
|
return Logger.getSingleLineLogStringEntry("Session Action", sessionAction, "-");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getSessionNameLogString() {
|
||||||
|
return Logger.getSingleLineLogStringEntry("Session Name", sessionName, "-");
|
||||||
|
}
|
||||||
public String getCommandDescriptionLogString() {
|
public String getCommandDescriptionLogString() {
|
||||||
return Logger.getSingleLineLogStringEntry("Command Description", commandDescription, "-");
|
return Logger.getSingleLineLogStringEntry("Command Description", commandDescription, "-");
|
||||||
}
|
}
|
||||||
|
@@ -54,7 +54,6 @@ public class TermuxSession {
|
|||||||
* @param terminalSessionClient The {@link TerminalSessionClient} interface implementation.
|
* @param terminalSessionClient The {@link TerminalSessionClient} interface implementation.
|
||||||
* @param termuxSessionClient The {@link TermuxSessionClient} interface implementation.
|
* @param termuxSessionClient The {@link TermuxSessionClient} interface implementation.
|
||||||
* @param shellEnvironmentClient The {@link ShellEnvironmentClient} 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}
|
* @param setStdoutOnExit If set to {@code true}, then the {@link ResultData#stdout}
|
||||||
* available in the {@link TermuxSessionClient#onTermuxSessionExited(TermuxSession)}
|
* available in the {@link TermuxSessionClient#onTermuxSessionExited(TermuxSession)}
|
||||||
* callback will be set to the {@link TerminalSession} transcript. The session
|
* 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,
|
public static TermuxSession execute(@NonNull final Context context, @NonNull ExecutionCommand executionCommand,
|
||||||
@NonNull final TerminalSessionClient terminalSessionClient, final TermuxSessionClient termuxSessionClient,
|
@NonNull final TerminalSessionClient terminalSessionClient, final TermuxSessionClient termuxSessionClient,
|
||||||
@NonNull final ShellEnvironmentClient shellEnvironmentClient,
|
@NonNull final ShellEnvironmentClient shellEnvironmentClient,
|
||||||
final String sessionName, final boolean setStdoutOnExit) {
|
final boolean setStdoutOnExit) {
|
||||||
if (executionCommand.workingDirectory == null || executionCommand.workingDirectory.isEmpty())
|
if (executionCommand.workingDirectory == null || executionCommand.workingDirectory.isEmpty())
|
||||||
executionCommand.workingDirectory = shellEnvironmentClient.getDefaultWorkingDirectoryPath();
|
executionCommand.workingDirectory = shellEnvironmentClient.getDefaultWorkingDirectoryPath();
|
||||||
if (executionCommand.workingDirectory.isEmpty())
|
if (executionCommand.workingDirectory.isEmpty())
|
||||||
@@ -132,8 +131,8 @@ public class TermuxSession {
|
|||||||
Logger.logDebug(LOG_TAG, "Running \"" + executionCommand.getCommandIdAndLabelLogString() + "\" TermuxSession");
|
Logger.logDebug(LOG_TAG, "Running \"" + executionCommand.getCommandIdAndLabelLogString() + "\" TermuxSession");
|
||||||
TerminalSession terminalSession = new TerminalSession(executionCommand.executable, executionCommand.workingDirectory, executionCommand.arguments, environment, executionCommand.terminalTranscriptRows, terminalSessionClient);
|
TerminalSession terminalSession = new TerminalSession(executionCommand.executable, executionCommand.workingDirectory, executionCommand.arguments, environment, executionCommand.terminalTranscriptRows, terminalSessionClient);
|
||||||
|
|
||||||
if (sessionName != null) {
|
if (executionCommand.sessionName != null) {
|
||||||
terminalSession.mSessionName = sessionName;
|
terminalSession.mSessionName = executionCommand.sessionName;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new TermuxSession(terminalSession, executionCommand, termuxSessionClient, setStdoutOnExit);
|
return new TermuxSession(terminalSession, executionCommand, termuxSessionClient, setStdoutOnExit);
|
||||||
|
Reference in New Issue
Block a user