LucreSwing is a Scala library which bridges between Swing (through the Desktop project) and Lucre. It is (C)opyright 2014–2021 by Hanns Holger Rutz. All rights reserved. The project is released under the GNU Affero General Public License v3+ and comes with absolutely no warranties. To contact the author, send an e-mail to
contact at sciss.de.
requirements / building
This project builds with sbt against Scala 2.12, 2.13, Dotty (JVM) and Scala 2.13 (JS). The last version to support Scala 2.11 was 1.17.2.
To use the library in your project:
"de.sciss" %% "lucre-swing" % v
The current version
Note that you cannot compile with the combination of Dotty and JDK 9 or greater, because the
-release scalac option is not supported.
Please see the file CONTRIBUTING.md
The desktop application's widgets in package
de.sciss.lucre.swing are not available on Scala.js. Instead, the graph construction element in
de.sciss.lucre.swing.graph are (with few unsupported exceptions) available both for the JVM and for JS, making it thus possible to render the
Widget contents both on the desktop and inside the browser.
We have yet to determine how to "export" a widget to Scala.js. For an example and minimum CSS, see SoundProcessesJSTest.
The following graph elements are currently not supported in Scala.js:
PathField(the peer still uses
There is a bug in sbt-crossproject, when running
sbt +publishSigned we end up with error "Repository for publishing is not specified." Instead, sbt has to be run with
sbt +rootJVM/publishSigned +rootJS/publishSigned.
- collapse multiple undoable edits, especially with things like slider movements which produce many subsequent and related edits
- Scala.js rendering: styling - have a look at https://css-tricks.com/custom-styling-form-inputs-with-modern-css-features/