Improve terminal clearing

This commit is contained in:
crschnick 2023-08-15 19:34:46 +00:00
parent d1953fbe10
commit 7f85b4b535
2 changed files with 18 additions and 10 deletions

View file

@ -423,8 +423,7 @@ public interface ExternalTerminalType extends PrefsChoiceValue {
@Override
public void launch(String name, String file) throws Exception {
try (ShellControl pc = LocalStore.getShell()) {
var clearscript = ScriptHelper.createLocalExecScript("printf \"\\e[1;1H\\e[2J\"\n" + file);
var suffix = "\"" + clearscript.replaceAll("\"", "\\\\\"") + "\"";
var suffix = "\"" + file.replaceAll("\"", "\\\\\"") + "\"";
pc.osascriptCommand(String.format(
"""
activate application "Terminal"
@ -480,24 +479,29 @@ public interface ExternalTerminalType extends PrefsChoiceValue {
@Override
public void launch(String name, String file) throws Exception {
var app = this.getApplicationPath();
if (app.isEmpty()) {
throw new IllegalStateException("iTerm installation not found");
}
try (ShellControl pc = LocalStore.getShell()) {
// TODO: Wait for launch. But how?
var a = app.get().toString();
pc.osascriptCommand(String.format(
"""
if application "iTerm" is not running then
launch application "iTerm"
if application "%s" is not running then
launch application "%s"
delay 1
tell application "iTerm"
tell application "%s"
tell current tab of current window
close
end tell
end tell
end if
tell application "iTerm"
tell application "%s"
create window with default profile command "%s"
end tell
""",
file.replaceAll("\"", "\\\\\"")))
a, a, a, a, file.replaceAll("\"", "\\\\\"")))
.execute();
}
}
@ -535,7 +539,6 @@ public interface ExternalTerminalType extends PrefsChoiceValue {
return;
}
var clearscript = ScriptHelper.createLocalExecScript("printf \"\\e[1;1H\\e[2J\"\n" + file);
try (ShellControl pc = LocalStore.getShell()) {
pc.osascriptCommand(String.format(
"""
@ -550,7 +553,7 @@ public interface ExternalTerminalType extends PrefsChoiceValue {
end tell
end tell
""",
clearscript.replaceAll("\"", "\\\\\"")))
file.replaceAll("\"", "\\\\\"")))
.execute();
}
}

View file

@ -54,6 +54,11 @@ public class ScriptHelper {
String nl = t.getNewLine().getNewLineString();
var content = "";
var clear = t.clearDisplayCommand();
if (clear != null) {
content += clear + nl;
}
var applyRcCommand = t.applyRcFileCommand();
if (applyRcCommand != null) {
content = content + nl + applyRcCommand + nl;