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.CommandLineArguments
import de.bixilon.minosoft.terminal.RunConfiguration import de.bixilon.minosoft.terminal.RunConfiguration
import de.bixilon.minosoft.terminal.cli.CLI import de.bixilon.minosoft.terminal.cli.CLI
import de.bixilon.minosoft.util.DesktopUtil
import de.bixilon.minosoft.util.KUtil import de.bixilon.minosoft.util.KUtil
import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.Log
import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogLevels
@ -111,6 +112,10 @@ object Minosoft {
Eros::class.java.forceInit() 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.YGGDRASIL, executor = { YggdrasilUtil.load() })
taskWorker += WorkerTask(identifier = BootTasks.ASSETS_OVERRIDE, executor = { OVERRIDE_ASSETS_MANAGER.load(it) }) 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.kutil.shutdown.ShutdownManager
import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.Minosoft
import de.bixilon.minosoft.gui.eros.crash.ErosCrashReport.Companion.crash 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.KUtil.toResourceLocation
import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.Log
import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogLevels
@ -37,8 +38,9 @@ class JavaFXInitializer internal constructor() : Application() {
JavaFXUtil.JAVA_FX_THREAD = Thread.currentThread() JavaFXUtil.JAVA_FX_THREAD = Thread.currentThread()
JavaFXUtil.HOST_SERVICES = hostServices JavaFXUtil.HOST_SERVICES = hostServices
val worker = UnconditionalWorker() 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 += { catchAll { JavaFXUtil.BIXILON_LOGO = SvgLoader().loadSvg(Minosoft.MINOSOFT_ASSETS_MANAGER["minosoft:textures/icons/bixilon_logo.svg".toResourceLocation()]) } }
worker += { DesktopUtil.initialize() }
worker.work(LATCH) worker.work(LATCH)

View File

@ -13,16 +13,23 @@
package de.bixilon.minosoft.util 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.eros.util.JavaFXUtil
import de.bixilon.minosoft.gui.rendering.textures.TextureUtil.texture
import de.bixilon.minosoft.terminal.RunConfiguration import de.bixilon.minosoft.terminal.RunConfiguration
import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.Log
import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogLevels
import de.bixilon.minosoft.util.logging.LogMessageType import de.bixilon.minosoft.util.logging.LogMessageType
import java.awt.Taskbar
import java.awt.Toolkit
import java.io.File import java.io.File
import java.net.URL import java.net.URL
import java.nio.file.Path import java.nio.file.Path
object DesktopUtil { object DesktopUtil {
val ICON = minosoft("icons/window_icon").texture()
fun openURL(url: URL) { fun openURL(url: URL) {
if (RunConfiguration.DISABLE_EROS) { if (RunConfiguration.DISABLE_EROS) {
@ -57,4 +64,21 @@ object DesktopUtil {
exception.printStackTrace() 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()
}
}
} }