For a desktop app with Scala on the JVM, you can look into ScalaFX, a thin Scala wrapper around JavaFX. I’ve used it a bit and it seems to work fine, and seems quite a bit nicer to use than older Java GUI frameworks (like Swing) from what I’ve seen. There are a few drawbacks to keep in mind:
- Oracle no longer seems particularly interested in developing JavaFX (although it’s now an open source project, so it won’t just disappear overnight);
- ScalaFX certainly doesn’t have a large community around it;
- While ScalaFX makes the JavaFX APIs a lot more Scala-friendly, the basic paradigm still clearly comes from the Java world.
Another alternative would probably be to write a web GUI (with Scala.js) but package it as a desktop application with something like Electron. I haven’t seen examples of doing that with Scala.js yet, so I can’t help with that, but it certainly should work?