Universal G-Code Sender is a Java based, cross platform G-Code sender, compatible with GRBL, TinyG, g2core and Smoothieware.
Webpage: https://universalgcodesender.com/
Discussion forum: https://github.com/winder/Universal-G-Code-Sender/discussions
Translations: https://poeditor.com/join/project/2J2hB5I41Z
Technical details:
Below you will find the latest release of UGS.
For older releases please visit the releases page.
UGS Platform
The next generation, feature packed variant based on the Netbeans Platform.
Unpack and start the program bin/ugsplatform
Latest release (v2.1.7) | Nightly build |
---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
UGS Classic
A clean and lightweight variant of UGS (requires Java 17).
Unpack and start the program by double clicking the jar file. On some platforms you may need to run the included start script.
Latest release (v2.1.7) | Nightly build |
---|---|
![]() |
![]() |
UGS Platform main window
Customizable panel layout
Menu actions with customizable keybindings
Menu with plugins
One of many plugins
Basic gcode editor
Vector graphics designer for generating GCode toolpaths
UGS Classic main window
UGS Classic with visualizer
For development we use [Maven](http://maven.apache.org) and [Java 17](https://adoptium.net/) for compiling. #### Compiling and starting the application UGS Classic: ```bash mvn install mvn exec:java -Dexec.mainClass="com.willwinder.universalgcodesender.MainWindow" -pl ugs-core ``` UGS Platform: ```bash mvn install mvn nbm:run-platform -pl ugs-platform/application ``` #### Execute all tests ```bash mvn test ``` #### Building the self-executing JAR ```bash mvn install mvn package -pl ugs-classic ``` #### Build a UniversalGcodeSender.zip release file ```bash mvn package -pl ugs-classic assembly:assembly ``` #### Develop via IntelliJ If you are more used to IntelliJ, you can also build, run and debug it there. - Run `mvn nbm:run-platform -pl ugs-platform/application` once via terminal to build everything - Import the Source, `File` -> `New` -> `Project from existing Sources` - Setup a new "Run Configuration", `Java Application`, with following settings: - Main Class: `org.netbeans.Main` - VM Options: ``` -Dpolyglot.engine.WarnInterpreterOnly=false -Dnetbeans.user=$ProjectFileDir$/ugs-platform/application/target/userdir -Dnetbeans.home=$ProjectFileDir$/ugs-platform/application/target/ugsplatform/platform -Dnetbeans.logger.console=true -Dnetbeans.indexing.noFileRefresh=true -Dnetbeans.moduleitem.dontverifyclassloader=true -Dnetbeans.dirs=$ProjectFileDir$/ugs-platform/application/target/ugsplatform/ugsplatform:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/platform:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/ide:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/extra:$ProjectFileDir$/ugs-platform/application/target/ugsplatform/java --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=java.base/java.lang.ref=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-exports=java.base/sun.reflect.annotation=ALL-UNNAMED --add-opens=java.prefs/java.util.prefs=ALL-UNNAMED --add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED --add-opens=java.desktop/javax.swing.text=ALL-UNNAMED --add-opens=java.desktop/javax.swing=ALL-UNNAMED --add-opens=java.desktop/java.awt=ALL-UNNAMED --add-opens=java.desktop/java.awt.event=ALL-UNNAMED --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED --add-opens=java.desktop/javax.swing.plaf.synth=ALL-UNNAMED --add-opens=java.desktop/com.sun.java.swing.plaf.gtk=ALL-UNNAMED --add-opens=java.desktop/sun.awt.shell=ALL-UNNAMED --add-opens=java.desktop/sun.awt.im=ALL-UNNAMED --add-exports=java.desktop/sun.awt=ALL-UNNAMED --add-exports=java.desktop/java.awt.peer=ALL-UNNAMED --add-exports=java.desktop/com.sun.beans.editors=ALL-UNNAMED --add-exports=java.desktop/sun.swing=ALL-UNNAMED --add-exports=java.desktop/sun.awt.im=ALL-UNNAMED --add-exports=java.desktop/com.sun.java.swing.plaf.motif=ALL-UNNAMED ``` - Program arguments: `--branding ugsplatform` - Working dir: `$ProjectFileDir$` - Use classpath of module: `ugs-platform-app` - There is a [runConfiguration](.idea/runConfigurations/UGS_Platform.xml) in the repository, which should be available after importing the project