diff --git a/app/src/main/java/io/xpipe/app/prefs/ExternalApplicationType.java b/app/src/main/java/io/xpipe/app/prefs/ExternalApplicationType.java index 26546e5ed..612932961 100644 --- a/app/src/main/java/io/xpipe/app/prefs/ExternalApplicationType.java +++ b/app/src/main/java/io/xpipe/app/prefs/ExternalApplicationType.java @@ -53,6 +53,20 @@ public abstract class ExternalApplicationType implements PrefsChoiceValue { } public Optional findApp() throws Exception { + // Perform a quick check because mdfind is slow + var applicationsDef = Path.of("/Applications/" + applicationName + ".app"); + if (Files.exists(applicationsDef)) { + return Optional.of(applicationsDef); + } + var systemApplicationsDef = Path.of("/System/Applications/" + applicationName + ".app"); + if (Files.exists(systemApplicationsDef)) { + return Optional.of(systemApplicationsDef); + } + var userApplicationsDef = Path.of(System.getProperty("user.home") + "/Applications/" + applicationName + ".app"); + if (Files.exists(userApplicationsDef)) { + return Optional.of(userApplicationsDef); + } + try (ShellControl pc = LocalShell.getShell().start()) { var out = pc.command(String.format( "mdfind -literal 'kMDItemFSName = \"%s.app\"' -onlyin /Applications -onlyin ~/Applications -onlyin /System/Applications", diff --git a/app/src/main/java/io/xpipe/app/prefs/ExternalRdpClientType.java b/app/src/main/java/io/xpipe/app/prefs/ExternalRdpClientType.java index 1e67675b5..860373a89 100644 --- a/app/src/main/java/io/xpipe/app/prefs/ExternalRdpClientType.java +++ b/app/src/main/java/io/xpipe/app/prefs/ExternalRdpClientType.java @@ -253,8 +253,8 @@ public interface ExternalRdpClientType extends PrefsChoiceValue { if (location.isEmpty()) { location = determineInstallation(); if (location.isEmpty()) { - throw new IOException("Unable to find installation of " - + toTranslatedString().getValue()); + throw ErrorEvent.expected(new IOException("Unable to find installation of " + + toTranslatedString().getValue())); } }