Add support for intelligent terminal

This commit is contained in:
crschnick
2026-06-09 13:06:42 +00:00
parent 9c459e2d76
commit cafc20fc6c
4 changed files with 68 additions and 1 deletions
@@ -238,6 +238,7 @@ public class SentryErrorHandler implements ErrorHandler {
ee.isShouldSendDiagnostics() && !ee.getAttachments().isEmpty()));
s.setTag("inStartup", Boolean.toString(AppOperationMode.isInStartup()));
s.setTag("inShutdown", Boolean.toString(AppOperationMode.isInShutdown()));
s.setTag("inShutdownHook", Boolean.toString(AppOperationMode.isInShutdownHook()));
s.setTag("unhandled", Boolean.toString(ee.isUnhandled()));
s.setTag("diagnostics", Boolean.toString(ee.isShouldSendDiagnostics()));
@@ -483,11 +483,12 @@ public interface ExternalTerminalType extends PrefsChoiceValue {
CMD,
PWSH,
POWERSHELL,
TabbyTerminalType.TABBY_WINDOWS,
WindowsTerminalType.WINDOWS_INTELLIGENT_TERMINAL,
MOBAXTERM,
SECURECRT,
TERMIUS,
XSHELL,
TabbyTerminalType.TABBY_WINDOWS,
WaveTerminalType.WAVE_WINDOWS);
List<ExternalTerminalType> LINUX_TERMINALS = List.of(
AlacrittyTerminalType.ALACRITTY_LINUX,
@@ -27,6 +27,7 @@ public interface WindowsTerminalType extends ExternalTerminalType, TrackableTerm
ExternalTerminalType WINDOWS_TERMINAL = new Standard();
ExternalTerminalType WINDOWS_TERMINAL_PREVIEW = new Preview();
ExternalTerminalType WINDOWS_TERMINAL_CANARY = new Canary();
ExternalTerminalType WINDOWS_INTELLIGENT_TERMINAL = new Intelligent();
AtomicInteger windowCounter = new AtomicInteger(101);
@@ -341,4 +342,67 @@ public interface WindowsTerminalType extends ExternalTerminalType, TrackableTerm
.resolve("Packages\\Microsoft.WindowsTerminalCanary_8wekyb3d8bbwe\\LocalState\\settings.json");
}
}
class Intelligent implements WindowsTerminalType {
@Override
public boolean isRecommended() {
return false;
}
@Override
public String getWebsite() {
return "https://devblogs.microsoft.com/commandline/announcing-intelligent-terminal-version-0-1/";
}
@Override
public void launch(TerminalLaunchConfiguration configuration) throws Exception {
if (!isAvailable()) {
throw ErrorEventFactory.expected(
new IllegalArgumentException("Windows Intelligent Terminal is not installed at " + getPath()));
}
checkProfile();
try (var sc = LocalShell.getShell().start()) {
var exec = getPath();
var firstScriptFile = configuration.getPanes().getFirst().getScriptFile();
var spaces = firstScriptFile.toString().contains(" ");
if (spaces) {
var wd = sc.view().pwd();
sc.command(CommandBuilder.of().addFile(exec).add(toCommand(configuration)))
.withWorkingDirectory(firstScriptFile.getParent())
.execute();
sc.view().cd(wd);
} else {
sc.command(CommandBuilder.of().addFile(exec).add(toCommand(configuration)))
.execute();
}
}
}
private Path getPath() {
return AppSystemInfo.ofWindows()
.getLocalAppData()
.resolve("Microsoft\\WindowsApps\\Microsoft.IntelligentTerminal_8wekyb3d8bbwe\\wtai.exe");
}
@Override
public boolean isAvailable() {
// The executable is a weird link
return Files.exists(getPath().getParent());
}
@Override
public String getId() {
return "app.windowsIntelligentTerminal";
}
@Override
public Path getConfigFile() {
return AppSystemInfo.ofWindows()
.getLocalAppData()
.resolve("Packages\\Microsoft.IntelligentTerminal_8wekyb3d8bbwe\\LocalState\\settings.json");
}
}
}
+1
View File
@@ -63,6 +63,7 @@ dashlane=Dashlane
lastpass=LastPass
macosKeychain=macOS keychain
windowsTerminalCanary=Windows Terminal Canary
windowsIntelligentTerminal=Windows Intelligent Terminal
secureCrt=SecureCRT
xShell=Xshell
mobaXterm=MobaXterm