https://github.com/winder/universal-g-code-sender
A cross-platform G-Code sender for GRBL, Smoothieware, TinyG and G2core.
https://github.com/winder/universal-g-code-sender
cnc g2core gcode gcode-editor gcode-parser gcode-sender gcode-viewer grbl grbl-control hacktoberfest java smoothieware tinyg
Last synced: 7 days ago
JSON representation
A cross-platform G-Code sender for GRBL, Smoothieware, TinyG and G2core.
- Host: GitHub
- URL: https://github.com/winder/universal-g-code-sender
- Owner: winder
- License: gpl-3.0
- Created: 2012-06-26T22:30:07.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2025-04-25T05:05:24.000Z (26 days ago)
- Last Synced: 2025-04-25T06:20:33.005Z (26 days ago)
- Topics: cnc, g2core, gcode, gcode-editor, gcode-parser, gcode-sender, gcode-viewer, grbl, grbl-control, hacktoberfest, java, smoothieware, tinyg
- Language: Java
- Homepage: http://winder.github.io/ugs_website/
- Size: 67.2 MB
- Stars: 1,998
- Watchers: 168
- Forks: 776
- Open Issues: 180
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: COPYING
Awesome Lists containing this project
README

[](https://github.com/winder/Universal-G-Code-Sender/commits/master)
[](https://github.com/winder/Universal-G-Code-Sender/actions/workflows/nightly.yaml)
[](https://codebeat.co/projects/github-com-winder-universal-g-code-sender-master)
[](https://translate.universalgcodesender.com/project/universalgcodesender)
[](https://github.com/winder/Universal-G-Code-Sender#downloads)
[](https://github.com/winder/Universal-G-Code-Sender/releases)
[](https://discord.com/invite/4DYywtyGYK)Universal G-Code Sender is a Java based, cross platform G-Code sender, compatible with [GRBL](https://github.com/gnea/grbl/), [TinyG](https://github.com/synthetos/TinyG), [g2core](https://github.com/synthetos/g2) and [Smoothieware](http://smoothieware.org/).
Webpage: https://universalgcodesender.com/
Discussion forum: https://github.com/winder/Universal-G-Code-Sender/discussions
Discord chat: https://discord.com/invite/4DYywtyGYK
Translations: https://translate.universalgcodesender.com/Technical details:
* [JSSC](https://github.com/scream3r/java-simple-serial-connector) or [JSerialComm](https://github.com/Fazecast/jSerialComm) for serial communication
* [JogAmp](https://jogamp.org/) for OpenGL
* [Netbeans Platform](https://netbeans.org/features/platform/)
* [JTS](https://github.com/locationtech/jts) for geometric transformations
* [Batik](https://xmlgraphics.apache.org/batik/) for reading SVG## Downloads
Below you will find the latest release of UGS.
For older releases please visit the [releases page](https://github.com/winder/Universal-G-Code-Sender/releases).**UGS Platform**
The next generation, feature packed variant based on the Netbeans Platform.
Unpack and start the program ```bin/ugsplatform```| Latest release (v2.1.13) | Nightly build |
|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [ Windows 64-bit](https://github.com/winder/Universal-G-Code-Sender/releases/download/v2.1.13/win64-ugs-platform-app-2.1.13.zip) | [ Windows 64-bit](https://github.com/winder/Universal-G-Code-Sender/releases/download/nightly/win64-ugs-platform-app-2.0-SNAPSHOT.zip) |
| [ Mac OSX](https://github.com/winder/Universal-G-Code-Sender/releases/download/v2.1.13/macosx-x64-ugs-platform-app-2.1.13.dmg) | [ Mac OSX](https://github.com/winder/Universal-G-Code-Sender/releases/download/nightly/macosx-x64-ugs-platform-app-2.0-SNAPSHOT.dmg) |
| [ Mac OSX ARM64](https://github.com/winder/Universal-G-Code-Sender/releases/download/v2.1.13/macosx-aarch64-ugs-platform-app-2.1.13.dmg) | [ Mac OSX ARM64](https://github.com/winder/Universal-G-Code-Sender/releases/download/nightly/macosx-aarch64-ugs-platform-app-2.0-SNAPSHOT.dmg) |
| [ Linux 64-bit](https://github.com/winder/Universal-G-Code-Sender/releases/download/v2.1.13/linux-x64-ugs-platform-app-2.1.13.tar.gz) | [ Linux 64-bit](https://github.com/winder/Universal-G-Code-Sender/releases/download/nightly/linux-x64-ugs-platform-app-2.0-SNAPSHOT.tar.gz) |
| [ Linux ARM](https://github.com/winder/Universal-G-Code-Sender/releases/download/v2.1.13/linux-arm-ugs-platform-app-2.1.13.tar.gz) | [ Linux ARM](https://github.com/winder/Universal-G-Code-Sender/releases/download/nightly/linux-arm-ugs-platform-app-2.0-SNAPSHOT.tar.gz) |
| [ Linux ARM64](https://github.com/winder/Universal-G-Code-Sender/releases/download/v2.1.13/linux-aarch64-ugs-platform-app-2.1.13.tar.gz) | [ Linux ARM64](https://github.com/winder/Universal-G-Code-Sender/releases/download/nightly/linux-aarch64-ugs-platform-app-2.0-SNAPSHOT.tar.gz) |
| [ All platforms](https://github.com/winder/Universal-G-Code-Sender/releases/download/v2.1.13/ugs-platform-app-2.1.13.zip) | [ All platforms](https://github.com/winder/Universal-G-Code-Sender/releases/download/nightly/ugs-platform-app-2.0-SNAPSHOT.zip) |**UGS Classic**
A clean and lightweight variant of UGS (requires [Java 17](https://adoptium.net/temurin/releases/?package=jre&version=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.13) | Nightly build |
|:----------------------------------------------------------------------------------------------------------------------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------|
| [ All platforms](https://github.com/winder/Universal-G-Code-Sender/releases/download/v2.1.13/UniversalGcodeSender.zip) | [ All platforms](https://github.com/winder/Universal-G-Code-Sender/releases/download/nightly/UniversalGcodeSender.zip) |## Screenshots
### UGS Platform
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
UGS Classic main window

UGS Classic with visualizer

## Development
Show details on how to compile the softwareFor 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## Supported by
[](https://jb.gg/OpenSourceSupport)