{"id":30039221,"url":"https://github.com/sagebox/sagebox-rs","last_synced_at":"2025-08-07T01:37:00.874Z","repository":{"id":301467337,"uuid":"1008735411","full_name":"Sagebox/Sagebox-rs","owner":"Sagebox","description":"Rust Procedural GUI for creative development, with easy-to-use graphical controls for general development.","archived":false,"fork":false,"pushed_at":"2025-07-29T19:00:06.000Z","size":43581,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-07T01:36:59.879Z","etag":null,"topics":["creative-coding","desktop-gui","developer-tools","gui","gui-toolkit","library","rapid-prototyping","rust","rust-community","rust-crate","rust-graphics","rust-graphics-optimization","rust-gui","rust-lang","rust-library","rust-visual","rustlang"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sagebox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-26T02:45:51.000Z","updated_at":"2025-07-29T19:00:09.000Z","dependencies_parsed_at":"2025-06-27T03:29:05.874Z","dependency_job_id":"5cad2849-7f1c-4284-90c3-f23528327d02","html_url":"https://github.com/Sagebox/Sagebox-rs","commit_stats":null,"previous_names":["sagebox/sagebox-rs"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Sagebox/Sagebox-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagebox%2FSagebox-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagebox%2FSagebox-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagebox%2FSagebox-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagebox%2FSagebox-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sagebox","download_url":"https://codeload.github.com/Sagebox/Sagebox-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sagebox%2FSagebox-rs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269185683,"owners_count":24374625,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-06T02:00:09.910Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["creative-coding","desktop-gui","developer-tools","gui","gui-toolkit","library","rapid-prototyping","rust","rust-community","rust-crate","rust-graphics","rust-graphics-optimization","rust-gui","rust-lang","rust-library","rust-visual","rustlang"],"created_at":"2025-08-07T01:36:56.794Z","updated_at":"2025-08-07T01:37:00.864Z","avatar_url":"https://github.com/Sagebox.png","language":"Rust","funding_links":["https://github.com/sponsors/Sagebox"],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eSagebox for Rust\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n   \u003cimg src=\"https://user-images.githubusercontent.com/70604831/174466253-c4310d66-c687-4864-9893-8f0f70dd4084.png\"\u003e\n\u003c/p\u003e\n\n\n# A High-Performance, Procedural GUI Designed for Rapid, Creative Development\n\n### Write plain linear, procedural code with no boilerplate.\n\nSagebox was created to make it easy to develop full-scale, procedural applications with advanced GUI controls, while also bringing back the simplicity of creating fun-with-graphics programs.\n\nWith simple, linear code, Sagebox lets you create windows, GUI controls and graphical output, without any boilerplate or the overhead of an event-driven framework.\n\nBuilt from scratch as a cross-platform, comprehensive GUI, Sagebox supports everything from advanced GUI applications to simple creative and educational programs, as well as console-mode projects with drop-in GUI controls. Sagebox uses a persistent GUI model, which is similar to a retained model, but manages redraws and interface state for your program.\n\nSagebox is also designed for hobbyist, educational and creative use, enabling rapid prototyping and creative development without the need to write a lot of interface code just to add a button, slider, or other control (or to remove them).\n\n\u003e Sagebox has been used professionally in the tech industry by companies like Pentair and Pioneer, and most recently in the semiconductor field at ASML, where it was called “that magic program.” \u003cbr\u003e \n\n[Click here to see examples on Youtube](https://www.youtube.com/@projectsagebox)\n   \u003cbr\u003e\n## Scalable, Easy-to-Use Procedural GUI Tools\n\nSagebox is a procedural-first GUI toolkit that lets you build console-mode programs or full graphical applications using straightforward, linear code. \n\nTools and Controls in Sagebox start simple and can scale as you want to do more.  Additional options for more complexity can be added in as needed through the use of keywords in the function call.\n\nSagebox manages its own environment, so you don't have to keep track of any of the controls or widgets that are launched, unless you want to.\n\n\u003e Although this page focuses on procedural examples, Sagebox fully supports event-driven programming for applications built around (or that prefer) that model, and is designed to fully support both models depending on the design of your program.\n\n\n\u003e **note**: This Windows preview showcases Sagebox's core architecture as Rust migration continues, with Linux support coming soon.  The Windows version is fully functional — please feel free to explore it and share feedback as development continues\u003cbr /\u003e  See [Sagebox Roadmap](#sagebox-roadmap)  and - [About This Release](#about-this-release--preview-version-and-rust-migration) for details.\n\n## Quick Examples (Sagebox in a Nutshell)\n\nTo create quick controls such as buttons, sliders, or text widgets, etc., this is typically done with two lines of code: one line to define the control, and one line to use it.\n\nFor example, if you want a slider and a button, all you need are these two lines of code:\n\n\n```Rust\nlet box_slider = Sagebox::dev_slider(\"box size\");\nlet my_button = Sagebox::dev_button(\"Press me\");\n```\n\n![output-dev-slider-box-0](https://user-images.githubusercontent.com/70604831/174466571-6d968e7b-3e87-4cfa-8060-602137041084.png)\n\nThe above code uses the Dev Window controls (one of a few ways to create controls in Sagebox), which creates a slider labeled ***\"box size\"***, with a default range of 0-100 and default value of 0, followed up by a separate button.\n\nSagebox puts these in a window for you, and will delete them later when the program ends or the window is dismissed.\nWhen you want to use the controls, you can just call \u003ci\u003e**`box_slider.get_pos()`**\u003c/i\u003e and \u003ci\u003e**`my_button.pressed()`**\u003c/i\u003e.  You can also use \u003ci\u003e**`my_slider.moved()`**\u003c/i\u003e to determine if the slider has been moved since the last time checked.\n\n\nFor example,\n\n```rust\nlet box_size = box_slider.get_pos();\nif my_button.pressed() { println!(\"Button was pressed!\"); }\n```\n\nYou can set a custom range and default value of the slider by using keywords and chaining them together when you create the slider:\n\n\n```rust\n// Create a slider with some keywords.  The _s form denotes scaleability, to keep the simple form simple.\n\nlet box_slider = Sagebox::dev_slider_s(\"Box Size\",kw::range((10,500)) + kw::default(150));\n```\n\n![output-dev-slider-box-150](https://user-images.githubusercontent.com/70604831/174466616-fed9d593-d165-458f-9c55-84ba93524adf.png)\n\n\nNow the slider has a range of 10-500, and a default of 150, as shown in the image above.  You can also use floating-point sliders.\n\nWith other slider functions, the slider can be told to fill a memory value (e.g. \u003ci\u003e`\u0026mut i32`\u003c/i\u003e or \u003ci\u003e`\u0026mut f32`\u003c/i\u003e) as it is moved, so there’s no need to call \u003ci\u003e**box_slider.get_pos()**\u003c/i\u003e. This can abstract the GUI from routines that use the slider's real-time position without knowing about the slider or GUI.\n\nSliders, radio buttons, checkboxes, input boxes, list-boxes, and other controls are all this easy to use, and can be scaled to more complexity.\n\n\nWith various widgets, you can call up color selectors, date pickers, formatted message boxes, image view \u0026 image before/after windows, and so-forth.\n\nThis basically represents Sagebox in a nutshell -- all examples for Sagebox (even the larger, more comprehensive ones), use the above approach, just with more Sagebox tools and functions.\n\n\n## Simple and Powerful\n![output-cpp-basics-light](https://user-images.githubusercontent.com/70604831/174572814-6cc3092e-d171-420d-b3e7-a9f73d40992c.png)\n\nBy adding just a few more lines of code, more tools can be created. \n\nThe above examples show using Sagebox functions as easy library calls, from basic controls (left), to graphics with and without controls (right) \u0026ndash;\nall with just simple function calls without event-driven or GUI programming, representing a small amount of the overall code that stays out of the way and doesn't require any programming or GUI environment. \n\nThe middle image, for example, is a one-line function call:\n\n```rust\nSagebox::image_view_before_after(\u0026image1,\u0026image2);\n```\n\nThis can be called as a single function call, with no prior Sagebox initalization. Keyword elements can be added to extend its functionality, and the returned object can be kept by the program to manage the new window, or simply discarded to let Sagebox manage it on your program's behalf while the code continues on. \n\u003cbr /\u003e\u003cbr /\u003e\n\n# Getting Started\n\n### Install with Cargo\n\n```sh\n    cargo add sagebox\n```\n\n### With `Cargo.toml`\n\n```sh\n    [dependencies]\n    sagebox = \"0.1.0\"\n```\n### Simple Program Example\n\n```rust\nuse sagebox::*\n\nfn main{\n    let window = Sagebox::new_window();\n    window.write(\"Hello World!\");\n    window.wait_close();               // Wait for user to close the window\n}\n```\n\n#### For a more fun version with a 100pt font centered in the window, just use \u003ci\u003e`write_s()`\u003c/i\u003e and add a couple keywords:\n\n```rust\n    window.write_s(\"Hello World\", kw::font(100) + kw::center());\n```\n\n#### Or set the font size within the text:\n```rust\n    window.write_s(\"{100}Hello World\",kw::center());\n```\n\n---\n## Support Active Development\n\n**Sagebox is actively developed and welcomes early support from developers and contributors.**\n\n\u003e Sagebox was developed as a powerful and comprehensive GUI that is also very easy to use.\u003cbr\u003e\n\u003e It is free to use in personal and commercial Rust projects.\u003cbr\u003e\n\u003e Contributions keep it free and also keep it growing.  (See [Sagebox Roadmap](#sagebox-roadmap))\n\u003cbr\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/sponsors/Sagebox\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Sponsor_on_GitHub-💖-e05d44?style=for-the-badge\u0026logo=github\" alt=\"GitHub Sponsors\"/\u003e\n  \u003c/a\u003e\n  \u0026nbsp;\n  \u003ca href=\"https://github.com/sponsors/Sagebox\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Sagebox_Project-🌿-20c997?style=for-the-badge\u0026logo=rust\" alt=\"Sponsor Sagebox on GitHub\"/\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003eConsider sponsoring (or adding a star to the project) to help fund continued development.\u003c/em\u003e\n\u003c/p\u003e\n\n---\n\n## Table of Contents\n- [Why Sagebox? — Fun with Coding and Creative Programming](#why-sagebox--fun-with-coding-and-creative-programming)\n  - [Designed to stay out of the way of your code](#designed-to-stay-out-of-the-way-of-your-code)\n- [Using Sagebox in Console Mode](#using-sagebox-in-console-mode)   \n- [Fun with Graphics](#fun-with-graphics)\n- [Standalone and 3rd-Party Widgets](#standalone-and-3rd-party-widgets)\n  - [Embedding Widgets into Graphical Windows](#embedding-widgets-into-graphical-windows)\n- [Fast Real-Time 3-D GPU Graphics (short-term roadmap item)](#fast-real-time-3-d-gpu-graphics-short-term-roadmap-item)\n- [High Performance Computing: Super-Fast AVX, Multi-Threading Functions (short-term roadmap item)](#high-performance-computing-super-fast-avx-multi-threading-functions-short-term-roadmap-item)\n- [Event-Driven Architecture for Large-Scale Applications (in final integration)](#event-driven-architecture-for-large-scale-applications-in-final-integration)\n- [About This Release — Preview Version and Rust Migration](#about-this-release--preview-version-and-rust-migration)\n- [Sagebox Roadmap](#sagebox-roadmap)\n- [Support Sagebox](#support-sagebox)\n\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## Why Sagebox? — Fun with Coding and Creative Programming\n\nLike many programmers, I wanted to code creatively while I design. Sagebox was built as a powerful toolset to quickly add (and just as easily remove) graphic controls, widgets, and other elements without the overhead of event-driven or complex GUI boilerplate. \n\nSagebox originated as a powerful GUI toolbox from real-world industry work to produce prototypes and finished products rapidly without sacrificing code quality. \n\nSagebox scales with your needs to expand into your overall program, or use it as a development tool that can compile out at runtime.\n\nThis approach can make programming more enjoyable by enabling more freeform, exploratory or ad-hoc-style coding, allowing you to concentrate more on the code you want to write rather than the interface code just to have a button, slider, color selector, or whatever else is needed.\n\n \n## Designed to stay out of the way of your code\n\nSagebox can be added to existing Rust code without changing its structure or setup, and you don’t need to write or orient your code a “Sagebox program” to start using it. It works with native Rust types (like `i32`, `f32`, `(i32,i32)`) and integrates cleanly alongside other libraries, including other GUIs.\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## Using Sagebox in Console Mode\n\n![output-console-mode](https://user-images.githubusercontent.com/70604831/174466676-d8cec449-a241-4402-9b7e-0e354a4d0777.png)\n\nSagebox can be used for traditional graphics programs with pure graphics and GUI-based controls — or pure Console-Mode applications. \n\nIn Console Mode, you can use Sagebox functions to help with the program user-interface, such as simple sliders, buttons, or other controls. You can also bring up entry boxes, quick dialogs, before \u0026 after graphics windows, color selectors, or other widgets.\n\nBecause these are just simple function calls, you can put them into your existing code without changing your structure or interfering with the rest of your code.\n\nSagebox requires no program initialization, so you can just drop in any GUI control or other Sagebox function anyhwere and it will work.\n\nEven if your end-product code doesn’t use any GUI-based graphic controls, Sagebox can still be useful during development, helping with user input and visualizing program flow while you’re developing and debugging.\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n# Fun with Graphics\n\n![output-collage-graphics](https://user-images.githubusercontent.com/70604831/174466730-86c6f38a-e743-4f97-be99-8d84be64d39f.png)\n\nSagebox can also be used as a full graphical GUI when you want it — with graphics, controls, and built-in support for creating GUI-based applications.\n\nYou can place specific controls, create graphic buttons, and use a wide range of drawing and other graphics functions together.\n\nSagebox is designed to provide a full range of graphics and GUI controls when you want them, and stay out of the way when you don’t.\n\nThe image above shows various programs created with Sagebox, from simple visuals to full applications. For most of the above images, graphics were generated with just a few lines of code, with some coming from more complex, larger-scale applications.\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n# Standalone and 3rd-Party Widgets\n\n![output-collage-widgets](https://user-images.githubusercontent.com/70604831/174466845-3b17fbe1-85bc-43f8-9f38-6dd1e248f8af.png)\n\nSagebox is designed to provide tools for developing and integrating 3rd-party plug-in controls and widgets — from dials and meters to real-world instruments like LCD panels and oscilloscopes, or any specialized GUI control you want to add to your program.\n\n- Widgets can be launched from programs using Sagebox and can integrate into existing graphical windows.\n- Widgets can also be completely standalone and used on their own inside of a console-mode program with just a one function call with no prior use of Sagebox functions.\n- Sagebox will automatically create an environment to support the widget, if necessary.\n\nThe entire Sagebox library is available to help create and develop the Widget, without forcing the program using it itself. \n\nWidgets can be used in both procedural and event-driven applications, and do not need to follow the same programming model as the application that uses them.\n\nShown above: the Color Selector, Dial Widget, LCD Display Widget, and RGB Spline Widget.  \n\n\u003e See the [`plug_in_widgets`](https://github.com/Sagebox/Sagebox-rs/tree/main/examples) examples in the Github project.\n\n### Embedding Widgets into Graphical Windows\n\n![output-emulation](https://user-images.githubusercontent.com/70604831/174466885-1ac37379-5cb0-4538-83c5-1cefeab58dea.png)\n\nWidgets can be embedded seamlessly into graphical windows to create larger GUI-based interfaces with minimal code.\n\nThe example above shows two widgets working together to emulate and control an Arduino or other hardware interface.\n\nThe LCD is drawn over a circuit board image, while the Dial Widget sits on a stucco background to simulate placement on an indoor wall.\n\nWhen the dial is moved, the LCD reflects its value in real time, and the same value is printed to the lower debug window using color-coded text to highlight values.\n\nThe main interface window also uses a custom design with a rounded title bar and integrated graphic, for a more polished appearance than the usual standard OS-provided window and title bar.\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n# Fast Real-Time 3-D GPU Graphics \u003ci\u003e(short-term roadmap item)\u003c/i\u003e\n\n![output-collage-gpu](https://user-images.githubusercontent.com/70604831/174467047-dda08078-cf76-4d76-af24-7689271d5a56.png)\n\nSagebox's design includes a high-performance GPU graphics module for real-time 3-D visualization. The examples above demonstrate 60+ FPS GPU-based rendering of complex, high-resolution surfaces (often exceeding three million polygons per frame) with minimal CPU usage.\n\nPlanned for release in the the short-term roadmap, with additional tools for building GPU-accelerated applications released in the following months.\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n# High Performance Computing: Super-Fast AVX, Multi-Threading Functions \u003ci\u003e(short-term roadmap item)\u003c/i\u003e\n\n![output-collage-avx-both](https://user-images.githubusercontent.com/70604831/174681183-a4fd9c49-b98c-4247-8817-537682f5a5fa.png)\n\nSagebox includes a number of high-performance, multi-threaded AVX/SIMD functions used for real-time image processing, FFT functions, mathematical or data visualization, etc.\n\nThese components are built for maximum throughput and speed when using the traditonal CPU-based image processing functions.\n\n\nThe examples above include:\n\n- A real-time Julia set rendered with AVX at 60fps in 4k,\n- AVX-based Gaussian and Sinc blur filters\n- CPU-rendered texture with over 1 million polygons\n  - The entire image was construction in the CPU before being sent to the GPU\n  - This was faster than sending the polyons to the GPU for rendering because of memory-transfer speed\n  - The CPU-generated image is indisinguishable from the GPU-generated image, and has better phong-lighting model representation than the default OpenGL phong model.\n\nSagebox's internal image-processing core includes a set of high-performance, HPC-level, multi-threading functions.\n\nThese routines are not yet part of the public API, but many are already complete and designed for future release as general-purpose tools as completely independent functions with no GUI requirements.\nThe long-term roadmap is that once Sagebox’s initial release stabilizes, the timing will be based on developer feeback on which functions to release sooner than later.\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n\n# Event-Driven Architecture for Large-Scale Applications (in final integration)\n\nWhile not inherently needed for most applications, Sagebox is built on a high-performance, event-driven architecture that includes a full procedural layer that gives direct access to its full capabilities.\n\nThis event-driven design means Sagebox supports fully event-driven programming by its own nature. The included procedural model is a feature that just about any application can use as a powerful feature stemming from Sagebox's core event-driven design, reducing need for an event-driven-GUI interface.\n\nFull access to the event-driven framework is currently being integrated into the Rust interface, with emphasis on memory safety, Rust idiomatic usage, and Borrow Checker requirements.\n\n---\n\n# About This Release — Preview Version and Rust Migration\n\nThis marks the first phase of the Sagebox release: a Windows-based beta published ahead of schedule while Linux support and Rust migration continue progressing.\n\n## Rust Migration: Rust as a Native Platform\n\nThe Sagebox kernel was initially written in C++ as part of a multi-platform, language-agnostic architecture.  But when it came time to build the interface for Rust, something unexpected happened: the integration of Rust didn’t just work well, it solved long-standing architectural challenges that weren’t otherwise easily addressed.\n\n\n## Rust Migration Already in Progress \n\nSagebox predates Rust’s rise to widespread adoption, but its core abstracted architecture fits right into the Rust paradigm. \n\nSagebox is a highly multi-threaded GUI system with real-time performance demands that directly benefit from strong memory safety. In other languages, this can require runtime overhead not required with Rust's memory-safety model, resulting in safer code and higher performance.\n\n As Rust integration progressed, many of Rust's core strengths became apparent very quickly. For example, in Sagebox, Rust now governs the lifecycle of core GUI control elements. While components of the original kernel remain in C++ during the migration to Rust, Rust now owns their memory.\n\nAs Rust migration continues, additional kernel components will be reimplemented in Rust.\n\n\n## Why Windows First\n\nThe original plan was to release Sagebox more broadly once Linux support was available. However, the decision was made to release this Windows-based preview early to introduce its architecture and gather community feedback during Rust migration, especially since the Windows version has been stable for some time.\n\n## Your Feedback Matters\n\nThis early beta offers a chance to test features, GUI controls responsiveness, and general interface behavior in real-world use. And of course any bugs or other issues that may occur.\n\n## What’s Next\n\nPhase 2 will arrive in 3-4 weeks after this release (phase 1).  This release will bring more functionality and a full Windows version with many more real-world examples. \n\nThe first native Linux beta will follow soon after (approximately 4–6 weeks), with much of the Linux-specific and architectural groundwork already complete or in active development.\n\n# Sagebox Roadmap\n\nSagebox is being released in stages as part of a broader architecture, with many of its planned features already designed, or in active development. \n\nAs described in - [About This Release — Preview Version and Rust Migration](#about-this-release--preview-version-and-rust-migration), Linux support is currently in progress, with a native release scheduled shortly after the Windows beta. The Windows-first release was intended to introduce Sagebox and demonstrate its capabilities as both a procedural and event-driven GUI system (with the Procedural elements emphasized in this document)\n\nFeedback from the Rust community will help guide which features are prioritized, as well as ideas for features not listed here.\n\n- **Linux Implementation**\n  - Native Linux support is in progress, with a working prototype targeted for release 6–8 weeks after the Windows beta.\n  - A functional Linux proof-of-concept is already complete, validating Sagebox’s core architecture and platform abstraction.\n  - The Sagebox kernel was built from the start as a platform-agnostic, self-contained system, and has been validated through extensive real-world use.\n  - Windows served as the initial integration environment for event handling and OS-level GUI behavior.\n    - All functions were abstracted from the beginning to support clean multi-platform deployment, including Linux, macOS, and Android.\n- **Powerful GPU Functions**\n  - As shown above, GPU functions are already well underway, and will work with the same Sagebox philosophy of ease-of-use and scalability.\n- **Designer Controls and Skins**\n  - Sagebox includes a range of built-in controls (e.g., sliders, buttons, input boxes), and developers can create plug-in widgets.\n  - Expanded custom-skin support and the ability to define fully custom controls are currently in progress.\n- **GPU Graphic Controls**\n  - Currently, controls are draw via the CPU and placed in a traditional window.\n  - A GPU version will place the controls on the GPU window that can be used in the same window as your graphics.\n    - The GPU control set will have the same flexibility and scalability as current controls.\n    - This is essentially an \"immediate mode\" GUI for the GPU window. \n  - This has already been designed and implemention will hopefully start in the next year.\n- **Other Platforms**\n   - Sagebox is written as platform-agnostic kernel.  Adding Android, macOS, and other platforms is a directional goal. \n- **Fast, AVX image-processing functions**\n  - Sagebox originated from the Sagelight Editor, which was heavily optimized with AVX-level code. The plan is to bring many of those fast image-processing routines into Sagebox as general-purpose functions, or possibly as a separate interfacing library that may be released as open source.\n  - Several of these functions are already used internally in Sagebox, and others produce compelling graphical examples, making it practical and worthwhile to expose them as standalone tools developers can use in their own projects.\n- **Educational**\n  - While Sagebox already works well in educational contexts, the plan is to expand on this with ready-to-use \"lab spaces\" and other specific widgets and procedural frameworks to make implementation of GUI-based graphics and controls in a way where they don't become a significant part of the code just for a small project.\n\n# Support Sagebox\n\nSagebox is actively developed and welcomes early support from developers and contributors.\n\n\u003e Sagebox was developed as a free, powerful and comprehensive GUI that is also very easy to use.\u003cbr\u003e\n\u003e It is free to use in personal and commercial Rust projects.\u003cbr\u003e\n\nAs Sagebox continues to grow, the developer community is invited to help shape its direction and contribute to making it even better.\n\n\n\nIf Sagebox feels like something worth supporting, consider contributing to its continued development:\n\n- **[GitHub Sponsors](https://github.com/sponsors/Sagebox)** — One-time or recurring donations.\n- **[OpenCollective (Coming Soon)]** — For larger or institutional support with public transparency.\n\nYour support helps add new features, documentation, and to continue to provide Sagebox free to the Rust community.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagebox%2Fsagebox-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsagebox%2Fsagebox-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsagebox%2Fsagebox-rs/lists"}