⬢ Zsh User Interface library – CGI+DHTML-like rapid application development with Zsh
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
demos *-demo-various: Remove debug-print Nov 14, 2017
-zui-list-box-loop *box-loop,*input: Support for scrolling in the pop up –> any data size Nov 20, 2017
-zui-log zui-list,-zui-log,*-various: Parameter log_colors -> zui_log_colors Mar 15, 2017
LICENSE LICENSE Mar 16, 2017
README.md Updated README.md (new links to the new image storage) Jan 13, 2019
ZSTYLES.md ZSTYLES.md: Restore a lost line of comment Mar 19, 2017
stdlib.lzui stdlib,*-wrapper: Action-triggered restart doesn't cause screen reset Nov 12, 2017
syslib.lzui {std,sys}lib: Move messages-clearing code to *init2 Mar 23, 2017
utillib.lzui -zui_std_to_cmd_line -> -zui_util_to_cmd_line May 23, 2017
zui-event-loop zui-list,*-event-loop: Allow more segments in relative anchor spec Nov 12, 2017
zui-list zui-list,*-event-loop: Allow more segments in relative anchor spec Nov 12, 2017
zui-list-draw zui-list,*-draw: Allow to customize the palette of 8 colors (s:palette) Oct 7, 2017
zui-list-input *box-loop,*input: Support for scrolling in the pop up –> any data size Nov 20, 2017
zui-list-wrapper stdlib,*-wrapper: Action-triggered restart doesn't cause screen reset Nov 12, 2017
zui-process-buffer No need to prepare (clear) zui-process-buffer* output variables Feb 17, 2017
zui-process-buffer2 No need to prepare (clear) zui-process-buffer* output variables Feb 17, 2017
zui-usetty-wrapper Rename files to start with "zui-" Feb 17, 2017
zui.plugin.zsh plugin.zsh: fg_bold examination could lead to hash access error Sep 26, 2017

README.md

ZUI logo

paypal

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

License (GPL version 3) MIT License ZSH 4.3.17

Dharma logos

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

Hello World screenshot

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 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).

Zplugin

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.

Antigen

Add antigen bundle zdharma/zui to your .zshrc file. Antigen will handle cloning the plugin for you automatically the next time you start zsh.

Oh-My-Zsh

  1. cd ~/.oh-my-zsh/custom/plugins
  2. git clone git@github.com:zdharma/zui.git
  3. Add zui to your plugin list

Zgen

Add zgen load zdharma/zui to your .zshrc file in the same place you're doing your other zgen load calls in.