This is a RAD (Rapid Application Development) textual user interface library for Zsh. It in many aspects resembles typical CGI+(D)HTML setup. There are:
- generators ran on "server" side (basic Zshell-code that is just generating text!),
- event loop that turns the generated text into document with active elements (buttons, anchors, toggle buttons, text fields, list boxes),
- mechanism to regenerate document parts from the original generators.
So, a Zshell code generates text. It is then turned into document with hyperlinks. DHTML-like calls are possible that will regenerate document parts on the fly. Page can be also reloaded with input data, just like an HTML page.
A voiced video tutorial shows how to create an application – Nmap network scanner frontend.
See also ZSTYLES
# Started from Zle or from command line
-zui_std_cleanup deserialize:"zui-demo-hello-world"
-zui_std_init app:"zui-demo-hello-world" app_name:"ZUI Hello World"
emulate -LR zsh -o extendedglob -o typesetsilent -o warncreateglobal
-zui_std_init2 # after emulate -LR
-zui_std_store_default_app_config b:border 1
demo_generator_A() {
local mod="$1" ice="$2"
# Content, no hyper-links
reply=( "Hello World from ${ZUI[YELLOW]}ZUI${ZUI[FMT_END]}! Module $mod, instance $ice." )
# Non-selectable lines Hops to jump with [ and ] Local anchors
reply2=( ) reply3=( 1 ) reply4=( )
}
## Start application ##
zui-event-loop 1:demo_generator_A
-zui_std_cleanup serialize
Other example which uses list-box: zui-demo-list-box
The API is described at the wiki.
The plugin is "standalone", which means that only sourcing it is needed. To install, unpack zui
somewhere and add to zshrc
:
source {where-zui-is}/zui.plugin.zsh
If using a plugin manager, then ZI
is recommended, but you can use any other too, and also install with Oh My Zsh
(by copying directory to ~/.oh-my-zsh/custom/plugins
).
Add zi load z-shell/zui
to your .zshrc
file. ZI will handle the rest automatically the next time you start zsh. To update (i.e. to pull from origin) issue zi update z-shell/zui
.
Add antigen bundle z-shell/zui
to your .zshrc
file. Antigen will handle cloning the plugin for you automatically the next time you start zsh.
cd ~/.oh-my-zsh/custom/plugins
git clone git@github.com:z-shell/zui.git
- Add
zui
to your plugin list
Add zgen load z-shell/zui
to your .zshrc file in the same place you're doing your other zgen load
calls in.