diff --git a/app/src/main/java/io/xpipe/app/process/ShellControl.java b/app/src/main/java/io/xpipe/app/process/ShellControl.java index d880bf892..cc7edd142 100644 --- a/app/src/main/java/io/xpipe/app/process/ShellControl.java +++ b/app/src/main/java/io/xpipe/app/process/ShellControl.java @@ -106,14 +106,17 @@ public interface ShellControl extends ProcessControl { return onInit(shellControl -> { var or = shellControl.getOriginalShellDialect(); var oldState = store.getState(); - var s = oldState.toBuilder() - .osType(shellControl.getOsType()) + var newState = oldState.toBuilder() .shellDialect(or.isMarkerDialect() ? oldState.getShellDialect() : or) .ttyState(shellControl.getTtyState()) - .running(true) - .osName(shellControl.getOsName()) - .build(); - store.setState(s.asNeeded()); + .running(true); + if (shellControl.getOsType() != null) { + newState.osType(shellControl.getOsType()); + } + if (shellControl.getOsName() != null) { + newState.osName(shellControl.getOsName()); + } + store.setState(newState.build().asNeeded()); }); } diff --git a/app/src/main/java/io/xpipe/app/terminal/TerminalDockHubManager.java b/app/src/main/java/io/xpipe/app/terminal/TerminalDockHubManager.java index cc7c373f0..143f535be 100644 --- a/app/src/main/java/io/xpipe/app/terminal/TerminalDockHubManager.java +++ b/app/src/main/java/io/xpipe/app/terminal/TerminalDockHubManager.java @@ -228,11 +228,12 @@ public class TerminalDockHubManager { var listener = new TerminalView.Listener() { @Override public void onSessionOpened(TerminalView.ShellSession session) { - if (!hubRequests.contains(session.getRequest())) { + if (!(session.getTerminal() instanceof TerminalView.ControllableTerminalSession t)) { return; } - if (!(session.getTerminal() instanceof TerminalView.ControllableTerminalSession t)) { + if (!hubRequests.contains(session.getRequest())) { + t.getControllable().own(NativeWinWindowControl.MAIN_WINDOW); return; }