mirror of
https://github.com/xpipe-io/xpipe.git
synced 2026-07-08 11:30:42 +00:00
Add support for intelligent terminal
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Generated
+1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user