diff --git a/app/src/main/java/io/xpipe/app/terminal/TerminalLauncher.java b/app/src/main/java/io/xpipe/app/terminal/TerminalLauncher.java index 8b3ff24c5..51af3f7d9 100644 --- a/app/src/main/java/io/xpipe/app/terminal/TerminalLauncher.java +++ b/app/src/main/java/io/xpipe/app/terminal/TerminalLauncher.java @@ -310,25 +310,34 @@ public class TerminalLauncher { private static Optional launchProxy( UUID request, TerminalInitScriptConfig initScriptConfig, TerminalLaunchConfiguration launchConfiguration) throws Exception { - var proxyControl = TerminalProxyManager.getProxy(); - if (proxyControl.isEmpty()) { - return Optional.empty(); - } - var initScript = AppPrefs.get().terminalInitScript().getValue(); var initialCommand = initScript != null ? initScript + "\n" : ""; var openCommand = launchConfiguration.getDialectLaunchCommand().buildSimple(); var fullCommand = initialCommand + openCommand; - var launchCommand = proxyControl - .get() - .prepareIntermediateTerminalOpen( - TerminalInitFunction.fixed(fullCommand), - TerminalInitScriptConfig.ofName("XPipe"), - WorkingDirectoryFunction.none()); - // Restart for the next time - proxyControl.get().start(); - var fullLocalCommand = getTerminalRegisterCommand(request) + "\n" + launchCommand; - return Optional.ofNullable(launchConfiguration.withScript( - ProcessControlProvider.get().getEffectiveLocalDialect(), fullLocalCommand)); + + var proxyControl = TerminalProxyManager.getProxy(); + if (proxyControl.isPresent()) { + var launchCommand = proxyControl + .get() + .prepareIntermediateTerminalOpen( + TerminalInitFunction.fixed(fullCommand), + TerminalInitScriptConfig.ofName("XPipe"), + WorkingDirectoryFunction.none()); + // Restart for the next time + proxyControl.get().start(); + var fullLocalCommand = getTerminalRegisterCommand(request) + "\n" + launchCommand; + return Optional.ofNullable(launchConfiguration.withScript( + ProcessControlProvider.get().getEffectiveLocalDialect(), fullLocalCommand)); + + } else { + var launchCommand = LocalShell.getShell() + .prepareIntermediateTerminalOpen( + TerminalInitFunction.fixed(fullCommand), + TerminalInitScriptConfig.ofName("XPipe"), + WorkingDirectoryFunction.none()); + var fullLocalCommand = getTerminalRegisterCommand(request) + "\n" + launchCommand; + return Optional.ofNullable(launchConfiguration.withScript( + ProcessControlProvider.get().getEffectiveLocalDialect(), fullLocalCommand)); + } } } diff --git a/dist/changelogs/16.0.md b/dist/changelogs/16.0.md index ea3924a04..b3db6bf37 100644 --- a/dist/changelogs/16.0.md +++ b/dist/changelogs/16.0.md @@ -37,6 +37,10 @@ Various improvements were made to the SSH implementation: - When the SSH password is set to none, XPipe will no longer prompt for it anyway if the preferred auth failed - The VSCode SSH remote integration has been reworked to allow more connections it to be opened in vscode. It now supports essentially all simple SSH connections, custom SSH connections, SSH config connections, and VM SSH connections. This support includes gateways +## Mini mode + +The application window will now hide any unnecessary sidebars when being resized to a small width. This makes it much easier to use XPipe next to a terminal (maybe also with the new multiplexer integration) in a tiling window arrangement. + ## Other - Generated connection names, e.g. VM names, will now automatically update on refresh when they were changed diff --git a/lang/strings/fixed_en.properties b/lang/strings/fixed_en.properties index 9b5d0bcf1..30118d2cc 100644 --- a/lang/strings/fixed_en.properties +++ b/lang/strings/fixed_en.properties @@ -123,3 +123,4 @@ onePassword=1Password starship=Starship ohmyposh=Oh My Posh ohmyzsh=Oh My Zsh +uxterm=UXTerm