https://github.com/fuelen/owl
A toolkit for writing command-line user interfaces.
https://github.com/fuelen/owl
cli elixir progress-bar prompt spinner table terminal tty tui
Last synced: 12 days ago
JSON representation
A toolkit for writing command-line user interfaces.
- Host: GitHub
- URL: https://github.com/fuelen/owl
- Owner: fuelen
- License: apache-2.0
- Created: 2021-12-15T21:59:18.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-02-09T18:29:48.000Z (2 months ago)
- Last Synced: 2025-04-04T19:00:39.143Z (19 days ago)
- Topics: cli, elixir, progress-bar, prompt, spinner, table, terminal, tty, tui
- Language: Elixir
- Homepage:
- Size: 265 KB
- Stars: 459
- Watchers: 5
- Forks: 13
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-cli-frameworks - Owl - line user interfaces in Elixir. ([Elixir](https://elixir-lang.org/) / Useful awesome list for Dotnet cli)
- fucking-awesome-elixir - owl - Owl is a toolkit for writing command-line user interfaces in Elixir. (Command Line Applications)
- awesome-elixir - owl - Owl is a toolkit for writing command-line user interfaces in Elixir. (Command Line Applications)
README
# Owl
[](https://github.com/fuelen/owl/actions)
[](https://hex.pm/packages/owl)
[](https://hex.pm/packages/owl)
[](https://coveralls.io/github/fuelen/owl?branch=main)
```
,_,
{o,o}
/) )
---"-"--
```
Owl is a toolkit for writing command-line user interfaces in Elixir.It provides a convenient interface for
* colorizing text using tags
* input control with validations and casting to various data types
* select/multiselect controls, inspired by AUR package managers
* tables
* editing text in `ELIXIR_EDITOR`
* wrapping multiline colorized data into ASCII boxes
* printing palette colors
* progress bars and spinners, multiple bars/spinners at the same time are supported as well
* live-updating of multiline blocks
* working with virtual device which partially implements
[The Erlang I/O Protocol](https://www.erlang.org/doc/apps/stdlib/io_protocol.html) and doesn't conflict with live blocks.## Demo
[](https://asciinema.org/a/vOL2PtAEWB88S9G93Iojwprj2)The code can be found in [examples](https://github.com/fuelen/owl/tree/main/examples) directory.
## Installation
The package can be installed by adding `owl` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:owl, "~> 0.12"},
# ucwidth is an optional dependency, uncomment it for multibyte characters support (emoji, etc)
# {:ucwidth, "~> 0.2"}
]
end
```
Documentation can be found at [https://hexdocs.pm/owl](https://hexdocs.pm/owl).