fun launch()

in entity-browser-app/src/main/kotlin/jetbrains/xodus/browser/web/Browser.kt [9:38]


    fun launch(url: String) {
        try {
            val osName = System.getProperty("os.name")
            if (osName.startsWith("Mac OS")) {
                if (Desktop.isDesktopSupported()) {
                    Desktop.getDesktop().browse(URI.create(url))
                } else {
                    Runtime.getRuntime().exec("open $url")
                }
            } else if (osName.startsWith("Windows")) {
                Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler $url")
            } else {
                // Unix or Linux
                var selectedBrowser: String? = null
                for (browser in arrayOf("google-chrome", "firefox", "opera", "mozilla")) {
                    if (Runtime.getRuntime().exec(arrayOf("which", browser)).waitFor() == 0) {
                        selectedBrowser = browser
                        break
                    }
                }
                if (selectedBrowser == null) {
                    throw Exception("Couldn't find web browser")
                } else {
                    Runtime.getRuntime().exec(arrayOf(selectedBrowser, url))
                }
            }
        } catch (e: Exception) {
            logger.error("Unable to open browser: ", e)
        }
    }