diff --git a/app/src/main/java/io/xpipe/app/util/ScriptHelper.java b/app/src/main/java/io/xpipe/app/util/ScriptHelper.java index eb30b576..4ec5bd7b 100644 --- a/app/src/main/java/io/xpipe/app/util/ScriptHelper.java +++ b/app/src/main/java/io/xpipe/app/util/ScriptHelper.java @@ -44,7 +44,7 @@ public class ScriptHelper { } public static String constructInitFile( - ShellControl processControl, List init, String toExecuteInShell, boolean login, String displayName) { + ShellControl processControl, List init, String toExecuteInShell, boolean login, String displayName) throws Exception { ShellDialect t = processControl.getShellDialect(); String nl = t.getNewLine().getNewLineString(); var content = String.join(nl, init.stream().filter(s -> s != null).toList()) + nl; @@ -71,7 +71,7 @@ public class ScriptHelper { content += t.getExitCommand() + nl; } - var initFile = createExecScript(processControl, content); + var initFile = createExecScript(processControl, t.initFileName(processControl), content); return initFile; } @@ -99,7 +99,7 @@ public class ScriptHelper { } @SneakyThrows - private static String createExecScript(ShellControl processControl, String file, String content) { + public static String createExecScript(ShellControl processControl, String file, String content) { ShellDialect type = processControl.getShellDialect(); content = type.prepareScriptContent(content); diff --git a/core/src/main/java/io/xpipe/core/process/ShellDialect.java b/core/src/main/java/io/xpipe/core/process/ShellDialect.java index 72adb6c6..bf47df80 100644 --- a/core/src/main/java/io/xpipe/core/process/ShellDialect.java +++ b/core/src/main/java/io/xpipe/core/process/ShellDialect.java @@ -14,6 +14,8 @@ import java.util.stream.Stream; @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type") public interface ShellDialect { + String initFileName(ShellControl sc) throws Exception; + CommandControl directoryExists(ShellControl shellControl, String directory); CommandControl normalizeDirectory(ShellControl shellControl, String directory); diff --git a/core/src/main/java/io/xpipe/core/util/XPipeTempDirectory.java b/core/src/main/java/io/xpipe/core/util/XPipeTempDirectory.java index 55e2ef6f..b9e186d3 100644 --- a/core/src/main/java/io/xpipe/core/util/XPipeTempDirectory.java +++ b/core/src/main/java/io/xpipe/core/util/XPipeTempDirectory.java @@ -5,6 +5,8 @@ import io.xpipe.core.process.OsType; import io.xpipe.core.process.ShellControl; import java.io.IOException; +import java.util.Arrays; +import java.util.stream.Stream; public class XPipeTempDirectory { @@ -12,9 +14,10 @@ public class XPipeTempDirectory { return proc.getOsType().getTempDirectory(proc); } - public static String getSubDirectory(ShellControl proc) throws Exception { + public static String getSubDirectory(ShellControl proc, String... sub) throws Exception { var base = proc.getOsType().getTempDirectory(proc); - var dir = FileNames.join(base, "xpipe"); + var arr = Stream.concat(Stream.of(base, "xpipe"), Arrays.stream(sub)).toArray(String[]::new); + var dir = FileNames.join(arr); if (!proc.getShellDialect().createFileExistsCommand(proc, dir).executeAndCheck()) { proc.executeSimpleCommand( diff --git a/ext/base/src/main/java/io/xpipe/ext/base/browser/OpenFileWithAction.java b/ext/base/src/main/java/io/xpipe/ext/base/browser/OpenFileWithAction.java index be3c3d5b..2507df28 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/browser/OpenFileWithAction.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/browser/OpenFileWithAction.java @@ -56,7 +56,7 @@ public class OpenFileWithAction implements LeafAction { public boolean isApplicable(OpenFileSystemModel model, List entries) { var os = model.getFileSystem().getShell(); return os.isPresent() - && !os.get().getOsType().equals(OsType.MACOS) + && os.get().getOsType().equals(OsType.WINDOWS) && entries.size() == 1 && entries.stream().noneMatch(entry -> entry.getRawFileEntry().isDirectory()); }