Elm architecture
Now the `App` contains a state which is a user-defined `struct` which is passed to the `handle` and `contents` callbacks for `Container`'s and `Element`'s. Built-in `Element`'s shall not access the `App.Model` and should therefore never cause any side-effects. User-defined events shall be used to act as *messages* to cause potential side-effects for the model. This is the reason why only the `handle` callback has a non-const pointer to the `App.Model`. The `contents` callback can only access the `App.Model` read-only to use for generating the *view* (in context of the elm architecture).
zterm TUI Library
zterm is a terminal user interface library (tui) to implement terminal (fullscreen or inline) applications.
Caution
Only builds using the zig master version are tested to work.
Demo
Clone this repository and run zig build --help to see the available examples. Run a given example as follows:
zig build --release=safe -Dexample=demo run
Tip
Every example application can be quit using
ctrl+c.
See the wiki for a showcase of the examples and the further details.
Usage
To add or update zterm as a dependency in your project run the following command:
zig fetch --save git+https://gitea.yves-biener.de/yves-biener/zterm
Add the dependency to your module as follows in your build.zig:
const zterm: *Dependency = b.dependency("zterm", .{
.target = target,
.optimize = optimize,
});
// ...
exe.root_module.addImport("zterm", zterm.module("zterm"));
Documentation
A wiki should be created containing a bright overview of the structure and usage of the library. For details it should refer to the examples. The documentation should be minimal in terms of updateability in case the library changes. Maybe some documentation could be derived from the code documentation (there is a tool for this if I recall correctly).