https://kotlinlang.org logo
Join Slack
Powered by
# compose-desktop
  • b

    bj0

    09/09/2025, 10:07 PM
    I copied the tooltip example to add some tooltips, and now when i move my mouse across the items that have tooltips, i get a flood of tooltips that just sit on the screen
    • 1
    • 2
  • j

    Janne Mareike Koschinski

    09/10/2025, 11:43 AM
    I can't figure out how I'd implement the "tab enters group, arrow keys move focus within group" behavior in my compose desktop application, while still allowing the children to be visible (and focusable) via accessibility tools. I'm talking about the focus behavior that e.g. the room list of Slack/Teams has, or that's typical e.g. in Win32, Qt or Cocoa apps. The samples tell me I'd have to manually wire up all the next/prev/left/right/up/down focus targets, but I can't really know which those are in an individual component. I could disable focus for all the list items, and only enable focus on the parent item, but then I'd also lose most of the accessibility interaction, right?
    👀 1
    a
    • 2
    • 36
  • w

    wwalkingg

    09/11/2025, 5:09 AM
    I update nav3-about versions. New error occurred.
    Copy code
    navigation3UI = "1.0.0+dev2932"
    navigation3Runtime = "1.0.0-alpha09"
    
    composeMultiplatform = "1.10.0+dev2932"
    error is `java.lang.NoClassDefFoundError: androidx/navigation3/runtime/DecoratedNavEntryProviderKt at androidx.navigation3.ui.NavDisplayKt.NavDisplay(NavDisplay.kt:181)`
    e
    • 2
    • 5
  • n

    Nathan Fallet

    09/12/2025, 7:15 PM
    Anyone already encountered issues with button where you have to click like twice for the click to go?
    a
    a
    • 3
    • 12
  • u

    אליהו הדס

    09/15/2025, 8:56 AM
    Hi Jetbrains, does this project aim to port Compose Desktop to Kotlin Native 🤩 ? https://github.com/JetBrains/kotlin-desktop-toolkit
    👀 5
    k
    g
    t
    • 4
    • 23
  • u

    אליהו הדס

    09/16/2025, 6:03 PM
    Hi everyone, I’ve been working on accessibility with Compose for Desktop (macOS + Windows) and I noticed the following issue: • On macOS with VoiceOver, when focusing a
    TextField
    , neither the
    label
    parameter nor
    .semantics { contentDescription = ... }
    is read aloud. • On Windows with NVDA, the label is correctly read. • For error messages (e.g. “wrong password”), even when displaying them in a
    BasicTextField
    , they are not announced by the screen reader. They are only read if focus is moved manually (with some hacks). On Android, there is
    LocalAccessibilityManager.announceForAccessibility(...)
    which allows announcing messages like errors. But this doesn’t exist on Desktop, and it seems impossible to announce such errors today. Is there a recommended way to make error messages (or dynamic text changes) announced by VoiceOver/NVDA on Desktop? If not, would JetBrains be open to contributions in this area? Related issue: https://youtrack.jetbrains.com/issue/CMP-2136 Thanks!
    a
    • 2
    • 3
  • m

    martmists

    09/17/2025, 3:46 PM
    I'd like to serialize my app state such that upon close/reopen it restores the state as it was left. How would I realistically accomplish this? I tried making a variety of things @Serializable, but a bunch of things like MutableState are not really compatible with this, not to mention I'd have to run a save on a loop rather than after every change to the program's state.
    z
    • 2
    • 13
  • s

    Stefan Oltmann

    09/19/2025, 10:19 AM
    I'm struggling with something that looks like a bug to me... I have a Compose Desktop app for JVM (
    kotlin("jvm")
    )
    Setting the icon like this works:
    Copy code
    windows {
      iconFile.set(project.file("src/main/resources/icon.ico"))
    }
    It stops working if I set additionally a appResourcesRootDir:
    Copy code
    appResourcesRootDir.set(
      rootProject.layout.projectDirectory.dir("resources")
    )
    The issue: The EXE has an icon, but it's missing in the taskbar. It's the Java Duke there. It only affects Windows. For macOS it still works. How can I fix this? Edit: Nevermind. It's a bug in connect2x/sysnotify
    s
    • 2
    • 23
  • s

    Sebastian Sellmair [JB]

    09/19/2025, 3:03 PM
    Hot Reload Beta08 just dropped and I am very proud of all the progress we made 🙇 https://github.com/JetBrains/compose-hot-reload/releases/tag/v1.0.0-beta08 We added new 'Reload Effects' and I would really be interested in opinions! Thanks a lot to @maiatoday for inspiring us to do this with her talk! Contributions Welcome & Own Effects can be built as well 👀
    Screen Recording 2025-09-19 at 09.09.15.mov
    🙌🏻 3
    😍 10
    🙌🏾 2
    🙌 15
    s
    j
    +3
    • 6
    • 14
  • a

    Alex Styl

    09/20/2025, 5:59 AM
    Can someone share a video of installing a packaged compose desktop app on linux? Don't have a linux machine to test. My main concern shipping to linux is the installation process
    m
    j
    d
    • 4
    • 11
  • v

    v79

    09/21/2025, 7:00 PM
    I am getting a crash with KMP and the Material3 date picker. Pretty easy to replicate - just add
    val dpState = rememberDatePickerState()
    to any composable function and it will crash during composition - error is
    Caused by: java.lang.ClassNotFoundException: kotlinx.datetime.Clock$System
    . My project does include
    kotlinx.datetime
    and I use it elsewhere. The same code works on Android. I can produce different errors by varying the parameters in the call to
    rememberDatePickerState()
    .
    o
    f
    s
    • 4
    • 5
  • e

    eygraber

    09/25/2025, 6:50 PM
    Is there a planned release for CMP that uses the stable 1.4.0 material3?
    i
    • 2
    • 2
  • a

    adte

    09/25/2025, 10:28 PM
    What's the best way to profile a Compose jvm app?
    j
    s
    • 3
    • 2
  • a

    adte

    09/25/2025, 10:29 PM
    Something like perfetto would be ideal
  • g

    george

    09/29/2025, 8:32 AM
    Hi, I’m trying out Compose Multiplatform Hot Reload in a multi-module project. I’ve got a desktop app module that depends on another module. Hot reload works fine when I change code in the desktop module itself. But if I change code only in the dependency module, nothing happens unless I also change the desktop code (e.g. add a line) so the compiler notices. Is there a way to get hot reload to notice changes in the dependent module directly? Or is this just a current limitation?
    z
    s
    • 3
    • 8
  • m

    Marcin Wisniowski

    09/30/2025, 11:27 AM
    Is there any tooling available to see recompositon counts, similar to how Layout Inspector shows them for Android projects?
    a
    • 2
    • 2
  • r

    rebok

    09/30/2025, 7:26 PM
    Is it possible to enable the swipe gesture for the horizontal pager on desktop ?
  • u

    Umid Olimzhanov

    10/05/2025, 6:11 AM
    Is there any progress in compose native for windows?
    🚫 1
    s
    s
    h
    • 4
    • 6
  • s

    Sebastian Sellmair [JB]

    10/06/2025, 3:16 PM
    Hot Reload version 1.0.0-rc01 released 🎆 🔥 We have many improvements in mind, but we really want to commit to a given user experience and target stable soon ™️ https://github.com/JetBrains/compose-hot-reload/releases/tag/v1.0.0-rc01
    compose hot reload 11
    ❤️ 9
    🔥 26
  • a

    Alex Styl

    10/08/2025, 5:56 AM
    is there a way to get the AWT window in a compose test? I want to fire a 'Escape' press without any of my composables having focus inb4 why: I am building tooltips. they need to be dismissed on Escape and can be shown when an area is hovered (not focused)
    s
    a
    • 3
    • 4
  • r

    Robert Munro

    10/08/2025, 7:47 PM
    Hi everyone, I am getting a strange configuration error below for my desktop app on windows only (mac/linux fine) - was working fine until yesterday. i am on:
    Copy code
    kotlin = "2.1.21"
    compose = "1.9.0"
    composeMultiplatform = "1.9.0"
    The file does not exist
    ActualResourceCollectors.kt
    - the whole build folder is empty except for one empty folder
    hub/build/generated/compose/resourceGenerator/kotlin/mainResourceCollectors
    Copy code
    generateActualResourceCollectorsForMain task was failed:
    java.nio.file.InvalidPathException: Illegal char <?> at index 9: provider(?)/hub/generated/resources/ActualResourceCollectors.kt
    	at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:204)
    	at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:175)
    	at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
    	at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
    	at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:231)
    	at java.base/java.nio.file.Path.resolve(Path.java:516)
    Thread in Slack Conversation
  • u

    אליהו הדס

    10/09/2025, 7:56 AM
    Hi, I have a project that only targets desktop, the previews work but don't refresh when I modify the code, is this normal?
  • t

    Trejkaz

    10/11/2025, 7:36 PM
    loadImageBitmap(InputStream)
    is deprecated. The replacement is the resource API, which is fine for resources, but what if I want to load a user-provided image?
    e
    m
    • 3
    • 19
  • t

    Trejkaz

    10/12/2025, 2:55 PM
    just overflowing to two rows of text is enough to break the centre alignment
    j
    e
    • 3
    • 7
  • a

    adte

    10/15/2025, 12:18 AM
    Do you guys have some pointers on how to profile a Compose jvm app with YourKit? I'm not sure how to figure out the optimization opportunities for my app - a lot of the methods it's showing are related to coroutines or the compose runtime. Should I exclude these methods from the trace, since they're from the runtime? how do I link back to the app code?
  • u

    ursus

    10/15/2025, 2:38 AM
    Would running android’s R8 over a compose desktop jar help anything perf wise?
    j
    c
    • 3
    • 25
  • v

    v79

    10/15/2025, 5:44 AM
    I've added a
    ToolTipArea
    to a button on a compose desktop application. It works fine in the running application, but the preview compilation fails -
    Unresolved reference 'TooltipArea'
    . Is this something I need to do with expect/actual? Or have I found a bug? I've just updated to compose multiplatform 1.9.1.
    • 1
    • 1
  • u

    ursus

    10/15/2025, 4:45 PM
    Is there a way to speed up start of
    compose desktop
    app? Other then doing less at the start of app - I mean if there isn't some sort of
    release
    flag which turns on optimizations like there is on android
  • u

    ursus

    10/15/2025, 11:57 PM
    Copy code
    plugins {
        id "org.jetbrains.kotlin.jvm" version "2.2.20"
        id "org.jetbrains.kotlin.plugin.compose" version "2.2.20"
        id "org.jetbrains.compose" version "1.9.1"
    }
    
    //
    //
    //
    fun main(args: Array<String>) = singleWindowApplication {
        AppTheme {
            ...
        }
    }
    
    @Composable
    fun AppTheme(content: @Composable () -> Unit) {
        MaterialTheme(
            colors = if (isSystemInDarkTheme()) { <-----------------------
                darkColors()
            } else {
                lightColors()
            },
        ) {
            Surface(color = MaterialTheme.colors.background, content = content)
        }
    }
    Why is the compose desktop app not reacting to dark mode changes? I'm testing on
    mac os
    and
    windows
    , and when I toggle the system setting it does nothing. After restart it picks up the current setting but not during runtime. Is this known?
    z
    a
    • 3
    • 7
  • d

    dhia chemingui

    10/16/2025, 3:56 PM
    Hi Folks. I have question How I could extract glyphs paths as compose paths from fonts using jetbrains skia or even compose . Or its impossible ? I try to load typface with skiko typface but there is no api provided for that so I try TypefaceFontProvider but it does not work the data loaded as byte but when asign it the typface is null .
    Copy code
    val provider = TypefaceFontProviderWithFallback()
    
    val data = Data.makeFromBytes(Res.readBytes("font/cairomedium.ttf"))
    
    val typeface = provider.makeFromData(data)
    k
    • 2
    • 1