EuroBSDCon 2026

Introduction to TUI Programming with bsddialog
2026-09-11 , D.3.05

Shell scripts have a bad reputation when it comes to usability and eye candy. Modern users find a blinking cursor on a a black screen leaves a lot to be desired when having to interact with a shell script. In this tutorial, we will create shell scripts that look like a GUI application: with buttons to press, input fields, select boxes and animated progress bars. These so called TUI (text user interfaces) programs still use shell script functionality as the backend, but are lightweight enough to not introduce too much overhead. Users will appreciate the ease of use of your shell scripts and you can rely on them to give you the data and visualizations you to need. At the same time, the TUI application is not difficult to learn and implement into existing scripts.

There have been a number of such libraries in the past. The most prominent one is ncurses, which is a newer implementation of System V Release 4.0 (SVr4) curses, which itself is an enhancement over the discontinued 4.4 BSD curses. The modern BSD version is bsddialog, created by Alfonso Sabato Siciliano. This is what we are going to use in this tutorial.

Benedict Reuschling is a documentation committer in the FreeBSD project. In the past, he served on the FreeBSD core team for two terms. For more than 8 years, he administered a big data cluster at the University of Applied Sciences, Darmstadt, Germany. He’s also taught a course “Unix for Developers” for undergraduates for more than 10 years. Benedict was one of the hosts of the weekly bsdnow.tv podcast.

This speaker also appears in: