Metadata-Version: 2.4
Name: rayforge
Version: 1.1.1
Summary: A desktop application for laser cutting and engraving
Author-email: Samuel Abels <knipknap@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/barebaric/rayforge
Project-URL: Bug Tracker, https://github.com/barebaric/rayforge/issues
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: POSIX :: Linux
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: Manufacturing
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: aiohttp==3.13.3
Requires-Dist: asyncudp==0.11.0
Requires-Dist: blinker==1.9.0
Requires-Dist: ezdxf==1.3.5
Requires-Dist: GitPython==3.1.44
Requires-Dist: numpy==2.3.4
Requires-Dist: opencv_python
Requires-Dist: platformdirs==4.3.6
Requires-Dist: pluggy==1.6.0
Requires-Dist: pycairo==1.28.0
Requires-Dist: pyclipper==1.3.0.post6
Requires-Dist: PyGObject==3.50.0
Requires-Dist: PyOpenGL==3.1.10
Requires-Dist: PyOpenGL_accelerate==3.1.10
Requires-Dist: pypdf==6.7.2
Requires-Dist: pyserial_asyncio==0.6
Requires-Dist: pyvips==3.0.0
Requires-Dist: PyYAML==6.0.2
Requires-Dist: scipy==1.16.3
Requires-Dist: semver==3.0.2
Requires-Dist: svgelements==1.9.6
Requires-Dist: vtracer==0.6.11
Requires-Dist: websockets==14.2
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-asyncio; extra == "test"
Requires-Dist: pytest-mock; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: pygobject-stubs; extra == "test"
Dynamic: license-file

[![GitHub Release](https://img.shields.io/github/release/barebaric/rayforge.svg?style=flat)](https://github.com/barebaric/rayforge/releases/)
[![PyPI version](https://img.shields.io/pypi/v/rayforge)](https://pypi.org/project/rayforge/)
[![Snap Release](https://snapcraft.io/rayforge/badge.svg)](https://snapcraft.io/rayforge)
[![Launchpad PPA](https://img.shields.io/badge/PPA-blue)](https://launchpad.net/~knipknap/+archive/ubuntu/rayforge)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

[![Get it from the Snap Store](https://snapcraft.io/en/light/install.svg)](https://snapcraft.io/rayforge)
<a href="https://flathub.org/apps/org.rayforge.rayforge"><img alt="Get it from Flathub" src="website/static/images/flathub-badge.svg" height="55"/></a>
<a href="https://www.patreon.com/c/knipknap"><img src="https://c5.patreon.com/external/logo/become_a_patron_button.png" alt="Become a Patron" height="55"/></a>

# Rayforge

Rayforge is a modern, cross-platform 2D CAD, G-code sender and control software for GRBL-based laser cutters and engravers.
Built with Gtk4 and Libadwaita, it provides a clean, native interface for Linux and Windows, offering a full suite of tools
for both hobbyists and professionals.

<p align="center">
  <img src="website/static/assets/icon.svg" />
</p>

![Screenshot](website/static/screenshots/main-standard.png)

You can also check the [official Rayforge homepage](https://rayforge.org).
We also have a [Discord](https://discord.gg/sTHNdTtpQJ).


## Key Features

| Feature                      | Description                                                                                                      |
| :--------------------------- | :--------------------------------------------------------------------------------------------------------------- |
| **Modern UI**                | Polished and modern UI built with Gtk4 and Libadwaita. Supports system, light, and dark themes.                  |
| **Parametric Sketch Editor** | Create precise, constraint-based 2D designs with geometric and dimensional constraints.                          |
| **Multi-Layer Operations**   | Assign different operations (e.g., engrave then cut) to layers in your design.                                   |
| **Versatile Operations**     | Supports Contour, Raster Engraving (with cross-hatch fill), Shrink Wrap, and Depth Engraving.                    |
| **Overscan & Kerf Comp.**    | Improve engraving quality with overscan and ensure dimensional accuracy with kerf compensation.                  |
| **2.5D Cutting**             | Perform multi-pass cuts with a configurable step-down between each pass for thick materials.                     |
| **3D G-code Preview**        | Visualize G-code toolpaths in 3D to verify the job before sending it to the machine.                             |
| **Multi-Machine Profiles**   | Configure and instantly switch between multiple machine profiles.                                                |
| **GRBL Firmware Settings**   | Read and write firmware parameters (`$$`) directly from the UI.                                                  |
| **Comprehensive 2D Canvas**  | Full suite of tools: alignment, transformation, measurement, zoom, pan, and more.                                |
| **Advanced Path Generation** | High-quality image tracing, travel time optimization, path smoothing, and spot size interpolation.               |
| **Holding Tabs**             | Add tabs to contour cuts to hold pieces in place. Supports manual and automatic placement.                       |
| **G-code Macros & Hooks**    | Run custom G-code snippets before/after jobs. Supports variable substitution.                                    |
| **Broad File Support**       | Import from SVG, DXF, PDF, JPEG, PNG, BMP, and even Ruida files (`.rd`).                                         |
| **Multi-Laser Operations**   | Choose different lasers for each operation in a job                                                              |
| **Camera Integration**       | Use a USB camera for workpiece alignment, positioning, and background tracing.                                   |
| **Cross-Platform**           | Native builds for Linux and Windows.                                                                             |
| **Extensible**               | Open development model makes it easy to [add support for new devices](website/docs/developer/driver.md). |
| **Multi-Language**           | Available in English, Portuguese, Spanish, German, French, and Chinese.                                          |
| **G-code Dialects**          | Supports GRBL, Smoothieware, and other GRBL-compatible firmwares.                                                |

## Device Support

| Device Type      | Connection Method       | Notes                                                          |
| :--------------- | :---------------------- | :------------------------------------------------------------- |
| **GRBL**         | Serial Port             | Supported since version 0.13. The most common connection type. |
| **GRBL**         | Network (WiFi/Ethernet) | Connect to any GRBL device on your network.                    |
| **Smoothieware** | Telnet                  | Supported since version 0.15.                                  |

## Installation

For installation instructions [refer to our homepage](https://rayforge.org/docs/getting-started/installation).

## Development

For detailed information about developing for Rayforge, including setup instructions,
testing, and contribution guidelines, please see the
[Developer Documentation](https://rayforge.org/docs/latest/developer/getting-started/).

## License

This project is licensed under the **MIT License**. See the `LICENSE` file for details.
