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.
# 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. Checkout screenshots and Asciinema recordings.
The plugin is "standalone", which means that only sourcing it is needed. So to
install, unpack zui
somewhere and add
source {where-zui-is}/zui.plugin.zsh
to zshrc
.
If using a plugin manager, then Zplugin
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 zplugin load zdharma/zui
to your .zshrc
file. Zplugin will handle
cloning the plugin for you automatically the next time you start zsh. To update
(i.e. to pull from origin) issue zplugin update zdharma/zui
.
Add antigen bundle zdharma/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:zdharma/zui.git
- Add
zui
to your plugin list
Add zgen load zdharma/zui
to your .zshrc file in the same place you're doing
your other zgen load
calls in.