diff --git a/app/src/main/java/io/xpipe/app/comp/base/SideMenuBarComp.java b/app/src/main/java/io/xpipe/app/comp/base/SideMenuBarComp.java index 64fae5e7d..612f39020 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/SideMenuBarComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/SideMenuBarComp.java @@ -49,10 +49,11 @@ public class SideMenuBarComp extends RegionBuilder { if (e.action() != null) { e.action().run(); - return; } - value.setValue(e); + if (e.comp() != null) { + value.setValue(e); + } }); b.describe(d -> d.name(e.name())); diff --git a/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java b/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java index a360a0bfb..06e0915c5 100644 --- a/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java +++ b/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java @@ -7,6 +7,7 @@ import io.xpipe.app.hub.comp.StoreLayoutComp; import io.xpipe.app.platform.LabelGraphic; import io.xpipe.app.platform.PlatformThread; import io.xpipe.app.prefs.AppPrefsComp; +import io.xpipe.app.terminal.TerminalDockHubManager; import io.xpipe.app.update.AppDistributionType; import io.xpipe.app.util.*; @@ -117,7 +118,9 @@ public class AppLayoutModel { AppI18n.observable("connections"), new LabelGraphic.IconGraphic("mdi2c-connection"), new StoreLayoutComp(), - null, + () -> { + TerminalDockHubManager.get().hideDock(); + }, new KeyCodeCombination(KeyCode.DIGIT1, KeyCombination.SHORTCUT_DOWN)), new Entry( AppI18n.observable("browser"), diff --git a/ext/base/src/main/java/io/xpipe/ext/base/script/RunFileScriptMenuProvider.java b/ext/base/src/main/java/io/xpipe/ext/base/script/RunFileScriptMenuProvider.java index 3a6d6ec0a..2cfe03d6a 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/script/RunFileScriptMenuProvider.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/script/RunFileScriptMenuProvider.java @@ -143,6 +143,10 @@ public class RunFileScriptMenuProvider implements BrowserMenuBranchProvider { protected List createCommand(BrowserFileSystemTabModel model, List entries) { var sc = model.getFileSystem().getShell().orElseThrow(); var content = ref.getStore().assembleScriptChain(sc, true); + if (content == null) { + return List.of(); + } + var script = ScriptHelper.createExecScript(sc, content.getValue()); var builder = CommandBuilder.of().add(sc.getShellDialect().runScriptCommand(sc, script.toString())); for (BrowserEntry entry : entries) { diff --git a/ext/base/src/main/java/io/xpipe/ext/base/script/RunHubBatchScriptActionProvider.java b/ext/base/src/main/java/io/xpipe/ext/base/script/RunHubBatchScriptActionProvider.java index fda0e5f7d..3f673f55b 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/script/RunHubBatchScriptActionProvider.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/script/RunHubBatchScriptActionProvider.java @@ -30,6 +30,10 @@ public class RunHubBatchScriptActionProvider implements ActionProvider { for (DataStoreEntryRef ref : refs) { var sc = ref.getStore().getOrStartSession(); var script = scriptStore.getStore().assembleScriptChain(sc, false); + if (script == null) { + continue; + } + var cmd = sc.command(script); list.add(new CommandDialog.CommandEntry(ref.get().getName(), cmd)); } diff --git a/ext/base/src/main/java/io/xpipe/ext/base/script/RunHubScriptActionProvider.java b/ext/base/src/main/java/io/xpipe/ext/base/script/RunHubScriptActionProvider.java index e394be1f2..77875bd5a 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/script/RunHubScriptActionProvider.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/script/RunHubScriptActionProvider.java @@ -26,8 +26,10 @@ public class RunHubScriptActionProvider implements ActionProvider { public void executeImpl() throws Exception { var sc = ref.getStore().getOrStartSession(); var script = scriptStore.getStore().assembleScriptChain(sc, false); - var cmd = sc.command(script); - CommandDialog.runAndShow(cmd); + if (script != null) { + var cmd = sc.command(script); + CommandDialog.runAndShow(cmd); + } } @Override