diff --git a/src/main/java/com/example/plugin/OpenRemoteTerminalAction.java b/src/main/java/com/example/plugin/OpenRemoteTerminalAction.java index e7c2539..b750101 100644 --- a/src/main/java/com/example/plugin/OpenRemoteTerminalAction.java +++ b/src/main/java/com/example/plugin/OpenRemoteTerminalAction.java @@ -48,7 +48,7 @@ public class OpenRemoteTerminalAction extends AnAction { SftpSessionManager.getInstance(project) .getShellChannel(server); - TtyConnector connector = new SshTtyConnector(shellChannel); + TtyConnector connector = new SshTtyConnector(shellChannel, server.remoteProjectPath); ToolWindow terminalToolWindow = ToolWindowManager.getInstance(project).getToolWindow("Terminal"); diff --git a/src/main/java/com/example/plugin/SshTtyConnector.java b/src/main/java/com/example/plugin/SshTtyConnector.java index 418201d..43aa480 100644 --- a/src/main/java/com/example/plugin/SshTtyConnector.java +++ b/src/main/java/com/example/plugin/SshTtyConnector.java @@ -15,12 +15,22 @@ public class SshTtyConnector implements TtyConnector { private final OutputStream outputStream; private final Reader reader; - public SshTtyConnector(ChannelShell channel) { + public SshTtyConnector(ChannelShell channel, String initialPath) { this.channel = channel; + try { this.inputStream = channel.getInputStream(); this.outputStream = channel.getOutputStream(); this.reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); + + if (initialPath != null && !initialPath.isBlank()) { + outputStream.write( + ("cd \"" + initialPath + "\"\n") + .getBytes(StandardCharsets.UTF_8) + ); + outputStream.flush(); + } + } catch (Exception e) { throw new RuntimeException(e); }