From fe46a32eba1213bb4f95cead282dfb0d7bc890d1 Mon Sep 17 00:00:00 2001 From: Cilly Leang Date: Sat, 31 Jan 2026 14:55:36 +1100 Subject: [PATCH] feat(ui/jvm): support system scaling --- ui/src/jvmMain/kotlin/moe/lava/neon/main.kt | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/ui/src/jvmMain/kotlin/moe/lava/neon/main.kt b/ui/src/jvmMain/kotlin/moe/lava/neon/main.kt index 27c77b5..0db2ea1 100644 --- a/ui/src/jvmMain/kotlin/moe/lava/neon/main.kt +++ b/ui/src/jvmMain/kotlin/moe/lava/neon/main.kt @@ -1,14 +1,29 @@ package moe.lava.neon +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.Density import androidx.compose.ui.window.Window import androidx.compose.ui.window.application import moe.lava.neon.ui.App +// The UI is designed with touchscreens in mind; on desktop elements may look gigantic +// So scale them down a bit +const val scaleFactor = 0.75f + fun main() = application { Window( onCloseRequest = ::exitApplication, title = "Neon", ) { - App() + val systemScale = System.getenv("GDK_SCALE")?.toFloatOrNull() ?: 1f + val systemDpiScale = System.getenv("GDK_DPI_SCALE")?.toFloatOrNull() ?: 1f + val density = Density( + density = LocalDensity.current.density * systemScale * scaleFactor, + fontScale = systemDpiScale + ) + CompositionLocalProvider(LocalDensity provides density) { + App() + } } }