Zui
⬢ Zsh User Interface library – CGI+DHTML-like rapid application development with Zsh
Install / Use
/learn @zdharma-continuum/ZuiREADME

⬢ ZUI – CGI+DHTML-like User Interface Library for Zsh / ZCurses

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.
Hello World
# 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.
Installation
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 Zinit 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).
Zinit
Add zinit load zdharma-continuum/zui to your .zshrc file. Zinit will handle cloning the plugin for you automatically
the next time you start zsh. To update (i.e. to pull from origin) issue zinit update zdharma-continuum/zui.
Antigen
Add antigen bundle zdharma-continuum/zui to your .zshrc file. Antigen will handle cloning the plugin for you
automatically the next time you start zsh.
Oh-My-Zsh
cd ~/.oh-my-zsh/custom/pluginsgit clone git@github.com:zdharma-continuum/zui.git- Add
zuito your plugin list
Zgen
Add zgen load zdharma-continuum/zui to your .zshrc file in the same place you're doing your other zgen load calls
in.
Related Skills
node-connect
345.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
104.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。

