From b446dba7c99c68a4db451bee55bf98a6bf18abbd Mon Sep 17 00:00:00 2001 From: Guilherme Silva <626206+guihkx@users.noreply.github.com> Date: Tue, 29 Dec 2020 21:25:55 -0300 Subject: [PATCH] Fallback to xdg-open on Linux when opening URLs (#279) This also prevents MegaBasterd from hanging at startup if it fails opening the MEGA SDK URL. Co-authored-by: guihkx --- .../com/tonikelope/megabasterd/MiscTools.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/tonikelope/megabasterd/MiscTools.java b/src/main/java/com/tonikelope/megabasterd/MiscTools.java index cd6c4b079..59c1fd8aa 100644 --- a/src/main/java/com/tonikelope/megabasterd/MiscTools.java +++ b/src/main/java/com/tonikelope/megabasterd/MiscTools.java @@ -1110,8 +1110,20 @@ public class MiscTools { public static void openBrowserURL(final String url) { try { - Desktop.getDesktop().browse(new URI(url)); - } catch (URISyntaxException | IOException ex) { + Logger.getLogger(MiscTools.class.getName()).log(Level.INFO, "Trying to open URL in external browser: {0}", url); + + if (Desktop.isDesktopSupported() && Desktop.getDesktop().isSupported(Desktop.Action.BROWSE)) { + Desktop.getDesktop().browse(new URI(url)); + return; + } + if (System.getProperty("os.name").toLowerCase().contains("nux")) { + Process p = Runtime.getRuntime().exec(new String[] { "xdg-open", url }); + p.waitFor(); + p.destroy(); + return; + } + Logger.getLogger(MiscTools.class.getName()).log(Level.WARNING, "Unable to open URL: Unsupported platform.", url); + } catch (Exception ex) { Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, ex.getMessage()); } }