libui.cr alternatives and similar shards
Based on the "Low level bindings" category.
Alternatively, view libui.cr alternatives based on common mentions on social networks and blogs.
Do you think we are missing an alternative of libui.cr or a related project?
Crystal-lang bindings for libui, a GUI library for Linux, OS X and Windows.
(well, forget about Windows for now, this is Crystal)
- Sync'd to upstream #5fa7ba4
- Updated for Crystal 0.21.1
- Sync'd to upstream #6e45859
- Control Gallery not updated, but yml examples were
- Proper component stretching and margins
- Waiting for tables definition to materialize
- Now with YAML builder
- Sync'd to upstream #9656a81
- Control Gallery example not updated but library is.
Add these package to your dependencies in shard.yml:
dependencies: libui: github: fusion/libui.cr
Standard (C-like) usage
Have a look at examples/controlgallery, which is a direct port of a C example.
Crystal-only YAML builder
This is a feature I am introducing in addition to the library bindings. It allows devs to specify a UI without hard coding it and maintain it using fragments described in simple .yml files.
- No need to recompile your code to test a UI change
- Team collaboration now easier
- Descriptive UI
- Separation of concerns
- No compile-time checks
Note that inflating fragments and pure coding can be mixed.
CUI.menubar "path_to_yml_file" CUI.inflate "path_to_yml_file" CUI.get/CUI.get! CUI.get_as_menuitem/CUI.get_as_menuitem! CUI.get_mainwindow/CUI.get_mainwindow!
The '!' forms will throw an exception if component is not found.
Recent versions of Crystal now require you to include the current path explicitly to find libraries:
crystal build --link-flags "-L$(pwd)" examples/controlgallery/main.cr crystal build --link-flags "-L$(pwd)" examples/crgallery/crgallery.cr
If you omit this flag, libui.A.dylib or libui.so (system-specific) will not be found.
Note: in this example, I used the current directory but it could be
-L/usr/local/includes or any
other location depending on your setup.
To run the generated binaries:
LD_LIBRARY_PATH=. ./main LD_LIBRARY_PATH=. ./crgallery
- Fork it ( https://github.com/fusion/libui.cr/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
- [fusion] Chris F Ravenscroft - creator, maintainer