Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/bsddialog/README.md
39475 views

BSDDialog 1.0.4

This project provides bsddialog and libbsddialog, an utility and a library to build scripts and tools with TUI dialogs and widgets.

Demo

Screenshots.

Getting Started

FreeBSD and Linux:

% git clone https://gitlab.com/alfix/bsddialog.git % cd bsddialog % make % ./bsddialog --msgbox "Hello World!" 8 20

Output:

screenshot

Utility

Dialogs:

--calendar, --checklist, --datebox, --form, --gauge, --infobox, --inputbox, --menu, --mixedform, --mixedgauge, --msgbox, --passwordbox, --passwordform, --pause, --radiolist, --rangebox, --textbox, --timebox, --treeview, --yesno.

Manual

Examples:

% ./bsddialog --backtitle "TITLE" --title msgbox --msgbox "Hello World!" 5 30 % ./bsddialog --theme blackwhite --title msgbox --msgbox "Hello World!" 5 30 % ./bsddialog --begin-y 2 --default-no --title yesno --yesno "Hello World!" 5 30 % ./bsddialog --ascii-lines --pause "Hello World!" 8 50 10 % ./bsddialog --checklist "Space to select" 0 0 0 Name1 Desc1 off Name2 Desc2 on % ./bsddialog --title yesno --hline "bsddialog" --yesno "Hello World!" 5 25 % ./bsddialog --extra-button --help-button --yesno "Hello World!" 0 0

and Examples in the Public Domain to build new projects:

% sh ./examples_utility/calendar.sh % sh ./examples_utility/checklist.sh % sh ./examples_utility/datebox.sh % sh ./examples_utility/form.sh % sh ./examples_utility/gauge.sh % sh ./examples_utility/infobox.sh % sh ./examples_utility/inputbox.sh % sh ./examples_utility/menu.sh % sh ./examples_utility/mixedform.sh % sh ./examples_utility/mixedgauge.sh % sh ./examples_utility/msgbox.sh % sh ./examples_utility/passwordbox.sh % sh ./examples_utility/passwordform.sh % sh ./examples_utility/pause.sh % sh ./examples_utility/radiolist.sh % sh ./examples_utility/rangebox.sh % sh ./examples_utility/timebox.sh % sh ./examples_utility/yesno.sh

Library

API

Manual

Examples:

Examples in the Public Domain to build new projects:

% cd examples_library % sh compile % ./calendar % ./checklist % ./datebox % ./form % ./gauge % ./infobox % ./menu % ./mixedgauge % ./mixedlist % ./msgbox % ./pause % ./radiolist % ./rangebox % ./theme % ./timebox % ./yesno

TODO and Ideas

  • menubar feature.

  • key callback.

  • Right-To-Left text.

  • some terminal does not hide the cursor, move it bottom-right before to getch.

  • refactor backtitle: add WINDOW *dialog.backtitle for multiline and fix expanding screen.

  • refactor bottomdesc: add WINDOW *dialog.bottomdesc to fix expandig screen.

  • accessibility https://wiki.freebsd.org/Accessibility/Wishlist/Base.

  • add bool conf.menu.depthlines.

  • implement custom getopt_long().

  • refactor/redesign gauge().

  • improve grey lines expanding terminal (maybe redrawwin() in hide_dialog()).

  • more restrictive strtol() and strtoul().

  • implement global buttons handler.

  • doc: external tutorial, theming guide.

  • implement menutype.min_on.

  • improve refresh at startup, avoid dialog refresh before drawing text.

  • add debug API: bsddialog_debug(y,x,refresh,"fmt",...).

  • add mouse support.

  • use alarm(2) for bsddialog_pause.

  • delete form fieldlen constraint, hide or truncate long field in little screens.

  • improve --inputbox autosizing, consider also input length.

  • fix --form "" 0 0 0 Label 1 0 Init 1 12 0 0 (with 0 editable field).

  • fix --mixedform "" 0 0 0 Label 1 0 Init 1 12 0 0 2 (with 0 editable field).

  • add text customization to --hmsg help-message

  • check --passwordform fieldlen like --form and --mixedform.