diff --git a/README.md b/README.md index 16719fcb..0eeef8ca 100644 --- a/README.md +++ b/README.md @@ -38,9 +38,9 @@ It comes with the following main features: - Exclusively uses established CLI tools and therefore works out of the box on most systems and doesn't require any additional setup - Allows you to customize the launched shell's init environment -#### Simple connection Management +#### All your connections in one place -- Easily create and manage all kinds of remote connections +- Easily create and manage all kinds of remote connections at one location - Securely stores all information exclusively on your computer and encrypts all secret information - Allows you to share connection configurations to any other trusted party through shareable URLs diff --git a/app/src/main/java/io/xpipe/app/prefs/ExternalEditorType.java b/app/src/main/java/io/xpipe/app/prefs/ExternalEditorType.java index 4e672864..e66ca587 100644 --- a/app/src/main/java/io/xpipe/app/prefs/ExternalEditorType.java +++ b/app/src/main/java/io/xpipe/app/prefs/ExternalEditorType.java @@ -1,7 +1,10 @@ package io.xpipe.app.prefs; import io.xpipe.core.process.OsType; +import io.xpipe.core.process.ShellProcessControl; import io.xpipe.core.process.ShellTypes; +import io.xpipe.core.store.ShellStore; +import io.xpipe.extension.event.ErrorEvent; import io.xpipe.extension.prefs.PrefsChoiceValue; import io.xpipe.extension.util.ApplicationHelper; import io.xpipe.extension.util.WindowsRegistry; @@ -136,6 +139,15 @@ public abstract class ExternalEditorType implements PrefsChoiceValue { new ProcessBuilder(list).start(); } + public boolean isAvailable() { + try (ShellProcessControl pc = ShellStore.local().create().start()) { + return pc.executeBooleanSimpleCommand(pc.getShellType().getWhichCommand(command)); + } catch (Exception e) { + ErrorEvent.fromThrowable(e).omit().handle(); + return false; + } + } + @Override public boolean isSelectable() { return OsType.getLocal().equals(OsType.LINUX);