Home

Awesome

Universal G-Code Sender

Last commit Build Status Codebeat badge Crowdin Downloads Releases

Universal G-Code Sender is a Java based, cross platform G-Code sender, compatible with GRBL, TinyG, g2core and Smoothieware.

Webpage: https://universalgcodesender.com/ <br/> Discussion forum: https://github.com/winder/Universal-G-Code-Sender/discussions <br/> Discord chat: https://discord.gg/h4HRmyYX <br/> Translations: https://poeditor.com/join/project/2J2hB5I41Z <br/>

Technical details:

Downloads

Below you will find the latest release of UGS.<br/> For older releases please visit the releases page.

UGS Platform<br> The next generation, feature packed variant based on the Netbeans Platform.<br> Unpack and start the program bin/ugsplatform

Latest release (v2.1.9)Nightly build
Windows 64-bit Windows 64-bitWindows 64-bit Windows 64-bit
Mac OSX Mac OSXMac OSX Mac OSX
Mac OSX Mac OSX ARM64Mac OSX ARM64 Mac OSX ARM64
Linux x64 Linux 64-bitLinux x64 Linux 64-bit
Linux ARM Linux ARMLinux ARM Linux ARM
Linux ARM Linux ARM64Linux ARM Linux ARM64
Zip All platformsZip All platforms

UGS Classic<br> A clean and lightweight variant of UGS (requires Java 17). <br> Unpack and start the program by double clicking the jar file. On some platforms you may need to run the included start script. <br>

Latest release (v2.1.8)Nightly build
Zip All platformsZip All platforms

Screenshots

UGS Platform

UGS Platform main window

UGS Platform

Customizable panel layout

Customizable panel layout

Menu actions with customizable keybindings

Actions

Menu with plugins

Plugins

One of many plugins

Dowel Maker

Basic gcode editor

Basic gcode editor

Vector graphics designer for generating GCode toolpaths

Designer

UGS Classic

UGS Classic main window

Classic main window

UGS Classic with visualizer

Classic visualizer

Development

<details><summary>Show details on how to compile the software</summary> <p>

For development we use Maven and Java 17 for compiling.

Compiling and starting the application

UGS Classic:

mvn install
mvn exec:java -Dexec.mainClass="com.willwinder.universalgcodesender.MainWindow" -pl ugs-core

UGS Platform:

mvn install
mvn nbm:run-platform -pl ugs-platform/application

Execute all tests

mvn test

Building the self-executing JAR

mvn install
mvn package -pl ugs-classic

Build a UniversalGcodeSender.zip release file

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.

-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
</p> </details>