diff --git a/server/build.gradle.kts b/server/build.gradle.kts index 65cfe11..20e4b2a 100644 --- a/server/build.gradle.kts +++ b/server/build.gradle.kts @@ -78,6 +78,7 @@ dependencies { val MainClass = "ir.armor.tachidesk.MainKt" application { mainClass.set(MainClass) + applicationDefaultJvmArgs = listOf("-Dir.armor.tachidesk.openInWebview=true") } sourceSets { diff --git a/server/src/main/kotlin/ir/armor/tachidesk/server/JavalinSetup.kt b/server/src/main/kotlin/ir/armor/tachidesk/server/JavalinSetup.kt index 080a21f..ea487ee 100644 --- a/server/src/main/kotlin/ir/armor/tachidesk/server/JavalinSetup.kt +++ b/server/src/main/kotlin/ir/armor/tachidesk/server/JavalinSetup.kt @@ -33,7 +33,7 @@ import ir.armor.tachidesk.impl.extension.Extension.uninstallExtension import ir.armor.tachidesk.impl.extension.Extension.updateExtension import ir.armor.tachidesk.impl.extension.ExtensionsList.getExtensionList import ir.armor.tachidesk.server.impl_internal.About.getAbout -import ir.armor.tachidesk.server.util.Browser.openInBrowser +import ir.armor.tachidesk.server.util.Browser import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob @@ -78,6 +78,13 @@ object JavalinSetup { hasWebUiBundled = false } config.enableCorsForAllOrigins() + }.events { event -> + event.serverStarted { + println("started") + if (hasWebUiBundled && serverConfig.initialOpenInBrowserEnabled) { + Browser.openInBrowser() + } + } }.start(serverConfig.ip, serverConfig.port) // when JVM is prompted to shutdown, stop javalin gracefully @@ -87,14 +94,6 @@ object JavalinSetup { } ) - app.events { event -> - event.serverStarted { - if (hasWebUiBundled && serverConfig.initialOpenInBrowserEnabled) { - openInBrowser() - } - } - } - app.exception(NullPointerException::class.java) { e, ctx -> logger.error("NullPointerException while handling the request", e) ctx.status(404) diff --git a/server/src/main/kotlin/ir/armor/tachidesk/server/util/Browser.kt b/server/src/main/kotlin/ir/armor/tachidesk/server/util/Browser.kt index 2e6b6a0..d931967 100644 --- a/server/src/main/kotlin/ir/armor/tachidesk/server/util/Browser.kt +++ b/server/src/main/kotlin/ir/armor/tachidesk/server/util/Browser.kt @@ -7,7 +7,7 @@ package ir.armor.tachidesk.server.util * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ -import ca.weblite.webview.WebView +import ca.weblite.webview.WebViewCLIClient import dorkbox.util.Desktop import ir.armor.tachidesk.server.serverConfig @@ -15,18 +15,18 @@ object Browser { private val appIP = if (serverConfig.ip == "0.0.0.0") "127.0.0.1" else serverConfig.ip private val appBaseUrl = "http://$appIP:${serverConfig.port}" - private val webViewInstances = mutableListOf() + private val webViewInstances = mutableListOf() - private fun createWebView() = WebView() - .size(800, 600) - .title("Tachidesk") - .resizable(true) - .url(appBaseUrl) - .also { - WebView::class.java.getDeclaredField("fullscreen").setBoolean(it, true) - }.also { - webViewInstances.add(it) - } + private fun createWebView() = + WebViewCLIClient.Builder() + .size(800, 600) + .title("Tachidesk") + .resizable(true) + .url(appBaseUrl) + .build() + .also { + webViewInstances.add(it) + } fun openInBrowser() { @@ -34,7 +34,9 @@ object Browser { if (openInWebView == true) { try { - createWebView().show() + Thread { + createWebView() + }.start() } catch (e: Throwable) { // cover both java.lang.Exception and java.lang.Error e.printStackTrace() }