A new utility for Terminal has recently made a bit of noise for Mac users. It's called Termipal and it's a customizable user interface that makes it easier for developers to create shell scripts using native dropdown menus and buttons.

Termipal uses native Cocoa widgets, is built using a JavaScript framework, and automatically attaches to the bottom of your Mac's Terminal window so its right where you want it when you need it.

The program's developer explains:

JavaScript itself is fast and lightweight. It's the browser that makes Electron apps so big. Termipal's entire install is a single binary which is only 150 kB in size.

There's no browser engine in Termipal. It doesn't use HTML or CSS — user interfaces are defined simply as JSON objects. It doesn't even embed a JavaScript runtime; instead it uses the one that comes with macOS and is probably already loaded in your Mac's memory because it's a system component.

The APIs in Termipal are similar to Electron where possible. For example, you can listen to the ready event on the app object, and you can open a file picker dialog by calling dialog.showOpenDialog(). (Don't get the wrong impression: Electron is a large and advanced project whereas Termipal is a dinky little version 0.0.x product that has less than 0.1% of the capabilities of Electron. Think of Electron compatibility as a principle that guides Termipal's API design, rather than any guarantee of present compatibility.)

For creating UIs, a new module called microUI is provided. To update the Termipal interface, call microUI.loadUIDefinition() with a JSON object that describes the UI elements. To associate JavaScript functions with interactions, simply pass an action property value that contains the function's name. That's pretty much all there is to know about the UI framework. You can find a few example scripts in the project's Github repo.

Termipal is a free program and available directly from the developer's website.