plainmouth is a modular, plugin-based, text-based UI dialog server and
client implemented in C. It allows other applications to display interactive
dialog windows—such as message boxes, forms, and password prompts—inside a
terminal using the ncurses library.
- Plugin System: Easily extendable via plugins (e.g., message box, password input, forms).
- Scripting-Friendly: Includes shell scripts and command-line tools for automated testing and embedding into other workflows.
- Extensible Widgets: Widgets such as buttons, labels, input fields, text views, meters, and more.
- Keyboard Support: Handles navigation, focus, key codes, and resizing within terminal UIs.
Start the server:
plainmouthd -S /tmp/plainmouth.sock --debug-file=/tmp/server.logCreate a message box:
plainmouth plugin=msgbox action=create id=example \
text="Important message." \
button="OK" \
button="Cancel"
plainmouth action=wait-result id=example
plainmouth action=delete id=example
plainmouth --quitCreate a password prompt:
plainmouth plugin=password action=create id=pass1 x=1 y=1 text="Enter password:"
plainmouth action=wait-result id=pass1
plainmouth --quitThis project uses autotools (autoconf) for configuration and building:
./autogen.sh
./configure
make
sudo make installDependencies include:
gccmakepkg-configncursesandpaneldevelopment librariespthread
This software is licensed under the GNU General Public License v2.0.
Alexey Gladkov.
Contributions are welcome! Feel free to open issues and pull requests.