macos: set dock icon #29, #86

This commit is contained in:
Bixilon 2023-02-12 20:23:01 +01:00
parent a2a863ae53
commit 843b29ab9a
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
3 changed files with 32 additions and 1 deletions

View File

@ -53,6 +53,7 @@ import de.bixilon.minosoft.terminal.AutoConnect
import de.bixilon.minosoft.terminal.CommandLineArguments
import de.bixilon.minosoft.terminal.RunConfiguration
import de.bixilon.minosoft.terminal.cli.CLI
import de.bixilon.minosoft.util.DesktopUtil
import de.bixilon.minosoft.util.KUtil
import de.bixilon.minosoft.util.logging.Log
import de.bixilon.minosoft.util.logging.LogLevels
@ -111,6 +112,10 @@ object Minosoft {
Eros::class.java.forceInit()
}
if (RunConfiguration.DISABLE_EROS && !RunConfiguration.DISABLE_RENDERING) {
// eros is disabled, but rendering not, force initialize the desktop, otherwise eros will do so
DefaultThreadPool += { DesktopUtil.initialize() }
}
taskWorker += WorkerTask(identifier = BootTasks.YGGDRASIL, executor = { YggdrasilUtil.load() })
taskWorker += WorkerTask(identifier = BootTasks.ASSETS_OVERRIDE, executor = { OVERRIDE_ASSETS_MANAGER.load(it) })

View File

@ -20,6 +20,7 @@ import de.bixilon.kutil.latch.CountUpAndDownLatch
import de.bixilon.kutil.shutdown.ShutdownManager
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.gui.eros.crash.ErosCrashReport.Companion.crash
import de.bixilon.minosoft.util.DesktopUtil
import de.bixilon.minosoft.util.KUtil.toResourceLocation
import de.bixilon.minosoft.util.logging.Log
import de.bixilon.minosoft.util.logging.LogLevels
@ -37,8 +38,9 @@ class JavaFXInitializer internal constructor() : Application() {
JavaFXUtil.JAVA_FX_THREAD = Thread.currentThread()
JavaFXUtil.HOST_SERVICES = hostServices
val worker = UnconditionalWorker()
worker += { JavaFXUtil.MINOSOFT_LOGO = Image(Minosoft.MINOSOFT_ASSETS_MANAGER["minosoft:textures/icons/window_icon.png".toResourceLocation()]) }
worker += { JavaFXUtil.MINOSOFT_LOGO = Image(Minosoft.MINOSOFT_ASSETS_MANAGER[DesktopUtil.ICON]) }
worker += { catchAll { JavaFXUtil.BIXILON_LOGO = SvgLoader().loadSvg(Minosoft.MINOSOFT_ASSETS_MANAGER["minosoft:textures/icons/bixilon_logo.svg".toResourceLocation()]) } }
worker += { DesktopUtil.initialize() }
worker.work(LATCH)

View File

@ -13,16 +13,23 @@
package de.bixilon.minosoft.util
import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.data.registries.identified.Namespaces.minosoft
import de.bixilon.minosoft.gui.eros.util.JavaFXUtil
import de.bixilon.minosoft.gui.rendering.textures.TextureUtil.texture
import de.bixilon.minosoft.terminal.RunConfiguration
import de.bixilon.minosoft.util.logging.Log
import de.bixilon.minosoft.util.logging.LogLevels
import de.bixilon.minosoft.util.logging.LogMessageType
import java.awt.Taskbar
import java.awt.Toolkit
import java.io.File
import java.net.URL
import java.nio.file.Path
object DesktopUtil {
val ICON = minosoft("icons/window_icon").texture()
fun openURL(url: URL) {
if (RunConfiguration.DISABLE_EROS) {
@ -57,4 +64,21 @@ object DesktopUtil {
exception.printStackTrace()
}
}
private fun Taskbar.setDockIcon() {
iconImage = Toolkit.getDefaultToolkit().createImage(Minosoft.MINOSOFT_ASSETS_MANAGER[ICON].readAllBytes())
}
private fun Taskbar.initialize() {
if (isSupported(Taskbar.Feature.ICON_IMAGE)) {
setDockIcon()
}
}
fun initialize() {
System.setProperty("java.awt.headless", true.toString())
if (Taskbar.isTaskbarSupported()) {
Taskbar.getTaskbar().initialize()
}
}
}