fuelen
Owl - A toolkit for writing command-line user interfaces
Hey folks!
Want to present a toolkit for writing command-line user interfaces.
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
- editing text in
ELIXIR_EDITOR - wrapping multiline colorized data into ASCII boxes
- printing palette colors
- progress bars, multiple bars 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 and doesn’t conflict with live blocks.
Most Liked
fuelen
Owl v0.6.0 has been released ![]()
The biggest change in this release is an ability to render tables.
Tables are highly customizable, they work with Owl.Data.t() which allows colorizing even different chars inside a cell, not just a whole cell like in other libraries. Input expects a list of maps, and this structure allows autodetection of columns. There is sorting and filtering of columns, ability to specify max width for entire table (I wanted this for iex helpers
) and for individual columns. And other minor but nice things ![]()
fuelen
Owl v0.13.0 released ![]()
Owl now supports clickable hyperlinks in terminal output via OSC 8 sequences. You can wrap text with the {:hyperlink, "https://url"} tag using Owl.Data.tag/2:
"Docs" |> Owl.Data.tag(hyperlink: "https://hexdocs.pm/owl") |> Owl.IO.puts()
josevalim
Owl looks awesome! I loved the demos with asciinema, the logo, and especially the examples directory!
fuelen
Owl v0.3.0 has been released ![]()
fuelen
There were a couple of small releases for which I didn’t post updates here.
Owl v0.11.0 has been released today! ![]()
The major update here is that Owl.Data.from_ansidata/1 has been deprecated in favour of a more convenient Owl.Data.from_chardata/1. The latter can handle output from the CLI utilities as is without additional transformations:
filename = "README.md"
{output, 0} = Owl.System.cmd("bat", [filename, "--color=always", "--style=plain"])
output
|> Owl.Data.from_chardata()
|> Owl.Box.new(title: Owl.Data.tag(filename, :yellow), border_tag: :light_blue)
|> Owl.IO.puts()
Also, a new Owl.TrueColor module has been added in order to handle more colors produced by external CLI utilities.








