A DSL framework for building Ruby GUI applications and domain-specific languages with built-in data-binding.
Glimmer is a DSL framework for Ruby that enables building internal domain-specific languages, primarily for GUI development across multiple platforms. It provides a DSL engine for creating expressive syntax and a data-binding library for synchronizing GUI with model attributes. The framework supports various GUI toolkits like SWT, LibUI, and Tk, allowing developers to write desktop applications in Ruby with native controls.
Ruby developers building cross-platform desktop applications, especially those who prefer declarative syntax and need robust data-binding capabilities. It's also for developers creating custom DSLs for domains like XML, CSS, or other structured data.
Glimmer offers a unique combination of a flexible DSL engine and built-in data-binding, enabling highly readable and maintainable GUI code. Unlike other Ruby GUI libraries, it supports multiple GUI toolkits and provides advanced features like bidirectional data-binding with Shine syntax, custom widgets, and scaffolding for rapid development.
DSL Framework consisting of a DSL Engine and a Data-Binding Library used in Glimmer DSL for SWT (JRuby Desktop Development GUI Framework), Glimmer DSL for Opal (Pure Ruby Web GUI), Glimmer DSL for LibUI (Prerequisite-Free Ruby Desktop Development GUI Library), Glimmer DSL for Tk (Ruby Tk Desktop Development GUI Library), Glimmer DSL for GTK (Ruby-GNOME Desktop Development GUI Library), Glimmer DSL for XML (& HTML), and Glimmer DSL for CSS
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a configurable architecture for building internal DSLs in Ruby, allowing safe mixing of multiple DSLs (e.g., GUI, XML, CSS) within the same application via top-level keywords.
Offers bidirectional synchronization between GUI and models with Shine syntax (<=> for bidirectional, <= for unidirectional), supporting computed properties and nested observations without model boilerplate.
Includes official DSLs for various toolkits like SWT, LibUI, Tk, and GTK, enabling cross-platform desktop development with native controls and vector graphics.
Features scaffolding for custom widgets and apps, rapid development with concise syntax, and tools like custom widget generators, as shown in the README's examples and comparison table.
Some GUI DSLs rely on alpha-stage libraries like LibUI, which the README admits is 'an incomplete mid-alpha only,' limiting reliability for production use.
For example, Glimmer DSL for Tk requires installing ActiveTcl and has 'complicated setup,' while others like GTK need platform-specific prerequisites, increasing friction.
JRuby-based DSLs like SWT suffer from 'slow JRuby startup time' and 'heavy memory footprint,' which can hinder application performance and user experience.
Compared to mainstream GUI frameworks, Glimmer has a smaller community and fewer third-party extensions, potentially increasing development time for complex features beyond core offerings.